電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 16|回復(fù): 0
收起左側(cè)

硬件面試常見(jiàn)問(wèn)題-硬件通信協(xié)議(UART,SPI,IIC,RS232,RS485)、同步和異步通信

[復(fù)制鏈接]

317

主題

317

帖子

3149

積分

四級(jí)會(huì)員

Rank: 4

積分
3149
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-12-13 11:55:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
擊左上方藍(lán)色“一口Linux”,選擇“設(shè)為星標(biāo)
第一時(shí)間看干貨文章
?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式知識(shí)點(diǎn)-思維導(dǎo)圖-免費(fèi)獲取?【就業(yè)】一個(gè)可以寫(xiě)到簡(jiǎn)歷的基于Linux物聯(lián)網(wǎng)綜合項(xiàng)目?【就業(yè)】找工作簡(jiǎn)歷模版






動(dòng)圖來(lái)源:www.parlezvoustech.com
1、常見(jiàn)的硬件通信協(xié)議
串行通信協(xié)議UART (Universal Asynchronous Receiver Transmitter):
一種異步串行通信協(xié)議,不需要時(shí)鐘信號(hào),常用于簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)通信。
SPI (Serial Peripheral Interface):
一種同步串行通信協(xié)議,通常用于微控制器與傳感器、存儲(chǔ)設(shè)備等外部設(shè)備之間的高速通信。
包含一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,通過(guò)時(shí)鐘信號(hào)同步數(shù)據(jù)傳輸。
I2C (Inter-Integrated Circuit):
一種同步多主多從串行通信協(xié)議,常用于低速設(shè)備間的短距離通信。
使用兩根信號(hào)線(SDA和SCL)進(jìn)行數(shù)據(jù)傳輸和時(shí)鐘同步。
RS-232:
一種早期的串行通信標(biāo)準(zhǔn),通常用于計(jì)算機(jī)與外部設(shè)備(如調(diào)制解調(diào)器和打印機(jī))之間的連接。
使用單端信號(hào)傳輸,支持較長(zhǎng)的傳輸距離。
RS-485:
一種改進(jìn)的串行通信標(biāo)準(zhǔn),適用于多點(diǎn)通信系統(tǒng),支持更長(zhǎng)的傳輸距離和更高的數(shù)據(jù)速率。
使用差分信號(hào)傳輸,提高抗干擾能力。
[/ol]并行通信協(xié)議PCI (Peripheral Component Interconnect ):
一種高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn),廣泛用于計(jì)算機(jī)內(nèi)部的各種組件之間(如顯卡、存儲(chǔ)設(shè)備)的連接。
提供較高的數(shù)據(jù)傳輸速率和低延遲。
ATA/IDE (Advanced Technology Attachment/Integrated Drive Electronics):
一種早期的硬盤(pán)驅(qū)動(dòng)器接口標(biāo)準(zhǔn),使用并行數(shù)據(jù)傳輸方式。
SATA (Serial ATA):
ATA接口的串行版本,廣泛用于連接硬盤(pán)驅(qū)動(dòng)器和SSD,具有更高的數(shù)據(jù)傳輸速率。
[/ol]無(wú)線通信協(xié)議Bluetooth:
一種短距離無(wú)線通信協(xié)議,常用于移動(dòng)設(shè)備、計(jì)算機(jī)和外圍設(shè)備之間的數(shù)據(jù)傳輸。
Wi-Fi (Wireless Fidelity):
一種常用的無(wú)線局域網(wǎng)(WLAN)技術(shù),支持設(shè)備之間的無(wú)線數(shù)據(jù)傳輸。
Zigbee:
一種低功耗、低數(shù)據(jù)速率的無(wú)線通信協(xié)議,常用于物聯(lián)網(wǎng)(IoT)設(shè)備之間的通信。
NFC (Near Field Communication):
一種短距離無(wú)線通信技術(shù),常用于移動(dòng)支付、訪問(wèn)控制等應(yīng)用。
[/ol]工業(yè)通信協(xié)議Modbus:
一種廣泛應(yīng)用于工業(yè)自動(dòng)化系統(tǒng)的串行通信協(xié)議,支持主從通信模式。
CAN (Controller Area Network):
一種用于汽車(chē)和工業(yè)自動(dòng)化中的串行通信協(xié)議,支持多主模式和高可靠性數(shù)據(jù)傳輸。
PROFINET:
一種基于以太網(wǎng)的工業(yè)通信協(xié)議,廣泛應(yīng)用于工業(yè)自動(dòng)化和控制系統(tǒng)。
[/ol]其他常見(jiàn)協(xié)議USB (Universal Serial Bus):
一種廣泛應(yīng)用于計(jì)算機(jī)和外部設(shè)備之間的通用串行通信協(xié)議,支持熱插拔和即插即用。
HDMI (High-Definition Multimedia Interface):
一種數(shù)字視頻和音頻傳輸標(biāo)準(zhǔn),廣泛用于高清電視、顯示器和其他多媒體設(shè)備。
Ethernet:
一種用于局域網(wǎng)(LAN)的有線通信標(biāo)準(zhǔn),支持高速數(shù)據(jù)傳輸和多點(diǎn)通信。
[/ol]2、同步通信和異步通信?

