機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
24C02在PIC單片機(jī)系統(tǒng)中的應(yīng)用
24C02在PIC單片機(jī)系統(tǒng)中的應(yīng)用
 更新時間:2008-7-26 17:09:09  點(diǎn)擊數(shù):4
【字體: 字體顏色
    MICROCHIP公司的PIC16系列單片機(jī)以其精簡的指令和較強(qiáng)的端口驅(qū)動能力在各個領(lǐng)域得到廣泛的應(yīng)用。在需要儲存較大數(shù)量數(shù)據(jù)的控制領(lǐng)域,24C02可以解決PIC16C8×系列片內(nèi)EEPROM不足的問題,用以保存諸如用戶設(shè)置參數(shù)、采集到的數(shù)據(jù)等。
    由于部分PIC單片機(jī)不具備I2C總線接口,在應(yīng)用時必須用軟件法加以解決。
    在軟件編制時應(yīng)當(dāng)嚴(yán)格遵循I2C總線規(guī)則,并注意24C02的片內(nèi)讀寫周期時間,調(diào)整好程序流程,以避免寫不進(jìn)、讀不出的問題。
    下面將筆者在實(shí)際工作中遇到的問題和解決的方法進(jìn)行簡單的介紹,希望可以給同行一些幫助。
    首先約定,數(shù)據(jù)由微處理器發(fā)送到24C02稱“寫”、“發(fā)”,反之稱“讀”、“收”。24C02支持順序讀寫和隨機(jī)讀寫,文中以隨機(jī)讀寫方式為例進(jìn)行介紹。
    一、硬件電路(如圖1所示)。
    使用微處理的任意兩個通用I/O端口(圖中用RA2、RA3)作為與24C02的連接,其中一個作為時鐘SCL線,另外一個作為數(shù)據(jù)SAD線。兩個端口均接22kΩ上拉電阻。
    二、軟件設(shè)計
    首先簡要介紹一下用EEPROM的I2C總線的規(guī)則。
    初始狀態(tài)時,SCL、SDA兩線都為高。
    當(dāng)SCL為高電平時,如果SDA線跌落,認(rèn)為是“起始位”。
    當(dāng)SCL為高電平時,如果SDA線上升,認(rèn)為是“停止位”。
    除此之外,在發(fā)送數(shù)據(jù)的過程中當(dāng)SCL為高電平時,SDA應(yīng)保持穩(wěn)定。
    ACK應(yīng)答位指在此時鐘周期內(nèi)由從器件(EEPROM)把SDA拉低,表示回應(yīng)。這時主器件(PIC16微處理器)的SDA口的屬性應(yīng)該變?yōu)檩斎胍员銠z測。
    1. 在寫數(shù)據(jù)周期應(yīng)該依次執(zhí)行以下過程:
    1)發(fā)“起始位”。2)發(fā)“寫入代碼”(8bit),1010(A1A2A3)0,其中的A1、A2、A3三位是片地址,由24C02的硬件決定,文中采用000。3)收“ACK”應(yīng)答(1bit)。4)發(fā)EEPROM片內(nèi)地址(即要寫入EEPROM的什么位置)(8bit)。從00到FF中的任意一個,對應(yīng)EEPROM中的相應(yīng)位。5) 收“ACK”應(yīng)答(1bit)。6)發(fā)要發(fā)送的數(shù)據(jù)(8bit),即要存儲到EEPROM中的數(shù)據(jù)。7)發(fā)“停止位”。
    接下來,如圖2所示,進(jìn)入輪詢程序以便檢驗24C02片內(nèi)寫周期是否完成。如果已經(jīng)完成則進(jìn)入下一個字節(jié)的寫操作過程。如果沒有完成則繼續(xù)等待,直到完成。
    2. 在讀數(shù)據(jù)周期,依次執(zhí)行以下過程:
    1)發(fā)“起始位”。2)發(fā)“寫入代碼”(8bit),1010(A1A2A3)0,其中A1、A2、A3三位是片地址,由24C02的硬件決定,文中采用000。3)收“ACK”應(yīng)答(1bit)。4)發(fā)“EEPROM”片內(nèi)地址(即要讀出EEPROM的位置)(8bit)。從00到FF中的任意一個,對應(yīng)EEPROM中的相應(yīng)位。5)收“ACK”應(yīng)答(1bit)。6)發(fā)“起始位”(1bit)。7)發(fā)“讀出代碼”(8bit),1010(A1A2A3)1,其中A1、A2、A3三位是片地址,由24C02的硬件接線決定,文中采用000。8)接收。9)發(fā)ACK應(yīng)答。10)發(fā)“停止位”。
    要特別注意的兩個問題是:1)24C02有一個約10ms的片內(nèi)寫周期。在這個周期內(nèi),24C02是不對外界的操作作出反應(yīng)的。2)在發(fā)送數(shù)據(jù)的過程中,要確保當(dāng)SCL為高電平時,SDA保持穩(wěn)定。
    解決第一個問題的常見方法有兩個,其一為采用延時等待,確保在寫過程中,在一個字節(jié)完成發(fā)送了停止位之后,微處理器等待足夠的時間,通常應(yīng)該超過10ms,再送下一個字節(jié),這段時間用來等待EEPROM完成片內(nèi)寫周期。另一個是采用輪詢的方式,判斷EEPROM是否完成了片內(nèi)寫周期。這種方式的主導(dǎo)思想是,當(dāng)向EEPROM發(fā)送寫標(biāo)志后,正常情況下,EEPROM應(yīng)該有ACK應(yīng)答。但是當(dāng)EEPROM在進(jìn)行片內(nèi)寫周期的時候,則不會產(chǎn)生這樣的應(yīng)答。程序據(jù)此判斷,EEPROM是否完成了片內(nèi)的寫周期程序。如果完成,則可以繼續(xù)寫入下一個要寫的內(nèi)容,否則繼續(xù)等待。
    第一種方法編程較為簡單,但是會浪費(fèi)大量的機(jī)器時間,并且程序的延時時間不好確定。第二種方法的優(yōu)點(diǎn)在于,雖然編程較為復(fù)雜,但是較為快速,對其余的程序模塊影響較少,便于完成程序的模塊化設(shè)計。
    對于在發(fā)送數(shù)據(jù)的過程中,要確保當(dāng)SCK為高電平時,SDA必須保持穩(wěn)定,應(yīng)該在程序中利用軟件給予保證。
    如果可以很好的解決以上兩個問題,數(shù)據(jù)的寫入和讀出是方便快捷和可靠的。

  • 上一篇: LCD驅(qū)動HT1621的PIC源代碼
  • 下一篇: 采用PIC16F639的被動無鑰門禁系統(tǒng)設(shè)計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1