上一篇:STM32-(18):SPI與數位管(SPI) | 下一篇:STM32-(20):I2C通信(實驗:讀寫EEPROM) |
---|
I2C BUS是Philips公司推出的一種基于兩線的晶片間串行傳輸總線。I2C總線采用了器件位址的硬體設定方法,通過軟體尋址完全避免了器件的片選線尋址方法,進而使硬體系統具有最簡單而靈活的擴充方法。
I2C總線在标準模式下,資料傳輸率可達100kbps,高速模式下可達400kbps。目前 I2C 總線被廣泛應用于消費了電子産品、通信産品、儀器儀表及工業測控系統中。
在I2C總線上隻需要串行資料SDA線和串行時鐘線SCL線兩條線。
每個器件都有一個唯一的位址以供識别,并工作在主模式或者從模式下,而且各器件都可以作為一個發送器或接收器。
微控制器包含的I2C 發送/接收器都可以選擇作為主模式( Master )或從模式( Slave )工 作。但任一時刻 I2C 總線上隻允許一個微控制器工作在主模式下,作為主要器;而另一個微控制器必須工作在從模式下,作為被控器。
注:作為主模式,必須内部有時鐘,以産生波特率,任何時候隻有兩個之間進行通信。
I2C總線的特點
1.二線傳輸
2.無中心主機
3.軟體尋址
4.應答式資料傳輸過程(好處:保證傳輸過程中資料的穩定和可靠)
5.節點可帶電接入或撤出(大概是熱插拔的意思)
I2C資料傳輸
傳輸的第一個8位資料為尋址位元組,包括7位的被控器位址和1位方向位,接着被控器發出A (應答位),緊接着的是主要器與被控器之間資料傳輸和應答。在資料傳輸完成後,主要器要發出停止信号。
資料傳輸格式如圖:
分析:在總線上,SCL和SDA是開漏輸出,會接上拉電阻,是以空閑的時候是高電平(即開始信号之前),在SCL處于高電平器件,發現SDA的電平由高到低跳變,即産生開始信号;在SCL處于高電平器件,發現SDA的電平由低到高跳變,即産生停止信号;這中間,SCL電平會變化,一般來說,SCL産生上升沿,發送方發送資料,接收方接收資料,SCL産生下降沿時,發送方開始修改SDA上的資料。第9位為應答位,發送方會将SDA總線線釋放,由接收方産生應答,SDA總線預設是高電平,若接收方有應答,會強制拉低電平,表示有應答,即應答位低電平有效。
STM32的I2C子產品
介紹:
I2C總線接口連接配接微控制器和串行I2C總線。它提供多主機功能,控制所有I2C總線特定的時序、協定、仲裁和定時。支援标準和快速兩種模式,同時與SMBUS2.0相容。
I2C總線有多種用途,包括CRC碼的生成和校驗、MBus(System Management Bus)、PMBus(Power Management Bus)。
根據特定裝置的需要,可以使用DMA以減輕CPU的負擔。
特點:
1、 I2C主裝置功能
一産生時鐘
一産生起始和停止信号
2、 I2C從裝置功能
一可程式設計的丨2C位址檢測
一可響應2個從位址的雙位址能力
一停止位檢測
3、 狀态标志:
一發送器/接收器模式标志
一位元組發送結束标志
一 I2C總線忙标志
4、 錯誤标志
一主模式時的仲裁丢失
一位址/資料傳輸後的應答(ACK)錯誤
—檢測到起始和停止錯位
一禁止拉長時鐘功能後的上溢或下溢
I2C接口可以下述4種模式中的一種運作
- 從發送器模式
- 從接收器模式
- 主發送器模式
- 主接收器模式
預設模式為從模式。接口在生成起始條件後自動從從模式切換到主模式;當仲裁丢失或産生停止信号,則從主模式切換到從模式。
分析:資料往DR寄存器内丢,也可以從DR寄存器讀取,當發生一些錯誤的時候,通路狀态寄存器,根據不同的狀态在軟體中進行不同的操作。
注:DR寄存器實際上有兩個,一個用于發送,一個用于接收,實體上是分開的,不會互相幹擾。
比較重要的寄存器簡介:
I2C_SR1
位7:判斷寄存器是否為空,當寄存器為空時,才能繼續發送。若不為空,說明DR寄存器内資料還沒發完,需要繼續等待。
主模式下的發送流程:
分析:
①首先發送一個S位,起始條件。然後會出現一個事件EV5,若發送成功,SB位置1,然後讀SR1寄存器的這個位,當這個SB位為1時再将SR1寄存器的位址寫入DR寄存器就會清除因該位置1而産生的事件。
②發送一個8位的位址。一個總線上可能有多個器件,首先你得确認你要跟那個器件進行通信,若有應答,就會産生EV6事件,ADDR置1,表示位址發送成功,EV8_1事件,TxE置1,将發送寄存器清空
③發送資料Data。當獲得應答A,既然獲得應答,肯定發送成功,會産生EV8,TxE置1,清除該事件,以便發送後面新的資料。
④發送停止信号P停止位
注:各種事件的産生改變了 SR 狀态寄存器相應的位
主模式下的接收流程:
I2C庫函數
上一篇:STM32-(18):SPI與數位管(SPI) | 下一篇:STM32-(20):I2C通信(實驗:讀寫EEPROM) |
---|