ofbiz做的網(wǎng)站網(wǎng)絡(luò)輿情監(jiān)控
本文代碼使用 HAL 庫。
文章目錄
- 前言
- 一、什么是IIC協(xié)議
- 二、IIC信號
- 三、IIC協(xié)議的通訊時序
- 1. 寫操作
- 2. 讀操作
- 四、上拉電阻作用
- 總結(jié)
前言
從這篇文章開始為大家介紹一些通信協(xié)議,包括 UART,SPI,IIC等。
UART串口通訊協(xié)議
SPI通信協(xié)議
一、什么是IIC協(xié)議
- IIC協(xié)議概念:
IIC 協(xié)議是由 SDA 數(shù)據(jù)線 和 SCL時鐘線 組成的串行總線,可以發(fā)送接收數(shù)據(jù),采用半雙工的通信方式。每個掛在總線上的器件都有唯一的地址,通常一個主機多個從機。
- 數(shù)據(jù)線 :
完成數(shù)據(jù)的收發(fā)
。 - 時鐘線:
完成數(shù)據(jù)的同步傳輸。
位速在標(biāo)準(zhǔn)模式下可達(dá) 100kbits/s, 在快速模式下可達(dá) 400kbits/s, 在高速模式下可達(dá) 3.4Mbits/s.
- IIC 系統(tǒng)結(jié)構(gòu):
(1). 在一個芯片內(nèi)部,有一個或者多個 IIC控制器(主機)。
(2). 在一個 IIC 控制器上,可以連接一個或多個 IIC設(shè)備(從機)。
(3). IIC 總線只需要 2 根線:時鐘線 SCL, 數(shù)據(jù)線 SDA。
(4). 在 IIC總線的SCL,SDA 上都有上拉電阻。
(5). 時鐘線只能由主機產(chǎn)生,作用給從機,從而完成數(shù)據(jù)的收發(fā)同步。
二、IIC信號
IIC協(xié)議中數(shù)據(jù)的傳輸單位是字節(jié)。要用到 9 個時鐘。前 8 個時鐘用來傳輸數(shù)據(jù),第 9 個時鐘用來傳輸信號。傳輸數(shù)據(jù)時,先傳輸最高位
。
- 空閑狀態(tài)
當(dāng)總線上的SDA 和 SCL 兩條信號線同時處于高電平時,便于空閑狀態(tài)。當(dāng)不傳輸數(shù)據(jù)時,SDA和SCL就會被上拉電阻拉高,便進(jìn)入了空閑狀態(tài)。
- 開啟信號
當(dāng)SCL為高電平期間,SDA由高變低的跳變;便是總線的起始信號,只能由主機發(fā)起,且在空閑狀態(tài)下才可以啟動。
- 停止信號
當(dāng) SCL為高電平期間,SDA 由低到高的跳變,便是總線的停止信號,表示數(shù)據(jù)已經(jīng)傳輸完成。
- 響應(yīng)信號
接收器在接收到 8 位數(shù)據(jù)后,在第 9個周期,拉低 SDA。當(dāng)接收方接收該字節(jié)成功,便會輸出一個 ACK應(yīng)答信號。
當(dāng)SDA 為高電平,表示為非應(yīng)答信號 NACK
,當(dāng) SDA為低電平,表示為應(yīng)答信號 ACK
。
三、IIC協(xié)議的通訊時序
IIC總線上的設(shè)備可以 發(fā)送/接收 數(shù)據(jù)。
1. 寫操作
流程如下:
- 主芯片要發(fā)送一個起始信號 start 。
- 然后主設(shè)備發(fā)送一個設(shè)備地址(用來確定是往哪個從機寫數(shù)據(jù)),方向(0表示讀,1表示寫)。
- 從設(shè)備回應(yīng)(用來確定從設(shè)備是否存在),然后就可以傳輸數(shù)據(jù)。
- 主設(shè)備發(fā)送一個字節(jié)的數(shù)據(jù)給從設(shè)備,等待回應(yīng)。
- 每傳輸一字節(jié)數(shù)據(jù),接收方都要有一個回應(yīng)信號(用來確定數(shù)據(jù)是否接收完成),然后再傳輸下一個數(shù)據(jù)。
- 數(shù)據(jù)傳輸完成后,主芯片就會發(fā)送一個停止信號。
2. 讀操作
流程操作:
- 主設(shè)備發(fā)送一個起始信號。
- 主設(shè)備發(fā)出一個從設(shè)備地址(用來確定從哪個設(shè)備讀數(shù)據(jù)),方向(0表示寫,1表示讀)。
- 從設(shè)備回應(yīng)(用來確定從設(shè)備是否存在),然后就可以傳輸數(shù)據(jù)。
- 從設(shè)備發(fā)送一字節(jié)數(shù)據(jù)給主設(shè)備,等待回應(yīng)。
- 每傳輸一字節(jié)數(shù)據(jù),接收方要有一個回應(yīng)信號(用來確定數(shù)據(jù)是否接收成功),然后再傳輸下一個數(shù)據(jù)。
- 數(shù)據(jù)發(fā)送完成后,主設(shè)備會發(fā)送一個停止信號。
四、上拉電阻作用
-
IIC 總線的SCL,SDA 上都有上拉電阻。
外接2個上拉電阻的作用:當(dāng)總線處于空閑狀態(tài)時,總線為高電平狀態(tài)
。 -
問 :SCL 為何要使用上拉電阻?
答 :在第 9 個時鐘后,如果有某一方設(shè)備需要更多的時間來處理數(shù)據(jù),它可以一直驅(qū)動三極管把 SCL 拉低。當(dāng) SCL為低電平時,其他設(shè)備都不使用 IIC總線;只有當(dāng) SCL從低電平變?yōu)楦唠娖降臅r候,IIC總線才能夠被使用。
當(dāng)該設(shè)備處理數(shù)據(jù)完畢,就緒時,就不再驅(qū)動三極管。這時上拉電阻把SCL變?yōu)楦唠娖?/mark>,其他設(shè)備就可以繼續(xù)使用 IIC總線了。
總結(jié)
下一篇文章為大家介紹 SPI 和 UART 通信協(xié)議。