1,背景
iic通訊,mcu(模擬iic)作為主機,其餘裝置作為從機,如:max9288,96705。
2,夯實基礎
2.1 iic的啟動條件和停止條件
啟動條件:sda from highto low while scl is high
停止條件:sda from low to high while scl ishigh. (如圖1)
圖12.2 iic的資料傳輸條件
the data on sdamust remain stable whilescl ishigh. (如圖2)
圖22.3 iic的寫入
2.3.1 單個位元組的寫入:(如圖3)
圖32.3.1 多個位元組的寫入:(如圖4)
圖42.4 iic的讀取(如圖5)
圖52.5 iic的應答
ack應答,分為ack應答和nack應答。
ack應答: ack應答的位置在緊接著資料後的第乙個位元組或者是一幀資料的第九個位元組。(如圖6)
規則如下:主機寫入資料時候,在第9個scl為高的週期內,並且scl需要保持高,從機sda把高拉為低,傳輸在sda匯流排上。主機去查詢sda的高低電平:
當查詢sda為低時,即:主機獲得從機的ack應答,該iic線路,通訊成功;
當查詢sda一直儲存高時,即主機沒有獲得從機的ack應答,該iic線路,通訊不成功;(查詢的週期時間,不超過5個週期,eg:1ms)
nack應答:模擬ack應答,類似的道理,不做重複性的描述。
圖63,技術細節問題
3.1(模擬iic)驅動除錯
3.1.1gpio口設定
(模擬iic)涉及到的gpio有兩個,分別是sda,scl。設定為推挽輸出模式,外部上拉3.3v。(如圖7)
圖7比如:當需要」scl線」輸出高電平時,需要scl口輸入乙個低電平,讓上拉3.3v導通,使得」scl線」上的電平被3.3v拉高。
3.1.2等待時間的設定
(1)由於每個位元組(byte)的寫入,都需要應答,稱為ack。在這個過程中,有很多需要等待的scl為高的地方。
比如:每個bit資料,寫完後,需要等待scl為高時,才可以進行下一步動作。有人會多寫幾個延時delay(),代替等待while()動作。但是,官方建議的是保留while(),等待保留。除非是硬體iic,無需mcu等待。
(2)ack的等待時間。
主機查詢sda為低電平時,需要scl為高電平。因此,在查詢sda之前,要查詢scl是否為高。
有部分從機的ic,在處理主機發過來的第一幀資料,由於內部ic沒有處理完或者一直在處理訊號,會把匯流排上的scl一直拉低,時間會持續1ms左右。然後在處理第二幀及以後的資料,又恢復正常,即:不會把scl一直持續拉低。這樣的ic訊號有:max9288,部分的pic微控制器。
3.2除錯近端iic和遠端iic
對於主機而言,是多從機的iic通訊,近端iic通訊的物件是max9288,遠端iic通訊的物件是max96705。
IIC通訊除錯
iic匯流排是由philips 公司開發的一種簡單 雙向二線制同步序列匯流排。它只需要兩根線即可在連線於匯流排上的器件之間傳送資訊。主器件用於啟動匯流排傳送資料,並產生時鐘以開放傳送的器件,此時任何被定址的器件均被認為是從器件。在匯流排上主和從 發和收的關係不是恆定的,而取決於此時資料傳送方向。如果...
通訊協議 IIC通訊
iic匯流排是由資料線sda和時鐘線scl構成的序列匯流排,可傳送和接收資料。在匯流排上一般有幾個主機 也可以多個 和多個從機。從機一般不主動傳送資料,主機傳送資料,資料報中包含有從機位址,主機通過從機位址對從機進行操作。1.空閒狀態 時鐘線和資料線都為高電平 稱為釋放匯流排 時鐘線scl由主機控制...
IIC 通訊例項
iic 標籤 1 標準速率 100kbit s 快速 400kbit s 高速 4mbit s 2 2線通訊協議 3 起始與停止 scl高時,sda由 高 低 變化,起始訊號 sda由 低 高 變化,停止訊號 4 空閒狀態 sda和scl都處於高電平狀態 5 資料傳輸與應答 資料必須是8位,且高位在...