同步和異步通信是兩種不同的數(shù)據(jù)傳輸方式,主要區(qū)別在于對(duì)時(shí)鐘信號(hào)的使用。
同步通信特點(diǎn):
共享時(shí)鐘信號(hào):發(fā)送端和接收端共享一個(gè)時(shí)鐘信號(hào),用于同步數(shù)據(jù)傳輸。
數(shù)據(jù)同步:每個(gè)數(shù)據(jù)位的傳輸都由時(shí)鐘信號(hào)引導(dǎo),接收端根據(jù)時(shí)鐘信號(hào)確定數(shù)據(jù)讀取時(shí)刻。
優(yōu)點(diǎn):
高效傳輸:由于時(shí)鐘同步,數(shù)據(jù)傳輸速率較高。
可靠性強(qiáng):時(shí)鐘信號(hào)使數(shù)據(jù)的接收和發(fā)送更加精確。
缺點(diǎn):
復(fù)雜性:需要額外的時(shí)鐘線,電路設(shè)計(jì)復(fù)雜。
距離限制:時(shí)鐘信號(hào)的準(zhǔn)確性可能會(huì)隨著距離增加而降低。
應(yīng)用場(chǎng)景:
SPI、I2C(雖然I2C也支持異步特性,但其時(shí)鐘線用于同步)。
異步通信特點(diǎn):
無(wú)共享時(shí)鐘:發(fā)送端和接收端不共享時(shí)鐘信號(hào),而是使用起始位和停止位來(lái)標(biāo)識(shí)數(shù)據(jù)幀。
自包含時(shí)序:每個(gè)數(shù)據(jù)幀通過(guò)自身的起始和停止信號(hào)進(jìn)行同步。
優(yōu)點(diǎn):
簡(jiǎn)單性:無(wú)需時(shí)鐘線,減小了硬件復(fù)雜度。
靈活性:適合低速、長(zhǎng)距離通信。
缺點(diǎn):
效率稍低:由于需要添加起始和停止位,實(shí)際數(shù)據(jù)傳輸速率可能降低。
誤差累積:長(zhǎng)時(shí)間傳輸可能出現(xiàn)同步誤差。
應(yīng)用場(chǎng)景:
UART、RS-232。

