- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
i2c匯流排-at24cxxeeprom存取
I2C匯流排-AT24Cxx EEPROM存取
I2C匯流排(Inter IC Bus)通訊協定自1992年由菲力浦(Philips)公司提出,由於僅透過主從架構和兩條傳輸線SCL(Serial Clock line)及SDA(Serial Data line)作串列傳送達成雙向傳輸(如圖一所示),簡化了傳輸位元的接線,已被廣泛應用於各種小型化IC間的資料傳輸諸如:LCD driver、RAM、EEPROM、AD/DA轉換器及智慧型控制(單晶片微電腦)…等。
本文藉由Atmel公司所生產的89s51單晶片微電腦及EEprom AT24Cxx提供作為I2C匯流排(Inter IC Bus)通訊協定的認識及測試程式範例。
Master
Slave
一、I2C通訊協定(註一)
I2C Bus由主控端送出系統同步時脈訊號(SCL)而經由SDA腳作資料雙向傳輸。每筆資料傳輸以八位元為一單位,由MSB位元開始依序傳送或接收如圖二所示,SDA資料的改變僅能發生在SCL低電位時間,且每當完成八位元寫入受控端後,受控端將在第九個時脈回應一低準位訊號(ACK)表示完成寫入程序,而主控端作讀取時,在第九個時脈回應受控端一高準位訊號(NO ACK)表示完成讀出程序。
SDA及SCL同時維持在高準位狀態,受控端處於休眠狀態(Idle),而當主控端要完成一筆資料傳送時,必須有起始訊(start)及停止訊號(stop)的發佈如固四所示,SDA早一步SCL由高電位轉為低電位表示傳送開始,而SDA慢一步SCL由低電位轉為高電位表傳送結束。
二、AT24Cxx通訊協定(註二)
EEPROM AT24c02/04/08/16分別提供2k Bit(256Byte)/4k/8k/16k(2k Byte) 等容量而IC接腳僅8支如圖五所示,A2-A0提供多顆元件並接擴充記憶容量的頁碼選擇,例如使用八顆24c02擴充為2k Byte記憶體,由A2-A0外部接線設定不同分頁,而較高容量24c16則不須使用A2-A0,僅需設定內定位元P2-P0區別分頁如圖六所示,元件的位址碼由八位元組成,最高四位元固定為1010,而最低位元(LSB)作為讀寫的選擇,0表寫入記憶體,1表從記憶讀出資料。
圖五 接腳圖
圖六 元件位址表
24cxx寫入傳輸協定如圖七所示,先送元件位址,再指定記憶體位址(word address) 共八位元(256 Byte)最後再傳送寫入的資料。圖八顯示利用I2C分析儀截取寫入資料55h至24c02的第0位址的實際傳輸格式。
圖七 Byte 的寫入格式
圖八 寫入資料55h至24c02的第0位址的實際傳輸格式
24cxx讀出傳輸協定如圖九所示,元件位址設定與讀入協定相同,需增加一次元位垃設定但須將LSB設為1即讀出狀態,主控端即可依序接收EEPROM所送出的資料。圖十顯示從24c02的第0位址讀出資料55h的實際傳輸格式。
圖九 Byte讀出格式
圖十 從24c02的第0位址讀出資料55h的實際傳輸格式
三、結論
I2C Bus 通訊協定,一般標準模式傳輸速度最高可達100kbit/s,而在快速及高速模式分別可達400kbit/s及3.4Mbit/s。至於實際應用仍需配合受控端(Slave)元件的速度,因此實務上測試最好先使用組合語言比較能掌控晶片間傳輸過程。所附程式碼已經過實務測試,89s51使用頻率為12MHz,提供給有趣的同仁參考。
四、參考資料
註一:”The I2C-BUS SPECIFICATION Version 2.1”
/i2c
註二:”Atmel AT24Cxx datasheet”
/literature
五、範例程式(
scl equ p3.0
sda equ p3.1
wrdata equ 34h ;write data buffer
rddata equ 33h ;read data buffer
addr equ 32h ;data address buffer
device equ 31h ;device address buffer
pge equ 30h ;pages buffer
org 0h
sjmp reset
org 30h
reset:
mov pge,#0 ;set memory pages
call devpage ;device address converter
mov addr,#0 ;set word address
mov wrdata,p0 ;set write data from P0
call byte_wr
jb p2.0,$
call rnd
文档评论(0)