国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Keil C的AT24C02串行E2PROM的編程

發(fā)布時間:2010-7-24 15:01    發(fā)布者:conniede
關(guān)鍵詞: AT24C02 , E2PROM , Keil , 串行
AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(2.5~5.5 V)、擦寫次數(shù)多(大于10 000次)、寫入速度快(小于10 ms)、抗干擾能力強、數(shù)據(jù)不易丟失、體積小等特點。而且他是采用了I2C總線式進行數(shù)據(jù)讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數(shù)據(jù)實時的存取十分方便。

1 AT24C02的引腳功能

AT24C02引腳如圖1所示。


他的的1、2、3腳是3根地址線,用于確定芯片的硬件地址。第8腳和第4腳分別為正、負電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這根雙向I2C總線串行傳送。第6腳SCL為串行時鐘,SDA和SCL為漏極開路端,在實際的應(yīng)用當(dāng)中都需要和正電源間各接一個5.1 kΩ的電阻上拉。第7腳為WP寫保護端,接地時允許芯片執(zhí)行一般的讀寫操作;接正電源時只允許對器件進行讀操作。

2 AT24C02的內(nèi)部結(jié)構(gòu)

圖2為AT24C02的內(nèi)部結(jié)構(gòu)圖。


啟動、停止邏輯單元 接收數(shù)據(jù)引腳SDA上的電平信號,判斷是否進行啟動和停止操作串行控制邏輯單元 根據(jù)SCL,SDA電平信號以及“啟動、停止邏輯”部件發(fā)出的各種信號進行區(qū)分,并排列出有關(guān)的“尋址”、“讀數(shù)據(jù)”和“寫數(shù)據(jù)”等邏輯,將他們傳送到相應(yīng)的操作單元。例如:當(dāng)操作命令為“尋址”時候,他將通知地址計數(shù)器加1,并啟動“地址比較”器進行工作。在“讀數(shù)據(jù)”時,他控制“Dout/確認邏輯”單元;在“寫數(shù)據(jù)”時候,他控制“高壓泵/定時”電路,以便向E2PROM電路提供編程所需要的高電壓。

地址/計數(shù)器單元 產(chǎn)生訪問E2PROM所需要的存儲單元的地址,并將其分別送到X譯碼器進行字選,送到Y(jié)譯碼器進行位選。

高壓泵/定時單元 由于E2PROM數(shù)據(jù)寫入時候需要向電路施加編程高電壓,為了解決單一電源電壓的供電問題,芯片生產(chǎn)廠家采用了電壓的片內(nèi)提升電路。電壓的提升范圍一般可以達12~21.5 V。

Dout/確認邏輯單元 地址和數(shù)據(jù)均以8位二進制碼串行輸入/輸出。數(shù)據(jù)傳送時,每成功傳送一個字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號。在第9個時鐘周期時將SDA線置于低電壓作為應(yīng)答信號。

AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。

I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件。 AT24C02正是運用了I2C規(guī)程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發(fā)送器狀態(tài)。主機產(chǎn)生串行時鐘信號(通過SCL引腳)并發(fā)出控制字,控制總線的傳送方向,并產(chǎn)生開始和停止的條件。無論是主機還是從機,接收到一個字節(jié)后必須發(fā)出一個確認信號ACK。

AT24C02的控制字由8位二進制數(shù)構(gòu)成,在開始信號發(fā)出以后,主機便會發(fā)出控制字,以選擇從機并控制總線傳送的方向。控制字各位的具體作用見表1。


由上表可知,控制字的高4位為AT24C02的識別位,是不能更改的;而第A0,A1,A2片選位,最后是一位是讀寫控制位,當(dāng)其為1時,進行的是讀操作,反之將要進行的是寫操作。

3 AT24C02的讀寫操作

3.1 開始位、停止位和確認位的編程

