ARM要和傳感器等芯片進行通信,需要物理線路.用于傳送數據的物理線路,稱為總線.根據傳送的數據速度 物理線路的多少,有很多不同的總線.最常見的是 串口總線 SPI總線 I2C總線 USB總線等.
我們簡單的介紹一下串口和i2c接口.
串口,UART,有兩根線,分別為TX RX.TX用于發送本地數據到對方,RX用于接收對方數據到本地.所以他是一個雙向通信的總線,并且收發可以同時進行,又稱為 雙工通信.
下圖是UART的通信協議:
串口的速度,一般為9600bps 115200bps,這個速度和我們2G時代移動網上速度基本一種,可以滿足傳送文本數據的要求.適用在一些傳感器數據收發上,不適用于語音 視頻 和UI顯示等應用.
i2c接口同樣有兩根線構成,分為數據線 地址線.因為數據線只有一根,所以一個時刻只能單向的發送數據,稱為 半雙工. 這兩根線上可以掛載很多從設備,主設備為了區分每一個從該設備,要求每一個從設備都有一個唯一的從地址.
主設備如何控制從設備,和從設備進行數據交互呢?每個從設備內部都有很多寄存器,主設備讀寫這些寄存器即可完成對設備的控制. 寄存器的內容,需要查看該芯片的datasheet,里面會有廠家的詳細描述.
下圖是i2c的連接圖:
i2c接口的速度分為100kbps,400kbps,3.4Mbps,速度比串口要快很多,但是也僅限于文本通信,對語音傳輸還是達不到要求的.
下圖是寫一個寄存器的過程:
下圖是讀一個寄存器的過程:要注意 讀過程包含寫過程和讀過程.