IIC簡介:
IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結構下,同時每個芯片都可以作為實時數據傳輸的控制源。這種方式簡化了信號傳輸總線接口。
IIC的主要構成只有兩個雙向的信號線,一個是數據線SDA,一個是時鍾線SCL。
IIC主要特點:
具有多機功能,該模塊既可以做主設備也可以做為從設備
IIC主設備功能,主要產生時鍾,產生起始信號和停止信號
IIC從設備功能,可編程的IIC地址檢測,停止位檢測
支持不同速率的通訊速度,標准速度(最高速度100kHZ),快速(最高400kHZ)
IIC通信過程:
主模式時,IIC的接口啟動數據傳輸並且產生時鍾信號。串行數據傳輸總是以其實條件開始並以停止條件借宿。起始條件和停止條件都是在主模式下由軟件產生控制的。
從模式時,IIC接口能識別它自己的地址(7位或者10位)和在數據總線廣播的地址(好比每個人都有不同的身份ID,叫到哪個哪個就發生應答),同時軟件能夠控制開啟或者禁止廣播呼叫地址的識別。
數據和地址按照8位每個字節來傳輸,高位在前。跟在起始條件后的1或者2個字節是地址(7位模式為1個自己,10位模式為2個字節)。地址只能主模式發送。在一個字節傳輸的8個時鍾后的第九個時鍾期間,從模式接收后必須回一個ACK給發送器,這樣才進行數據傳輸。
提醒:在IIC空閑時候,SDA ,SCL 都是保持高電平。
起始信號:在時鍾SCL保持高電平,然后SDA數據線是從高電平變為低電平表示起始信號;
停止信號:在時鍾SCL保持高電平,然后SDA數據線是從低電平變為高電平表示停止信號;
應答信號:主機發送完一個8為數據后,會等待從機的回答一個ACK信號就是SDA將會拉低。
每一個字節必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節后面都必須跟隨一位應答位(即一幀共有9位)。如果一段時間內沒有收到從機的應答信號,則自動認為從機已正確接收到數據。
在 IIC總線進行數據傳送時,時鍾信號為高電平期間,數據線上的數據必須保持穩定,只有在時鍾線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化,否者找成數據發送失敗。
下面說一下IIC的讀寫過程,這里的以都以主的角度來說。
以AT24C02與2440連接IIC通信,AT24C02為從,2440為主。
AT24C系列EEPROM芯片的固定部分為1010,A2,A1,A0引腳接高低電平后得到確定的3位編碼,形成7位編碼即為該器件的地址碼。
最后一位R/W表示是要讀還是要寫 ,0為寫入,1為讀出
IIC讀
單片機先發送該器件的7位地址碼和寫方向位“0”(“偽寫”),發送完后釋放SDA線並在SCL線上產生第9個時鍾信號。被選中的存儲器器件在確認是自己的地址后,在SDA線上產生一個應答信號作為回應。
然后,再發一個字節的要讀出器件的存儲區的首地址,收到應答后,單片機要重復一次起始信號並發出器件地址和讀方向位(“1”),收到器件應答后就可以讀出數據字節,每讀出一個字節,單片機都要回復應答信號。當最后一個字節數據讀完后,單片機應返回以“非應答”(高電平),並發出終止信號以結束讀出操作。
隨機讀
IIC寫入
單片機進行寫操作時,首先發送該器件的7位地址碼和寫方向位”0”(共8位,即一個字節),發送完后釋放SDA線並在SCL線上產生第9個時鍾信號。被選中的存儲器器件在確認是自己的地址后,在SDA線上產生一個應答信號作為響應,單片機收到應答后就可以傳送數據了。傳送數據時,單片機首先發送一個字節的被寫入存儲器的首地址,收到存儲器器件的應答后,單片機就逐個發送數據字節,但每發送一個字節后都要等待應答。AT24C系列片內地址在接收到每一個數據字節地址后自動加1,在芯片的“一次裝載字節數”限度內,只需輸入首地址。裝載字節數超過芯片的“一次裝載字節數”時,數據地址將“上卷”,前面的數據將被覆蓋。
字節寫入
頁寫入
本文部分參考其他書籍,沒有說明出處,請見諒!