|
IIC協(xié)議
分為 物理層(硬件)和協(xié)議層(軟件) 同步串行通訊方式
物理層(硬件):兩根總線 SDA(數(shù)據(jù)線) SCL(時(shí)鐘線)
每一個(gè)連接到總線的設(shè)備都有一個(gè)獨(dú)立的地址(7——10位),主機(jī)利用這個(gè)地址進(jìn)行不同設(shè)備之間的通訊。
上拉電阻一般接4.7K 實(shí)現(xiàn)高阻態(tài) 線與
當(dāng)設(shè)備空閑時(shí),輸出高阻態(tài)。 高阻態(tài)表示邏輯1 地表示邏輯0
電壓為:2-15v
STM32使用時(shí)引腳配置為開漏輸出模式
三種傳輸模式:標(biāo)準(zhǔn)模式 傳輸速率100kbps
快速模式 傳輸速率400kbps
高速模式 傳輸速率3.4mbps 但目前大多IIC設(shè)備不支持
只要滿足設(shè)備傳輸要求 可根據(jù)具體情況設(shè)置傳輸速率
連接到總線的電容不能超過400pf限制。
協(xié)議層(軟件):起始和停止信號(hào)、數(shù)據(jù)有效性、響應(yīng)、仲裁、時(shí)鐘同步和地址廣播的等
主機(jī)寫從機(jī)讀信號(hào)傳輸過程:
起始信號(hào) 從機(jī)地址 讀寫方向R/nW(主機(jī)1讀0寫) 從機(jī)產(chǎn)生應(yīng)答信號(hào)給主機(jī) 數(shù)據(jù)傳輸 從機(jī)產(chǎn)生應(yīng)答信號(hào) 數(shù)據(jù)傳輸 判斷是否應(yīng)答(應(yīng)答則繼續(xù)傳輸數(shù)據(jù)非應(yīng)答則停止傳輸) 主機(jī)發(fā)出停止信號(hào)
主機(jī)讀從機(jī)寫信號(hào)傳輸過程:
起始信號(hào) 從機(jī)地址 讀寫方向R/nW(主機(jī)1讀0寫) 從機(jī)產(chǎn)生應(yīng)答信號(hào)給主機(jī) 數(shù)據(jù)傳輸 主機(jī)產(chǎn)生應(yīng)答信號(hào) 數(shù)據(jù)傳輸 判斷是否應(yīng)答(應(yīng)答則繼續(xù)傳輸數(shù)據(jù)非應(yīng)答則停止傳輸) 主機(jī)發(fā)出停止信號(hào)
復(fù)用信號(hào)傳輸數(shù)據(jù),兩個(gè)起始信號(hào),第一個(gè)發(fā)送要讀寫寄存器的地址,第二個(gè)發(fā)送要讀寫的數(shù)據(jù)
當(dāng)SCL為高電平時(shí)SDA線從高電平向低電平切換表示通訊起始
當(dāng)SCL為高電平時(shí)SDA線從低電平向高電平切換表示通訊結(jié)束
SCL的每個(gè)時(shí)鐘周期傳輸一位數(shù)據(jù),SCL高電平SDA數(shù)據(jù)有效,SCL低電平數(shù)據(jù)無效,此時(shí)SDA數(shù)據(jù)交換。
軟件模擬協(xié)議 硬件實(shí)現(xiàn)協(xié)議
1、初始化IIC相關(guān)的GPIO
2、配置IIC外設(shè)的工作模式
3、編寫IIC寫入EEPROM的BYTE write函數(shù)
4、編寫IIC讀取EEPROM的RANDOM read函數(shù)
5、使用page write 及set read函數(shù)并校驗(yàn)
//IIC初始化結(jié)構(gòu)體
typedef struct
{
uint32_t I2C_ClockSpeed; /*設(shè)置SCL時(shí)鐘頻率,此值要低于400000*/
uint16_t I2C_Mode; /*指定工作模式,可選IIC和SMBUS模式 */
uint16_t I2C_DutyCycle; /*指定時(shí)鐘占空比,可選low/hign = 2:1及16:9模式*/
uint16_t I2C_OwnAddress1; /*指定IIC設(shè)備地址*/
uint16_t I2C_Ack; /*使能或關(guān)閉響應(yīng)(一般都要使能)*/
uint16_t I2C_AcknowledgedAddress; /*指定地址長(zhǎng)度,可為7為及10為 */
}I2C_InitTypeDef;
//IO口作為輸出方式時(shí),IO口的IDR寄存器有數(shù)據(jù)
|
評(píng)分
-
查看全部評(píng)分
|