嵌入式硬件通信接口協(xié)議-IIC(一):協(xié)議基礎(chǔ)
本節(jié)繼續(xù)講嵌入式硬件通信接口協(xié)議中的又一個(gè)串行通信接口-IIC。相比于UART串口協(xié)議和SPI串行外設(shè)接口協(xié)議,這個(gè)IIC又有其獨(dú)特之處。
簡(jiǎn)介
IIC(Inter-Integrated Circuit),集成電路總線。
IIC 即Inter-IntegratedCircuit(集成電路總線),這種總線類型是由飛利浦半導(dǎo)體公司在八十年代初設(shè)計(jì)出來(lái)的一種簡(jiǎn)單、雙向、二線制、同步串行總線,主要是用來(lái)連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說(shuō)多個(gè)芯片可以連接到同一總線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)時(shí)數(shù)據(jù)傳輸?shù)目刂圃础_@種方式簡(jiǎn)化了信號(hào)傳輸總線接口。
相比于SPI接口《嵌入式硬件通信接口協(xié)議-SPI(一)協(xié)議基礎(chǔ)》,此處的IIC接口定義了多主多從的通信架構(gòu),在同一IIC總線上可有多個(gè)主機(jī)和多個(gè)從機(jī)。“主->從”的通信架構(gòu)使得通信的主動(dòng)權(quán)在主機(jī)端,主機(jī)發(fā)起一次通信,從機(jī)做出響應(yīng)。
信號(hào)線
IIC作為兩線串行總線,信號(hào)線分別是:
SCL(Serial ClockLine):串行時(shí)鐘,主機(jī)輸出
SDA(Serial DataLine):串行數(shù)據(jù),雙向傳輸
總線信號(hào)的電平在電路連接上,一般加上拉電阻Rp,使得總線在空閑時(shí),信號(hào)管腳處于高電平狀態(tài)。
這里可以具體到一些芯片的手冊(cè)里,明確寫出線路連接時(shí)的上拉電阻要求:
SHT20溫濕度傳感器要求的上拉電阻:
在觸摸按鍵BS116A-3芯片數(shù)據(jù)手冊(cè)中:
信號(hào)時(shí)序
IIC作為同步串行總線,可以認(rèn)為有兩個(gè)同步信號(hào),第一個(gè)是通信起始、結(jié)束標(biāo)志,告知掛在IIC總線上的從機(jī)設(shè)備,何時(shí)開(kāi)始通信并且何時(shí)結(jié)束;第二個(gè)是同步時(shí)鐘信號(hào)SCL,收發(fā)雙方進(jìn)行數(shù)據(jù)的交互時(shí),都是基于SCL的跳變進(jìn)行逐bit輸出和采樣的。
起始標(biāo)志
處于空閑狀態(tài)下時(shí),SCL和SDA都是高電平,某一時(shí)刻,SDA拉低,則此刻認(rèn)為開(kāi)始IIC傳輸。
結(jié)束標(biāo)志
即將完成數(shù)據(jù)傳輸時(shí),在SCL處于高電平時(shí),將SDA強(qiáng)制拉高,則此刻認(rèn)為結(jié)束IIC傳輸。
數(shù)據(jù)輸出
在SCL為低電平時(shí),發(fā)送方根據(jù)傳輸?shù)臄?shù)據(jù)內(nèi)容逐bit改變SDA的電平。
數(shù)據(jù)采樣
在SCL為高電平時(shí),接收方讀取SDA的電平逐bit接收,并逐8個(gè)bit組成1個(gè)Byte。
應(yīng)答ACK
ACK表示在8bit數(shù)據(jù)后的第9個(gè)時(shí)鐘的高電平期間,SDA保持低電平。
應(yīng)答NACK
NACK表示在8bit數(shù)據(jù)后的第9個(gè)時(shí)鐘的高電平期間,SDA保持高電平。
關(guān)于理解和記憶,推薦分組記憶:
SCL高電平時(shí),SDA拉低開(kāi)始,SDA拉高結(jié)束;
SCL高電平時(shí),接收方采樣SDA管腳電平;SCL低電平時(shí),發(fā)送方改變SDA管腳電平;
應(yīng)答位,SDA低電平表示ACK,SDA高電平表示NACK。
以上就是IIC在通信過(guò)程中,可能出現(xiàn)的信號(hào)時(shí)序狀態(tài)特征。
如果要和SPI接口對(duì)比,我們發(fā)現(xiàn),在IIC總線上掛了多個(gè)從設(shè)備,某個(gè)時(shí)刻某個(gè)主機(jī)要與某個(gè)從設(shè)備通信時(shí),卻不像SPI那樣有單獨(dú)一個(gè)片選信號(hào)管腳SS。
那么IIC要實(shí)現(xiàn)主機(jī)與指定從機(jī)的通信,需要每次開(kāi)始通信時(shí),主機(jī)會(huì)先把指定從機(jī)設(shè)備的地址通過(guò)接口發(fā)出,這樣一來(lái),對(duì)應(yīng)的從機(jī)設(shè)備即可被選中,才能進(jìn)行后續(xù)的通信操作。
類似的,每個(gè)具有IIC接口的外圍器件,其數(shù)據(jù)手冊(cè)中都有關(guān)于地址的配置:
SHT20溫濕度芯片地址配置:
BS116-3觸摸芯片地址配置: