26.3.1 模式選擇
該外設可以在以下四種模式之一
1)從機發送模式
2)從機接收模式
3)主機發送模式
4)主機接收模式
IIC協議時序
MSB:Most Significant Bit(最高有效位)
起始條件:SCL為高電平狀態,SDA從高電平拉低
停止條件:SCL為高電平狀態,SDA從低電平拉高
數據發送的順序:先發送高位
I2C模塊圖
可以看出IIC模塊中有:
1)數據寄存器、數據移位寄存器、比較器、PEC計算器
2)自己地址寄存器、雙地址寄存器、PEC寄存器
3)數據控制單元
4)時鍾控制單元
5)噪聲濾波器
26.3.3 I2C主模式
主模式所需的序列
1)配置I2C_CR2寄存器,以生成正確的計時
2)配置時鍾控制寄存器
3)配置上升時間寄存器
4)配置I2C_CR1寄存器使能該外設
5)設置I2C_CR1寄存器的起始位,以生成一個起始條件
外圍輸入時鍾:
在sm mode下,至少2MHZ
在Fm mode下,至少4MHZ
SCL主時鍾生成
CCR位用於生成SCL時鍾的高電平和低電平,分別從上升沿和下降沿的生成開始。當一個從設備可能延伸SCL線路時,外設在被編程的時間結束時檢查來自總線的SCL輸入,在上升沿生成時。
如果SCL線是低的,這意味着一個從節點正在拉伸總線,而高層計數器將停止,直到SCL線被檢測到是高的。這就保證了最小值高周期的SCL時鍾參數。
如果SCL線高,則高電平計數器繼續計數。如果SCL線高,則高電平計數器繼續計數。
實際上,從外圍設備生成SCL上升邊緣到外圍設備檢測SCL上升邊緣的反饋循環需要時間,即使沒有從設備延長時鍾。
起始條件
當忙位被清除時,設置起始位將使得接口生成起始條件,並且切換到主模式。
在主模式下,設置開始位將導致接口在當前字節傳輸結束時生成重啟條件。
一旦起始條件被發送了:
SB位由硬件設置,如果設置了ITEVFEN位,就會產生一個中斷。
26.3.6 SMBus
系統管理總線(SMBus)是一個兩線接口,通過它,各種設備可以彼此通信,也可以與系統的其他部分通信。
它基於I2C操作原則。SMBus為系統和電源管理相關的任務提供了一個控制總線。
系統可以使用SMBus來在設備之間傳遞消息,而不是切換各個控制線路。
系統管理總線規范涉及三種類型的設備。
1)從設備是接收或響應命令的設備。
2)主設備是發出命令、生成時鍾並終止傳輸的設備。
3)主機是為系統的CPU提供主接口的專用主機。主機必須是主從主機,並且必須支持SMBus主機通知協議。
系統中只允許一個主機。
SMBus與I2C之間的相同點
1)都是有兩條線:時鍾線和數據線+可選線
2)主從通信,主機提供時鍾
3)多主能力
4)數據格式類似
SMBus與I2C之間的不同點
26.4 I2C中斷
26.6 I2C寄存器
/========================STM32CUBEMX分析IIC===============================/
1、首先要選擇模式,有以下幾個模式
2、對IIC的一些參數配置
3、IIC涉及的中斷