目錄
什麼是IIC
IIC的特性
實體(電氣)特性
IIC總線通信協定
開始和結束條件
一位信号資料傳遞模式
IIC資料含義解析
Write(寫)操作(8位資料+1位ACK)
Read(讀)操作(8位資料+1位ACK)
寫寄存器标準流程:
讀寄存器标準流程:
TWI 協定
協定執行個體:SH367309
SH367309電器特性
SH367309 标注
SH367309讀協定
SH367309寫協定
什麼是IIC
IIC (Inter-Integrated Circuit), 通常發音為: I-squared-C,是多主、多從、分組交換、單工的串行總線,通常用于處理器或微控制器與低速外圍器件的短距離通信連接配接。這個通信協定是由(NXP半導體的前生)飛利浦公司發明,并在2006年開始,I2C協定的實施不要許可費,但仍要收取I2C從機配置設定位址的費用。
IIC的特性
- 僅用兩線連接配接;
- 不像RS232那樣有着嚴格的波特率要求,而是由主裝置(mater)産生時鐘信号;
- 裝置之間的主/從關系簡單,每個裝置都有軟體給予的唯一位址;
- IIC是一個真正的多主總線,提供仲裁和沖突檢測的功能。
實體(電氣)特性
- 隻要求兩條總線線路,一條是串行資料線SDA,一條是串行時鐘線SCL,(IIC是半雙工,而不是全雙工)。
- 每個連接配接到總線的器件都可以通過唯一的位址和其它器件通信,主機/從機角色和位址可配置,主機可以作為主機發送器和主機接收器。
- IIC是真正的多主機總線,(而這個SPI在每次通信前都需要把主機定死,而IIC可以在通訊過程中,改變主機),如果兩個或更多的主機同時請求總線,可以通過沖突檢測和仲裁防止總線資料被破壞。
- 傳輸速率在标準模式下可以達到100kb/s,快速模式下可以達到400kb/s。
- 連接配接到總線的IC數量隻是受到總線的最大負載電容400pf限制。
- I2C通信裝置之間隻通過普通導線進行連接配接,比特流信号采用TTL/CMOS标準下的高/低電平來表示1/0信号,這一方式使得傳輸距離很短(本來設計目的就是用于短距離通信),直接連接配接的傳輸距離短達40cm。
IIC總線通信協定
如下圖所示,為IIC的通訊總線的協定資料格式。
開始和結束條件
I2C總線在待機狀态時,SDA和SCL都處于高電平(兩根線一般情況均接上拉電阻)。
當開始工作時,開始信号由主裝置(master)發起,SDA先由高電平轉為低電平,此時的SCL是高電平。此後,SDA和SCL便配合傳輸開始工作。
當停止工作時,在SCL處于高電平下,SDA由低電平轉為高電平。
一位信号資料傳遞模式
IIC協定通過資料線SDA在SCL的配合下實作資訊的有效傳送。每條線均可産生5V/0V或3.3V/0V的高低電平(也可以是其它方式,常用TTL和CMOS的電平模式),如圖所示,每當時鐘線SCL産生高電平時,SDA所産生的電平信号為目前時鐘周期下傳輸的有效信号;而當SCL為低電平時,SDA可改變,以産生下一周期的傳輸信号。
IIC資料含義解析
IIC協定裡面資料主要包括兩部分:addr資料+data資料。
資料模式:
[ 開始 +(7位位址+1位讀寫+1位ACK)+(8位資料+1位ACK/NACK)*n+停止 ]
注意:
1、在傳輸過程中,每傳輸8位後,要通過一個ACK位進行互相确認。在讀和寫資料的過程中,ACK的來源是不一樣的。
2、寫資料的時候是從裝置會傳回一個ACK值(低電平)以響應已獲得資料。
3、讀資料的時候是主裝置會傳回一個ACK值(低電平)以響應已獲得資料。
4、如果寫資料的時候,有些情況下從裝置要校驗資料,發現資料錯誤,會傳回NACK(高電平)來響應結束本次傳輸;讀資料的情況下,有的情況需要NACK,然後在STOP結束本次傳輸。
Write(寫)操作(8位資料+1位ACK)
因為位址資料是7bit,寫位址的時候要在後面增加1bit寫(低電平),達到1byte長度。
Read(讀)操作(8位資料+1位ACK)
因為位址資料是7bit,讀位址的時候要在後面增加1bit讀(高電平),達到1byte長度。
寫寄存器标準流程:
讀寄存器标準流程:
TWI 協定
在AVR系列單片機中内嵌有一個TWI(Two-wire Serial Interface)接口,它實際上就是IIC總線接口,個人的了解是TWI協定是利用IIC協定的理論基礎,對IIC的資料量進行修改,為每個晶片制定特定的資料量格式。
協定執行個體:SH367309
SH367309電器特性
SH367309 作為從機模式,MCU作為主機模式,SH367309位址固定為0X1A。
SH367309 标注
SH367309讀協定
Start+(位址+寫)+ACK*+RegAddress+ACK*+ReadDataLength+ACK*
ReStart+(位址+讀)+ACK*+DATA+ACK+····+DATA+ACK+CRC+NACK+Stop
注:帶*表示從裝置向主裝置發送。
SH367309寫協定
Start+(位址+寫)+ACK*+RegAddress+ACK*+CRC+ACK*+Stop
注:帶*表示從裝置向主裝置發送。