IIC原理及簡單流程


IIC 即 inter-integrated-circuit,又稱 I2C 一種總線結構,具體接受請度娘。

I2C串行總線一般有兩根信號線,一根是雙向的數據線SDA,另一根是時鍾線SCL。所有接到I2C總線設備上的串行數據SDA都接到總線的SDA上,各設備的時鍾線SCL接到總線的SCL上。

以下為mini2440的IIC設備:AT24C08

 

IIC遵從 主/從結構,通信由主機發起,並且由主機結束。

開始信號(s):當時鍾信號處於高電平,向數據信號線發送下降沿。

結束信號(p):當時鍾信號處於高電平,向數據信號線發送上升沿。

 

由於IIC總線上可能連有多個設備,因此我們應該在開始信號后進行設備選擇,也就是發送地址信號,當設備收到符合自己地址的信號后會返回響應。

一般地址位寬為7位,而發送的數據位為8位,除了7位地址,剩下的一位為讀寫位。

 

如果為寫,則在設備返回ack信號后,接着主機發送8位數據,當設備收到數據后,設備返回ack信號。

如果為讀,則在設備返回ack信號后,接着設備返回8位數據,當主機接收到信號后,接下來的ack信號就由主機發送。

Data Transferred段周而復始,直到數據傳輸完成。

 

而在主機發送(R)或者接受(W)到ack信號后,會產生中斷,我們可以在中斷處理程序中對數據進行進一步處理,或者在中斷處理程序內繼續發送/接收數據。

 

當傳輸完成后,

       如果主機作為數據發送方,可以發送停止信號,終止IIC傳輸過程。

       如果主機作為數據接收方,可以不發送響應信號ack,終止傳輸過程。

 

寄存器配置:

根據芯片手冊,IICCON用於初始化,其余用於數據傳輸的相關操作。

IICCON:  IIC控制寄存器

IICDS:  IIC數據移位寄存器

IICSTAT:  IIC狀態寄存器

IICADD:   IIC地址寄存器

流程如下

主機發送流程:

 

主機接收流程:

 

設備發送流程:

 

設備接收流程:

 

另外,對於AT24C08,值得注意的是,該設備是先進行地址選擇(非IIC設備的地址選擇,而是AT24C08內部的地址選擇),然后進行數據讀寫。

因此,AT24C08來說,當該設備被選擇后(IIC地址匹配),然后對收到的第一個數據進行片內地址選擇(寫地址),然后:

 

如果需要寫數據,因為同為寫模式,所以可以直接進行

 

如果需要讀數據,因為要轉換為讀模式,所以需要重新發送開始信號,在當前地址讀數據

 

 

AT24C08是10位地址,所以8位的word address根本不夠進行地址選擇,因此以device address的最后兩位,加上word address 的8位,一共10位數據進行地址選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM