i2c汇流排-at24cxx eeprom存取.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
i2c汇流排-at24cxx eeprom存取

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_rd mov p1,rddata jb p2.7,$ s

文档评论(0)

wangsux + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档