同步通信適用于需要高效、高速數(shù)據(jù)傳輸?shù)膱?chǎng)景,但通常需要額外的硬件支持。
異步通信適合簡(jiǎn)單低速應(yīng)用,易于實(shí)現(xiàn)和調(diào)試。
3、UART串口通信?
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)是一種用于串行通信的硬件設(shè)備。UART用于將數(shù)據(jù)串行地傳輸和接收,廣泛應(yīng)用于計(jì)算機(jī)與外圍設(shè)備之間的數(shù)據(jù)通信。
1. 基礎(chǔ)概念:異步通信: 沒(méi)有時(shí)鐘信號(hào),發(fā)送方和接收方必須約定好波特率(傳輸速率)。
波特率: 每秒傳輸?shù)奈粩?shù),一般有9600、115200等常見(jiàn)波特率。
數(shù)據(jù)幀結(jié)構(gòu): 包括開(kāi)始位、數(shù)據(jù)位、奇偶校驗(yàn)位(可選)和停止位。
2. 數(shù)據(jù)幀結(jié)構(gòu):協(xié)議:數(shù)據(jù)包由起始位、數(shù)據(jù)幀、奇偶校驗(yàn)位和停止位組成。

A. 起始位:先發(fā)出一個(gè)邏輯"0"的信號(hào),表示傳輸字符的開(kāi)始B. 數(shù)據(jù)位:緊接著起始位之后。數(shù)據(jù)位的個(gè)數(shù)可以是4、5、6、7、8等,構(gòu)成一個(gè)字符,從最低位開(kāi)始傳送。C. 奇偶校驗(yàn)位:數(shù)據(jù)位加上這一位后,使得"1"的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),以此來(lái)校驗(yàn)資料傳送的正確性。D. 停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志。可以是1位、1.5位、2位的高電平。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。E. 空閑位:處于邏輯"1"狀態(tài),表示當(dāng)前線路上沒(méi)有資料傳送。F. 波特率:衡量數(shù)據(jù)傳送速率的指標(biāo)。表示每秒鐘傳送的比特位。3. 通信方式:全雙工: 可以同時(shí)進(jìn)行發(fā)送和接收(兩個(gè)獨(dú)立的通道)。
半雙工: 發(fā)送和接收不能同時(shí)進(jìn)行。
單工: 只能單方向傳輸數(shù)據(jù)。
4. 實(shí)現(xiàn)方式:硬件實(shí)現(xiàn): 通過(guò)MCU或?qū)S玫腢ART芯片(如MAX232)實(shí)現(xiàn)。
軟件實(shí)現(xiàn): 通過(guò)軟件模擬UART通信,適用于不具備硬件UART模塊的系統(tǒng)。
5. 應(yīng)用:嵌入式系統(tǒng): 如單片機(jī)與傳感器、模塊之間的通信。
計(jì)算機(jī)外設(shè): 如與鼠標(biāo)、鍵盤(pán)、調(diào)制解調(diào)器等的連接。
調(diào)試和編程: 通過(guò)串口調(diào)試嵌入式設(shè)備或下載程序。

4、IIC通信
I2C(Inter-Integrated Circuit)是一種常用的串行通信協(xié)議,設(shè)計(jì)用于短距離互連低速設(shè)備。由飛利浦公司(現(xiàn)NXP)在20世紀(jì)80年代開(kāi)發(fā),I2C現(xiàn)在廣泛應(yīng)用于嵌入式系統(tǒng)中,用于連接微控制器、傳感器、顯示器和其他外圍設(shè)備。