總線SCL和SDA一般由上拉電阻拉為高電平,只有在SCL為低電平的周期內(nèi),SDA引腳上的數(shù)據(jù)才有效。而當(dāng)SCL為高電平期間SDA引腳上產(chǎn)生的電平變化則表示I2C總線工作的“開始”或“停止”兩種狀態(tài):當(dāng)SCL為高平時,SDA由高電平轉(zhuǎn)向低電平時表示“開始”狀態(tài),而由低電平轉(zhuǎn)向高電平時表示“停止”狀態(tài),其時序如圖3所示。


由時序圖可以編寫由主機發(fā)給AT24C02的開始信號和停止信號的KEIL C語言函數(shù)如下:


同時,AT24C02與主機進行信息交換,還需要另外一個“確認信號(ACK)”的狀態(tài)。I2C總線數(shù)據(jù)傳送時,每成功地傳送一個字節(jié)數(shù)據(jù)后,AT24C02都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答的器件在第9個時鐘周期時將SDA線拉低,表示其已收到一個8位數(shù)據(jù)。AT24C02在接收到起始信號和與之匹配的地址之后就會響應(yīng)第一個應(yīng)答信號;如果AT24C02被設(shè)置為寫操作,則每接收一個字節(jié)之后響應(yīng)一個應(yīng)答信號;當(dāng)AT24C02被設(shè)置在讀模式時,則在發(fā)送一個字節(jié)的數(shù)據(jù)后會釋放SDA線,并監(jiān)視主機發(fā)過來的應(yīng)答信號,一旦接收到應(yīng)答信號,AT24C02繼續(xù)發(fā)送數(shù)據(jù),如主機沒有發(fā)送應(yīng)答信號,AT24C02將停止傳送數(shù)據(jù)并等待一個停止信號,此時主機必須發(fā)送一個停止信號給AT24C02,使其進入備用電源模式并使AT24C02處于已知的狀態(tài)。由此可見,應(yīng)答信號在AT24C02的讀寫工作中經(jīng)常用到,根據(jù)圖4應(yīng)答信號的時序圖。


可以編出一個檢驗是否有應(yīng)答信號送來的操作函數(shù)如下:


3.2 寫操作

AT24C02允許有兩種寫操作方式:字節(jié)寫和頁寫。

3.2.1 AT24C02字節(jié)寫操作。

其操作時序如圖5所示。在字節(jié)寫模式下,主機發(fā)送開始命令和AT24C02地址信息(“R/W”位置0)給AT24C02,主機在收到AT24C02產(chǎn)生應(yīng)答信號后發(fā)送1個字節(jié)地址寫入AT24C02的地址指針。主機在收到從器件的另一個應(yīng)答信號后,再發(fā)送數(shù)據(jù)到被尋址的存儲單元。AT24C02再次應(yīng)答,并在主機產(chǎn)生停止信號后開始內(nèi)部數(shù)據(jù)的擦寫。在內(nèi)部擦寫過程中,AT24C02不再應(yīng)答主機的任何請求。根據(jù)圖5則可以編寫出AT24C02的字節(jié)寫操作函數(shù)W1Byte如下:


3.2.2 AT24C02頁寫操作

AT24C02允許每次寫入8個字節(jié)的頁寫操作模式,頁寫操作和字節(jié)寫操作的時序差不多都相同,不同的是在于傳送了一字節(jié)數(shù)據(jù)后并不產(chǎn)生停止信號,主機被允許再發(fā)送7個額外的字節(jié)。每發(fā)送一個字節(jié)數(shù)據(jù)后,AT24C02產(chǎn)生一個應(yīng)答位。如果在發(fā)送停止信號之前,主機發(fā)送超過8個字節(jié),AT24C02內(nèi)部地址計數(shù)器將自動翻轉(zhuǎn),先前寫入的數(shù)據(jù)被覆蓋。接收主機發(fā)送的停止信號后,AT24C02啟動內(nèi)部寫周期將數(shù)據(jù)寫到數(shù)據(jù)區(qū)。因此,可以編寫一個頁寫操作的函數(shù)如下:


