眾多的通訊協(xié)議概念,其實(shí)可以分成4個(gè)大概念,也就是物理接口、電平標(biāo)準(zhǔn)、通訊協(xié)議、總線。
1. 物理接口
物理接口是設(shè)備間物理連接的硬件規(guī)范,包括連接器類型(如USB、HDMI)、引腳排列、機(jī)械結(jié)構(gòu)等。一般常說的就是指連接器類型。
它能確保設(shè)備在物理層正確連接,提供信號傳輸?shù)奈锢硗ǖ馈?
比如USB Type-A、RJ45網(wǎng)口、HDMI接口。
2. 電平標(biāo)準(zhǔn)
電平標(biāo)準(zhǔn)規(guī)定信號電壓范圍,用于區(qū)分邏輯狀態(tài)(如0和1),確保發(fā)送端和接收端的電氣兼容性。
作用:定義信號的電氣特性,避免誤碼或硬件損壞。
如TTL(0V/5V)、RS-232(±3~15V)、LVDS(低電壓差分信號)。
3. 通訊協(xié)議
通訊協(xié)議是數(shù)據(jù)傳輸?shù)倪壿嬕?guī)則,包括數(shù)據(jù)格式、時(shí)序、錯(cuò)誤校驗(yàn)、尋址等。確保數(shù)據(jù)按約定規(guī)則打包、傳輸和解析。例如UART(異步串行協(xié)議)、SPI(同步串行協(xié)議)、TCP/IP(網(wǎng)絡(luò)協(xié)議)。
4. 總線
總線是共享的通信通道,整合物理接口、電平標(biāo)準(zhǔn)和協(xié)議,允許多設(shè)備通過同一線路通信。主要作用是提供完整的通信架構(gòu),協(xié)調(diào)多設(shè)備的數(shù)據(jù)交換。
物理接口和電平標(biāo)準(zhǔn)屬于底層硬件層(物理層),定義如何連接及信號如何表示。
通訊協(xié)議屬于邏輯層、應(yīng)用層,規(guī)定數(shù)據(jù)傳輸規(guī)則。
總線是綜合概念,整合前三者形成完整的通信系統(tǒng)。
整個(gè)協(xié)作流程就是:
設(shè)備通過物理接口連接,按電平標(biāo)準(zhǔn)傳輸信號。通訊協(xié)議確保數(shù)據(jù)被正確封裝、尋址和校驗(yàn)。總線管理共享通道,協(xié)調(diào)多設(shè)備通信(如仲裁機(jī)制、沖突避免)??偩€的實(shí)現(xiàn)需依賴物理接口(連接方式)、電平標(biāo)準(zhǔn)(信號電氣特性)和通訊協(xié)議(數(shù)據(jù)規(guī)則)。
同一物理接口可能支持不同電平標(biāo)準(zhǔn)和協(xié)議(如RS-232與RS-485共用DB9接口,但電平及協(xié)議不同)。
同一協(xié)議可適配不同物理接口和電平(如Modbus可在RS-485或TCP/IP上運(yùn)行)。
眾多的通訊協(xié)議概念,其實(shí)可以分成4個(gè)大概念,也就是物理接口、電平標(biāo)準(zhǔn)、通訊協(xié)議、總線。
1. 物理接口
物理接口是設(shè)備間物理連接的硬件規(guī)范,包括連接器類型(如USB、HDMI)、引腳排列、機(jī)械結(jié)構(gòu)等。一般常說的就是指連接器類型。
它能確保設(shè)備在物理層正確連接,提供信號傳輸?shù)奈锢硗ǖ馈?
比如USB Type-A、RJ45網(wǎng)口、HDMI接口。
2. 電平標(biāo)準(zhǔn)
電平標(biāo)準(zhǔn)規(guī)定信號電壓范圍,用于區(qū)分邏輯狀態(tài)(如0和1),確保發(fā)送端和接收端的電氣兼容性。
作用:定義信號的電氣特性,避免誤碼或硬件損壞。
如TTL(0V/5V)、RS-232(±3~15V)、LVDS(低電壓差分信號)。
3. 通訊協(xié)議
通訊協(xié)議是數(shù)據(jù)傳輸?shù)倪壿嬕?guī)則,包括數(shù)據(jù)格式、時(shí)序、錯(cuò)誤校驗(yàn)、尋址等。確保數(shù)據(jù)按約定規(guī)則打包、傳輸和解析。例如UART(異步串行協(xié)議)、SPI(同步串行協(xié)議)、TCP/IP(網(wǎng)絡(luò)協(xié)議)。
4. 總線
總線是共享的通信通道,整合物理接口、電平標(biāo)準(zhǔn)和協(xié)議,允許多設(shè)備通過同一線路通信。主要作用是提供完整的通信架構(gòu),協(xié)調(diào)多設(shè)備的數(shù)據(jù)交換。
1.1.板上通信接口角色
在嵌入式系統(tǒng)中,板上通信接口扮演著至關(guān)重要的角色,它們是集成電路與其他外圍設(shè)備進(jìn)行交互的關(guān)鍵通路或總線。這些接口負(fù)責(zé)在系統(tǒng)內(nèi)部傳遞數(shù)據(jù)和控制信號,從而確保各個(gè)組件能夠協(xié)同工作。
1.2.常用通信接口
常用的板上通信接口包括I2C、SPI、UART以及1-Wire等。接下來,我們將詳細(xì)探討這些接口的工作原理和應(yīng)用場景。
2.I2C總線
2.1.總線特點(diǎn)與結(jié)構(gòu)
I2C總線,一種同步、雙向、半雙工的兩線式串行接口總線,由Philips半導(dǎo)體公司在20世紀(jì)80年代初研發(fā)并投入市場。其設(shè)計(jì)初衷是為微處理器/微控制器系統(tǒng)與電視機(jī)外圍芯片之間的連接提供簡便的方法。該總線包含兩條線路:串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA。SCL線負(fù)責(zé)產(chǎn)生同步時(shí)鐘脈沖,而SDA線則用于在設(shè)備間傳輸串行數(shù)據(jù)。
I2C總線是共享的,允許多個(gè)I2C設(shè)備連接至同一系統(tǒng)。在這些設(shè)備中,既可以充當(dāng)主設(shè)備來控制通信,也可以作為從設(shè)備來響應(yīng)主設(shè)備的命令。無論是主設(shè)備還是從設(shè)備,都既可以是發(fā)送方也可以是接收方,但同步時(shí)鐘信號的生成則專由主設(shè)備負(fù)責(zé)。此外,I2C總線還支持多個(gè)主設(shè)備的并存。
2.2.數(shù)據(jù)傳輸機(jī)制
關(guān)于起始信號的具體定義:在SCL線保持高電平的同時(shí),主機(jī)將SDA線拉至低電平,這標(biāo)志著數(shù)據(jù)傳輸?shù)拈_始。而從機(jī)地址的發(fā)送與讀寫控制位的設(shè)置則遵循一定規(guī)則:主機(jī)發(fā)送的第一個(gè)字節(jié)包含從機(jī)的地址和讀寫控制位。
數(shù)據(jù)傳輸:在從機(jī)地址發(fā)送完畢后,可能會(huì)跟隨一些特定指令,這取決于從機(jī)的實(shí)現(xiàn)。隨后,數(shù)據(jù)傳輸開始,可以由主機(jī)或從機(jī)中的任一方發(fā)送。每次傳輸?shù)臄?shù)據(jù)都是8位,且字節(jié)數(shù)不受限制。
停止條件:停止條件是在SDA線保持低電平的同時(shí),主機(jī)將SCL線拉高并維持這一高電平狀態(tài),然后再將SDA線拉高,從而表示數(shù)據(jù)傳輸?shù)慕Y(jié)束。
3.SPI總線
3.1.總線結(jié)構(gòu)與使用
SPI總線,最早由Motorola公司提出,是一種同步、雙向、全雙工的4線式串行接口總線。它由一個(gè)主設(shè)備和多個(gè)從設(shè)備構(gòu)成,其中特別需要注意的是,在任意時(shí)刻僅允許一個(gè)主設(shè)備處于激活狀態(tài),這意味著系統(tǒng)中可以存在多個(gè)SPI主設(shè)備。SPI總線廣泛應(yīng)用于EEPROM、FLASH、實(shí)時(shí)時(shí)鐘、AD轉(zhuǎn)換器、數(shù)字信號處理器以及數(shù)字信號解碼器等設(shè)備之間的通信。
從設(shè)備的時(shí)鐘信號由主設(shè)備通過SCLK提供,而MOSI和MISO則依據(jù)此脈沖進(jìn)行數(shù)據(jù)傳輸。
3.2.通信時(shí)序與模式
SPI總線配備了4條信號線,包括SCK(時(shí)鐘信號),MOSI(主設(shè)備輸出從設(shè)備輸入),MISO(主設(shè)備輸入從設(shè)備輸出)和CS(片選信號)。
主設(shè)備通過操控CS引腳來選擇從設(shè)備。在任何給定的時(shí)刻,只有一個(gè)SPI主設(shè)備的CS引腳處于激活狀態(tài),與之相連的從設(shè)備此時(shí)可與主設(shè)備進(jìn)行通信。這種**“一主多從”結(jié)構(gòu)**在很大程度上提升了系統(tǒng)的擴(kuò)展性和靈活性。
4.UART通信協(xié)議
UART,即通用異步收發(fā)傳輸器,作為一種異步串口通信協(xié)議,其工作原理是逐位傳輸數(shù)據(jù)。在應(yīng)用程序開發(fā)中,它常被用作數(shù)據(jù)總線,因其支持高效的數(shù)據(jù)傳輸。異步數(shù)據(jù)傳輸中,UART的簡單高效機(jī)制使其在許多嵌入式系統(tǒng)和微控制器中得到了廣泛的應(yīng)用。
5.1-Wire接口與并行接口
5.1.1-Wire接口特點(diǎn)
1-Wire接口,又稱Dallas 1-Wire協(xié)議,是由Maxim Dallas半導(dǎo)體公司精心研發(fā)的一種異步半雙工通信協(xié)議。該接口能夠在信號線上同時(shí)傳輸能量。這樣的特性使得1-Wire接口不僅可以連接一個(gè)主設(shè)備,還能夠允許一個(gè)或多個(gè)從設(shè)備與之相連。
5.2.并行接口結(jié)構(gòu)和使用
并行接口,常用于系統(tǒng)與外圍設(shè)備間的通信。這些外圍設(shè)備通過存儲(chǔ)器映射至系統(tǒng)主控端。只要嵌入式系統(tǒng)主控處理器/控制器配備并行總線,支持并行總線的設(shè)備便可直接與之相連。外圍設(shè)備經(jīng)存儲(chǔ)器映射至主控處理器,從而可訪問特定地址范圍。
四種接口,每個(gè)都有合適的應(yīng)用場景,對硬件端口的占用、對軟件的控制要求、通信效率也不相同。尤其前3種屬于常用協(xié)議,一般都支持硬件接口,廠家也一般提供hal庫,對軟件開發(fā)人員的要求逐漸降低。這也導(dǎo)致代碼應(yīng)用很溜,實(shí)際底層原理略微欠缺,一旦通信異常或者有特殊需求就無從下手。如使用GPIO模擬出UART,使用SPI實(shí)現(xiàn)AT功能。