I2C 基本概念I2C是一種多主從架構(gòu)的雙線串行總線系統(tǒng),由主設(shè)備和從設(shè)備組成。通信通過(guò)兩條線進(jìn)行:
SCL(Serial Clock Line): 時(shí)鐘線,由主設(shè)備生成時(shí)鐘信號(hào)。
SDA(Serial Data Line): 數(shù)據(jù)線,用于傳輸數(shù)據(jù)。
數(shù)據(jù)傳輸I2C使用7位或10位地址進(jìn)行設(shè)備尋址,傳輸數(shù)據(jù)以字節(jié)為單位,具體傳輸步驟如下:
起始條件(Start condition):主設(shè)備拉低SDA線,然后拉低SCL線,表示通信的開(kāi)始。
地址傳輸:主設(shè)備發(fā)送從設(shè)備的地址,并指示讀/寫(xiě)操作。
數(shù)據(jù)傳輸:主從設(shè)備之間的數(shù)據(jù)傳輸。每個(gè)字節(jié)后面都有一個(gè)確認(rèn)位(ACK/NACK)。
停止條件(Stop condition):主設(shè)備拉高SCL線,然后拉高SDA線,表示通信的結(jié)束。
[/ol]I2C設(shè)備地址每個(gè)I2C從設(shè)備都有唯一的7位或10位地址。7位地址通常使用更廣泛,實(shí)際傳輸時(shí),地址會(huì)左移一位,最右邊一位表示讀/寫(xiě)操作(0表示寫(xiě),1表示讀)。
I2C通信協(xié)議開(kāi)始條件(Start Condition): 主設(shè)備將SDA從高電平拉到低電平,同時(shí)SCL保持高電平。
停止條件(Stop Condition): SCL為高電平時(shí),SDA從低電平拉到高電平。
字節(jié)數(shù)據(jù)傳輸: 每傳輸一個(gè)字節(jié)數(shù)據(jù)后,接收方需發(fā)送一個(gè)確認(rèn)位(ACK)。
讀/寫(xiě)操作: 主設(shè)備發(fā)送設(shè)備地址的同時(shí)緊接著一個(gè)讀/寫(xiě)位,0表示寫(xiě),1表示讀。
I2C優(yōu)點(diǎn)簡(jiǎn)單的硬件接口:只需兩根線即可實(shí)現(xiàn)通信。
多主從架構(gòu):允許多個(gè)主設(shè)備和從設(shè)備共用一條總線。
靈活性:支持多種設(shè)備共同使用,且設(shè)備可以熱插拔。
I2C缺點(diǎn)速率較低:標(biāo)準(zhǔn)模式下最大速率為100kHz,快速模式為400kHz,更高的速率(高達(dá)5MHz)需要特殊的高速度模式。
距離受限:通常適用于PCB內(nèi)部或短距離通信。
總線競(jìng)爭(zhēng):總線空閑時(shí),多個(gè)主設(shè)備可能會(huì)嘗試同時(shí)啟動(dòng)通信。
5、SPI通信?

SPI(Serial Peripheral Interface,串行外圍設(shè)備接口)是一種用于短距離通信的同步串行通信協(xié)議。它由Motorola公司在20世紀(jì)80年代開(kāi)發(fā),廣泛應(yīng)用于嵌入式系統(tǒng)中,用于微控制器與傳感器、存儲(chǔ)設(shè)備、顯示器以及其他外設(shè)的通信。
SPI 基本概念
SPI使用主從架構(gòu),其通信通過(guò)至少四條線進(jìn)行:
MOSI(Master Out Slave In): 主設(shè)備輸出,從設(shè)備輸入。MISO(Master In Slave Out): 主設(shè)備輸入,從設(shè)備輸出。SCLK(Serial Clock): 時(shí)鐘線,由主設(shè)備生成時(shí)鐘信號(hào)。SS/CS(Slave Select/Chip Select): 從設(shè)備選擇線,由主設(shè)備控制,以選擇具體的從設(shè)備。數(shù)據(jù)傳輸
SPI是一種全雙工通信協(xié)議,數(shù)據(jù)在時(shí)鐘的控制下從主設(shè)備到從設(shè)備(通過(guò)MOSI),同時(shí)從從設(shè)備到主設(shè)備(通過(guò)MISO)。具體傳輸步驟如下:
主設(shè)備驅(qū)動(dòng)CS線低電平,選擇從設(shè)備。主設(shè)備生成SCLK時(shí)鐘信號(hào)。數(shù)據(jù)通過(guò)MOSI和MISO線同步傳輸。根據(jù)時(shí)鐘的上升沿或下降沿采樣數(shù)據(jù)。傳輸完成后,主設(shè)備驅(qū)動(dòng)CS線高電平,結(jié)束通信。[/ol]
SPI時(shí)鐘相位和極性
SPI的時(shí)鐘相位(CPHA)和時(shí)鐘極性(CPOL)定義了數(shù)據(jù)采樣的時(shí)機(jī)和時(shí)鐘信號(hào)的初始狀態(tài)。根據(jù)這兩個(gè)參數(shù),可以有四種模式:





CPOL—— 0 :  SCLK空閑時(shí)低電平;1 : SCLK空閑時(shí)高電平CPHA—— 0 : 奇數(shù)邊沿采集數(shù)據(jù);  1: 偶數(shù)邊沿采集數(shù)據(jù)

CPOL = 0, CPHA = 0: 時(shí)鐘信號(hào)空閑時(shí)為低電平,在第一個(gè)上升沿采樣數(shù)據(jù)。CPOL = 0, CPHA = 1: 時(shí)鐘信號(hào)空閑時(shí)為低電平,在第一個(gè)下降沿采樣數(shù)據(jù)。CPOL = 1, CPHA = 0: 時(shí)鐘信號(hào)空閑時(shí)為高電平,在第一個(gè)下降沿采樣數(shù)據(jù)。CPOL = 1, CPHA = 1: 時(shí)鐘信號(hào)空閑時(shí)為高電平,在第一個(gè)上升沿采樣數(shù)據(jù)。SPI 優(yōu)點(diǎn)高速傳輸:比I2C通信速率更高,適用于高數(shù)據(jù)速率的傳輸。全雙工通信:可以同時(shí)發(fā)送和接收數(shù)據(jù)。簡(jiǎn)單的硬件實(shí)現(xiàn):不需要復(fù)雜的仲裁機(jī)制。SPI 缺點(diǎn)線數(shù)較多:需要至少四條線,增加了布線復(fù)雜度。缺乏標(biāo)準(zhǔn)化:不同設(shè)備的SPI實(shí)現(xiàn)可能有所差異,需要仔細(xì)閱讀設(shè)備手冊(cè)。6、RS-232外部通信?
RS-232(Recommended Standard 232)是一種串行通信標(biāo)準(zhǔn),最初由EIA(Electronic Industries Association)在20世紀(jì)60年代制定。它廣泛用于計(jì)算機(jī)與外圍設(shè)備(如調(diào)制解調(diào)器、打印機(jī)和工業(yè)設(shè)備)之間的通信。盡管RS-232在現(xiàn)代消費(fèi)電子產(chǎn)品中使用較少,但在工業(yè)自動(dòng)化和某些專業(yè)設(shè)備中仍然非常重要。
RS-232 基本概念RS-232為異步串行、全雙工通信,由電子工業(yè)協(xié)會(huì)(EIA)制定,是個(gè)人計(jì)算機(jī)上的通訊接口之一,通常以9個(gè)引腳(DB-9)出現(xiàn),傳輸距離通常十幾米。
RS-232 信號(hào)RS-232接口定義了多種信號(hào)線,其中最常用的是:
TXD(Transmit Data): 發(fā)送數(shù)據(jù)線。
RXD(Receive Data): 接收數(shù)據(jù)線。
GND(Ground): 地線。
RTS(Request to Send): 請(qǐng)求發(fā)送。
CTS(Clear to Send): 清除發(fā)送。
DTR(Data Terminal Ready): 數(shù)據(jù)終端準(zhǔn)備好。
DSR(Data Set Ready): 數(shù)據(jù)集準(zhǔn)備好。
DCD(Data Carrier Detect): 數(shù)據(jù)載波檢測(cè)。
RI(Ring Indicator): 振鈴指示。
RS-232 電氣特性RS-232定義的信號(hào)電壓如下(負(fù)邏輯):
邏輯1(標(biāo)志位): -3V到-15V。
邏輯0(空閑位): +3V到+15V。
任何在-3V到+3V之間的電平都被視為不確定狀態(tài)。
數(shù)據(jù)傳輸RS-232使用異步通信,沒(méi)有時(shí)鐘信號(hào)。數(shù)據(jù)傳輸通過(guò)開(kāi)始位、數(shù)據(jù)位、可選的校驗(yàn)位和停止位構(gòu)成的數(shù)據(jù)幀進(jìn)行:
起始位: 通常為1位,表示數(shù)據(jù)傳輸?shù)拈_(kāi)始,邏輯低電平。
數(shù)據(jù)位: 通常為5到8位,是實(shí)際傳輸?shù)臄?shù)據(jù)。
校驗(yàn)位: 可選,用于錯(cuò)誤檢測(cè),一般有奇校驗(yàn)和偶校驗(yàn)。
停止位: 通常為1或2位,表示一幀數(shù)據(jù)的結(jié)束,邏輯高電平。
[/ol]RS-232 傳輸速度RS-232的波特率(傳輸速率)可以從300bps到115200bps不等,典型值有9600、19200、38400、57600和115200bps。
RS-232 應(yīng)用RS-232廣泛應(yīng)用于:
計(jì)算機(jī)與調(diào)制解調(diào)器: 老式撥號(hào)上網(wǎng)。
工業(yè)自動(dòng)化設(shè)備: PLC、傳感器和控制器之間的通信。
嵌入式系統(tǒng): 用于調(diào)試和通信。
醫(yī)療設(shè)備: 如數(shù)據(jù)采集和監(jiān)控設(shè)備。