3.3 讀操作

AT24C02的讀操作主要有立即地址讀取、隨機地址讀取和順序地址存取3種。立即地址讀取方式由一個空字節(jié)序列來加載數(shù)據(jù)地址,當(dāng)從機尋址碼和數(shù)據(jù)尋址碼隨鐘輸入,并被確認時,從機必須產(chǎn)生另一個開始狀態(tài),通過發(fā)出一個確認讀取的信號之后,數(shù)據(jù)便隨時鐘串行輸出,數(shù)據(jù)的讀取不通過確認狀態(tài)應(yīng)答,而是通過一個停止?fàn)顟B(tài)來應(yīng)答。其他兩種方式基本類似,只是不需要產(chǎn)生另一個開始狀態(tài),而順序地址讀取時,讀出的是連續(xù)數(shù)據(jù)。讀操作的時序圖類似于圖4的寫操作時序,因此可編出讀一個字節(jié)的函數(shù)RlByte如下:


當(dāng)然,對于AT2402的讀取往往不是只一個字節(jié),更多的時候還是想一連幾個字節(jié)一起讀取,因此,可編出連續(xù)讀取N個字節(jié)的函數(shù)如下:


4 綜合應(yīng)用舉例

以圖6所示硬件電路為例,調(diào)用上面所編寫的函數(shù),將數(shù)據(jù)00H~07H送到AT24C02內(nèi)部首地址為10H的地方存放,并將AT24C02內(nèi)部以20H為首地址的連續(xù)8個字讀到AT89C51的內(nèi)部RAM20H~27H存放。其主程序如下:


其實,AT24CXX系列的E2PROM芯片很多,但其編程不盡相同。由于C語言的編程要精準控制時間很不容易,因此往往有些工程人員碰到類似的I2C硬件結(jié)構(gòu),大多采用C語言與匯編語言混合編程的方法。經(jīng)過筆者一番實踐之后,覺得上述所編寫的函數(shù)幾乎可以用到所有I2C結(jié)構(gòu)的硬件,只需要大家花一點時間調(diào)試下DELAY函數(shù)的時間就可以了。
本文地址:http://www.qingdxww.cn/thread-16640-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • 為何選擇集成電平轉(zhuǎn)換?
  • 5分鐘詳解定時器/計數(shù)器E和波形擴展!
  • 基于CEC1712實現(xiàn)的處理器SPI FLASH固件安全彈性方案培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91成人在线观看视频 | 日韩精品欧美在线 | 亚洲精品国产网红在线 | 精品推荐国产麻豆剧传媒 | 在线日本色 | 91视频下载网址 | 四虎资源 | 麻豆传煤适当放松一下自己 | 国产亚洲精品日韩香蕉网 | 麻豆视频污 | 久久成人亚洲 | 成都4片p高清完整版hd免费 | 亚洲爱爱天堂 | 九九精品视频在线播放 | 久久国产精品久久 | 精品999视频 | 亚洲日本欧美在线 | 欧美中文在线观看 | 国产日韩精品一区二区 | 日韩在线一 | www.日韩在线 | 免费在线观看黄网 | 免费成人黄色片 | 奇米一区| 精品国产香蕉伊思人在线又爽又黄 | 国产精品午夜免费观看网站 | 狼伊千合综网中文 | 美女裸身无档视频免费 | 91国在线啪精品一区 | 日欧毛片| 嘛豆传媒国产剧情 | 老子影院午夜伦不卡不四虎卡 | 大胖子h粗污 | 国产成人a一在线观看 | 国产网站在线播放 | 色久综合在线 | 香香视频免费版下载 | 日韩一级片在线播放 | 高清欧美一级在线观看 | 青草视频在线观看免费资源 | 亚洲男人天堂视频 |