常用晶元at24c02
at24c02是乙個2k位序列cmos e2prom, 內部含有256個8位位元組。at24c02有乙個8位元組頁寫緩衝器。該器件通過iic匯流排介面進行操作,有乙個專門的寫保護功能
引腳
scl 序列時鐘
at24c02序列時鐘輸入管腳用於產生器件所有資料傳送或接收的時鐘,這是乙個輸入管腳。
sda 序列資料/位址
at24c02 雙向序列資料/位址管腳用於器件所有資料的傳送或接收,sda 是乙個開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進行線或(wire-or)。
a0、a1、a2 器件位址輸入端
這些輸入腳用於多個器件級聯時設定器件位址,當這些腳懸空時預設值為0。當使用at24c02 時最大可級聯8個器件。如果只有乙個at24c02被匯流排定址,這三個位址輸入腳(a0、a1、a2 )可懸空或連線到vss,如果只有乙個at24c01被匯流排定址這三個位址輸入腳(a0、a1、a2 )必須連線到vss。
wp 寫保護
如果wp管腳連線到vcc,所有的內容都被寫保護只能讀。當wp管腳連線到vss 或懸空允許器件進行正常的讀/寫操作
結構與定址
at24c02的儲存容量為2kb,內容分成32頁,每頁8b,共256b,操作時有兩種定址方式:晶元定址和片內子位址定址。
(1)晶元定址:at24c02的晶元位址為1010,其位址控制字格式為1010a2a1a0r/w。其中a2,a1,a0可程式設計位址選擇位。a2,a1,a0引腳接高、低電平後得到確定的三位編碼,與1010形成7位編碼,即為該器件的位址碼。r/w為晶元讀寫控制位,該位為0,表示晶元進行寫操作。
(2)片內子位址定址:晶元定址可對內部256b中的任乙個進行讀/寫操作,其定址範圍為00~ff,共256個定址單位。
i2c匯流排介面電路圖如下圖
i2c匯流排的器件分為主器件和從器件。主器件的功能是啟動在匯流排上傳送資料,並產生時鐘脈衝,以允許與被定址的器件進行資料傳送。被定址的器件,稱為從器件。一般來講,任何器件均可以成為從器件,只有微控制器才能稱為主器件。主、從器件對偶出現,工作在接收還是傳送資料方式,由器件的功能和資料傳送方向所決定。
i2c匯流排允許連線多個微控制器,顯然不能同時存在兩個主器件,先控制匯流排的器件成為主器件,這就是匯流排競爭。在競爭過程中資料不會被破壞、丟失。資料只能在主、從器件中傳送,結束後,主、從器件將釋放匯流排,退出主、從器件角色。
i2c匯流排介面特性
傳統的微控制器序列介面的傳送和接收一般都分別各用一條線,如mcs-51系列的txd和rxd,而i2c匯流排則根據器件的功能通過軟體程式使其工作於傳送或接收方式。當某個器件向匯流排上傳送資訊時,它就是傳送器(也叫主器件),而當其從匯流排上接收資訊時,又成為接收器(也叫從器件)。主器件用於啟動匯流排上傳送資料並產生時鐘以開放傳送的器件,此時任何被定址的器件均被認為是從器件。i2c匯流排的控制完全由掛在匯流排上的主器件送出的位址和資料決定,在匯流排上,既沒有中心機也沒有優先順序。
匯流排上主和從(即傳送和接收)的關係取決於此時資料傳送的方向。sda 和scl 都是雙向線路,都通過乙個電流源或上拉電阻連線到電源端。連線匯流排器件的輸出級必須是集電極或漏極開路,以具有線「與」功能,當匯流排空閒時,兩根線都是高電平。
下圖是at24c02與51微控制器的乙個連線示意圖
其各種狀態的時序圖就不在這裡介紹,各位可查詢相關書籍與資料
I2C驅動(2) 讀寫eeprom
include include include include include include include include include static unsigned short ignore static unsigned short normal addr 位址值是7位 改為0x60的話...
i2c匯流排時序
一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...
I2C匯流排死鎖
原文 現象 最近發現訪問i2c裝置時,主裝置復位可能會引起i2c死鎖,表現為scl為高,sda一直為低,後發現是從裝置拉死i2c匯流排,從裝置斷電之後,sda變高,上電後通訊正常。後來通過拉低scl訊號線,sda就會自動變成高電平,i2c匯流排恢復。原因 在正常情況下,i2c匯流排協議能夠保證匯流排...