7、RS485通信

RS-485是一種用于多點(diǎn)、差分信號(hào)傳輸?shù)拇型ㄐ艠?biāo)準(zhǔn),廣泛應(yīng)用于工業(yè)自動(dòng)化、樓宇自動(dòng)化和其他需要可靠長(zhǎng)距離數(shù)據(jù)傳輸的應(yīng)用中。與RS-232相比,RS-485具有更強(qiáng)的抗干擾能力和更長(zhǎng)的傳輸距離。
RS-485 基本概念差分信號(hào)RS-485使用差分信號(hào)傳輸,它通過(guò)兩根線(A和B)來(lái)傳輸數(shù)據(jù)。差分信號(hào)的優(yōu)勢(shì)在于:
抗干擾能力強(qiáng):由于接收端檢測(cè)的是兩根線之間的電壓差,而不是單端電壓,所以對(duì)噪聲有更好的抵抗力。
傳輸距離長(zhǎng):典型的傳輸距離可以超過(guò)1200米。
多點(diǎn)通信RS-485支持多點(diǎn)通信,即多個(gè)設(shè)備可以連接在同一總線上,常見(jiàn)的配置是主從模式。一個(gè)RS-485總線上可以連接多達(dá)32個(gè)設(shè)備,使用擴(kuò)展器可以連接更多設(shè)備。
RS-485 電氣特性邏輯1:A線電壓低于B線電壓,通常兩線間的電壓差為+(2~6)V。
邏輯0:A線電壓高于B線電壓,通常兩線間的電壓差為-(2~6)V。
對(duì)于驅(qū)動(dòng)器(發(fā)送器),邏輯1(正)是A>B, AB之間電壓為+2~+6V,而邏輯0(負(fù))是A[B]
而對(duì)于接收器,則邏輯1(正)則是B>A,BA之間的電壓不小于200mV,邏輯0則是A>B,BA之間的電壓小于-200mv,即正負(fù)邏輯,電壓絕對(duì)值都大于200mv。
RS-485 通信模式半雙工數(shù)據(jù)只能在一個(gè)方向傳輸,必須通過(guò)協(xié)議或硬件控制來(lái)實(shí)現(xiàn)發(fā)送和接收的切換。
常見(jiàn)連接:兩根差分線(A和B),一根地線(GND)。
全雙工數(shù)據(jù)可以同時(shí)在兩個(gè)方向傳輸,需要四根線(兩對(duì)差分線)。
常見(jiàn)連接:四根差分線(A、B、Y、Z),一根地線(GND)。
RS-485 典型應(yīng)用RS-485廣泛應(yīng)用于需要長(zhǎng)距離、可靠傳輸?shù)膱?chǎng)景,如:
工業(yè)自動(dòng)化:PLC、傳感器、執(zhí)行器之間的通信。
樓宇自動(dòng)化:HVAC系統(tǒng)、門(mén)禁控制、照明控制。
串行設(shè)備互連:例如Modbus協(xié)議下的設(shè)備通信。
遠(yuǎn)程數(shù)據(jù)采集:如SCADA系統(tǒng)中的數(shù)據(jù)采集。
8、Modbus協(xié)議
Modbus是一種開(kāi)源的串行通信協(xié)議,最初由Modicon(現(xiàn)為施耐德電氣的一部分)在1979年開(kāi)發(fā)。它廣泛應(yīng)用于工業(yè)自動(dòng)化系統(tǒng)中,用于連接電子設(shè)備和傳感器,實(shí)現(xiàn)數(shù)據(jù)交換和設(shè)備控制。Modbus協(xié)議簡(jiǎn)單、可靠且易于實(shí)現(xiàn),是工業(yè)環(huán)境中最常用的通信協(xié)議之一。Modbus 基本概念Modbus協(xié)議主要有兩種傳輸模式:Modbus RTU(Remote Terminal Unit):基于二進(jìn)制傳輸,通常用于RS-232、RS-485等串行通信。Modbus ASCII:基于ASCII字符傳輸,也用于串行通信,但相對(duì)較少使用。Modbus TCP/IP:基于以太網(wǎng)的通信,適用于局域網(wǎng)和互聯(lián)網(wǎng)環(huán)境。[/ol]Modbus 數(shù)據(jù)模型Modbus設(shè)備數(shù)據(jù)組織為各種表,主要包括:離散輸入(Discrete Inputs):只讀的單位輸入(位)。線圈(Coils):可讀寫(xiě)的單位輸出(位)。輸入寄存器(Input Registers):只讀的16位輸入。保持寄存器(Holding Registers):可讀寫(xiě)的16位寄存器。每種數(shù)據(jù)類(lèi)型有不同的地址范圍。例如,標(biāo)志位(線圈和離散輸入)的地址范圍為1到9999,寄存器的地址范圍為40001到49999。Modbus 功能碼Modbus協(xié)議使用功能碼來(lái)定義具體操作,例如讀寫(xiě)線圈和寄存器。以下是一些常見(jiàn)的功能碼:讀線圈(0x01):讀取一組線圈的狀態(tài)。讀離散輸入(0x02):讀取一組離散輸入的狀態(tài)。讀保持寄存器(0x03):讀取一組保持寄存器的內(nèi)容。讀輸入寄存器(0x04):讀取一組輸入寄存器的內(nèi)容。寫(xiě)單線圈(0x05):寫(xiě)入一個(gè)單線圈狀態(tài)。寫(xiě)單寄存器(0x06):寫(xiě)入一個(gè)保持寄存器的內(nèi)容。寫(xiě)多線圈(0x0F):寫(xiě)入多個(gè)線圈狀態(tài)。寫(xiě)多寄存器(0x10):寫(xiě)入多個(gè)保持寄存器的內(nèi)容。Modbus 數(shù)據(jù)幀Modbus RTU數(shù)據(jù)幀結(jié)構(gòu)如下:地址域(1字節(jié)):指定從機(jī)地址。功能碼(1字節(jié)):指定操作類(lèi)型。數(shù)據(jù)域(N字節(jié)):包含具體操作的數(shù)據(jù),如寄存器地址、值等。錯(cuò)誤校驗(yàn)碼(2字節(jié)):CRC校驗(yàn)碼,用于錯(cuò)誤檢測(cè)。Modbus ASCII數(shù)據(jù)幀結(jié)構(gòu)類(lèi)似,但采用ASCII字符表示,每個(gè)字節(jié)以兩個(gè)ASCII字符傳輸,并有LRC(縱向冗余校驗(yàn))校驗(yàn)。9、CAN總線
CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))是一種多主總線型串行通信協(xié)議,最初由德國(guó)的Bosch公司在1980年代開(kāi)發(fā),主要用于汽車(chē)電子系統(tǒng),但其應(yīng)用已擴(kuò)展到工業(yè)自動(dòng)化、醫(yī)療設(shè)備、航空電子和其他領(lǐng)域。CAN 基本概念幀類(lèi)型CAN總線通信使用數(shù)據(jù)幀來(lái)傳輸信息,常見(jiàn)的幀類(lèi)型包括:數(shù)據(jù)幀(Data Frame):用于傳輸實(shí)際數(shù)據(jù)。遠(yuǎn)程幀(Remote Frame):請(qǐng)求發(fā)送數(shù)據(jù)幀。錯(cuò)誤幀(Error Frame):報(bào)告檢測(cè)到的錯(cuò)誤。過(guò)載幀(Overload Frame):指示總線過(guò)載。[/ol]數(shù)據(jù)幀結(jié)構(gòu)CAN數(shù)據(jù)幀由以下主要字段組成:起始位(Start of Frame, SOF):表示幀的開(kāi)始。標(biāo)識(shí)符(Identifier):表示消息的優(yōu)先級(jí)和內(nèi)容。標(biāo)準(zhǔn)幀(11位標(biāo)識(shí)符)擴(kuò)展幀(29位標(biāo)識(shí)符)控制字段(Control Field):指示數(shù)據(jù)長(zhǎng)度和其他控制信息。數(shù)據(jù)字段(Data Field):實(shí)際傳輸?shù)臄?shù)據(jù),長(zhǎng)度為0到8字節(jié)。CRC字段(CRC Field):循環(huán)冗余校驗(yàn),用于錯(cuò)誤檢測(cè)。應(yīng)答字段(ACK Field):接收方確認(rèn)發(fā)送方是否正確接收。結(jié)束位(End of Frame, EOF):表示幀的結(jié)束。位仲裁CAN總線采用非破壞性仲裁機(jī)制,通過(guò)標(biāo)識(shí)符的優(yōu)先級(jí)來(lái)決定哪個(gè)節(jié)點(diǎn)可以發(fā)送數(shù)據(jù)。標(biāo)識(shí)符值越小,優(yōu)先級(jí)越高。錯(cuò)誤檢測(cè)CAN具有多層次的錯(cuò)誤檢測(cè)機(jī)制,包括位級(jí)、幀級(jí)、消息級(jí)的錯(cuò)誤檢測(cè)和錯(cuò)誤處理。CAN 應(yīng)用場(chǎng)景汽車(chē)電子:車(chē)身控制、動(dòng)力系統(tǒng)、信息娛樂(lè)系統(tǒng)。工業(yè)自動(dòng)化:機(jī)器人控制、傳感器數(shù)據(jù)采集。
  • 醫(yī)療設(shè)備:實(shí)時(shí)監(jiān)控、診斷設(shè)備。航空電子:飛行控制系統(tǒng)。end

    一口Linux

    關(guān)注,回復(fù)【1024】海量Linux資料贈(zèng)送
    精彩文章合集
    文章推薦
    ?【專輯】ARM?【專輯】粉絲問(wèn)答?【專輯】所有原創(chuàng)?【專輯】linux入門(mén)?【專輯】計(jì)算機(jī)網(wǎng)絡(luò)?【專輯】Linux驅(qū)動(dòng)?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線?【干貨】Linux嵌入式所有知識(shí)點(diǎn)-思維導(dǎo)圖
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表