一個(gè)做嵌入式的工程師,無(wú)論是做硬件還是軟件,每天都在接觸一些通信相關(guān)的名詞,若不認(rèn)真整理這些概念,就很可能會(huì)混淆或忘記具體的含義與區(qū)別,接下來(lái)整理了一下各種通信協(xié)議的區(qū)別。 ??
PART.01 串行通信與并行通信的概念
1、串行通信
串行接口簡(jiǎn)稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是采用串行通信方式的擴(kuò)展接口。串行接口 (Serial Interface)是指數(shù)據(jù)一位一位地順序傳送。串口可以算是一個(gè)泛稱,一般指代的是串口時(shí)序標(biāo)準(zhǔn)。UART、RS232、RS485、TTL都遵循著類似的通信時(shí)序協(xié)議,因此都被通稱為串口。 串行通信(serial communication)是指計(jì)算機(jī)主機(jī)與外設(shè)之間以及主機(jī)系統(tǒng)與主機(jī)系統(tǒng)之間數(shù)據(jù)的串行傳送。使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別適用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。串行通信按照發(fā)送時(shí)鐘源和接收時(shí)鐘源是否需要保持一致,又可分為同步通信和異步通信兩種。
2、并行通信
并行通信(Parallel communication)就是指數(shù)據(jù)的每一位同時(shí)在多根數(shù)據(jù)線上發(fā)送或者接收。可以以字或字節(jié)為單位并行進(jìn)行。并行通信速度快,但用的通信線多、成本高,故不宜進(jìn)行遠(yuǎn)距離通信。計(jì)算機(jī)或PLC各種內(nèi)部總線就是以并行方式傳送數(shù)據(jù)的。
總結(jié):串行通信是一種概念,是指一個(gè)bit一個(gè)bit的收發(fā)數(shù)據(jù),相對(duì)于并行通信可一次性可以同時(shí)收發(fā)n個(gè)bit而言。包括普通的串口通信,包括IIC,包括SPI等等。串口通信是一種通信手段/方式,是相對(duì)于以太網(wǎng)方式、紅外方式、藍(lán)牙方式、usb方式(usb廣義也算串行通信)等而言,是一種比較低級(jí)的通信手段。 ?
PART.02 UART
UART(Universal Asynchronous Receiver/Transmitter),意為通用異步收發(fā)傳輸器,該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。UART包含TTL電平的串口和RS-232電平的串口,使用UART通信的雙方設(shè)備都需要遵從UART協(xié)議。 UART是串行通信的一種,重點(diǎn)是異步,和同步相對(duì)應(yīng),意思是不需要同步的時(shí)鐘,通信兩端預(yù)先約定bit的傳輸速率(每秒傳多少bit),而不是由時(shí)鐘觸發(fā)的。 在嵌入式設(shè)計(jì)中,UART用于主機(jī)與輔助設(shè)備通信。UART是實(shí)現(xiàn)串口收發(fā)的邏輯電路(硬件形式),這部分可以獨(dú)立成芯片,也可以作為模塊嵌入到其他芯片里,單片機(jī)、SOC、PC里都會(huì)有UART模塊,例如STM32單片機(jī)里有兩種UART模塊,USART和UART,前者可以同步通信,而后者只能異步通信。一般電腦是沒(méi)有uart接口的(ttl電平),我們可以通過(guò)電腦的usb接口和單片機(jī)通信,只需一個(gè)usb轉(zhuǎn)串口模塊插到usb接口上,裝上驅(qū)動(dòng),另一邊接單片機(jī)即可。有很多可以u(píng)sb協(xié)議轉(zhuǎn)為串口協(xié)議的芯片,如ch340,cp2102,pl2303等。 1、TX --?數(shù)據(jù)發(fā)送接口 2、RX --?數(shù)據(jù)接受接口 兩個(gè)設(shè)備間將TX與RX相連,RX與TX相連即可正常工作。 ?
PART.03 TTL電平
TTL是Transistor-Transistor Logic的簡(jiǎn)寫,是一種電平邏輯,晶體管-晶體管邏輯。通常我們采用二進(jìn)制來(lái)表示數(shù)據(jù),為了表示二進(jìn)制,需要用高低電平表示這些二進(jìn)制數(shù),3.3V/5V等價(jià)于邏輯“1”,0V等價(jià)于邏輯“0”。UART特指單片機(jī)的UART端口,使用的就是TTL電平。嵌入式里面說(shuō)的串口,一般是指UART口,而TTL、RS-232、RS-485是指的電平標(biāo)準(zhǔn)(電信號(hào))。
1、標(biāo)準(zhǔn)TTL電平邏輯
輸出電路:電壓大于等于(≥)2.4V為邏輯1;電壓小于等于(≤)0.8V為邏輯0;
輸入電路:電壓大于等于(≥)2.0V為邏輯1;電壓小于等于(≤)1.2V為邏輯0;
2、CMOS電平
輸出電路:電壓大于等于(≥)0.9×Vcc為邏輯1;電壓小于等于(≤)0.1×Vcc為邏輯0;
輸入電路:電壓大于等于(≥)0.7×Vcc為邏輯1;電壓小于等于(≤)0.3×Vcc為邏輯0; ?
PART.04 RS-232
RS-232接口符合美國(guó)電子工業(yè)聯(lián)盟(EIA)制定的串行數(shù)據(jù)通信的接口標(biāo)準(zhǔn),全雙工,其中 RS 為英文 “Recomend Standard” 的縮寫,中文翻譯為“推薦標(biāo)準(zhǔn)”,232為標(biāo)識(shí)號(hào)。原始編號(hào)全稱是EIA-RS-232(簡(jiǎn)稱232,RS232)。它被廣泛用于計(jì)算機(jī)串行接口外設(shè)連接,連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程,其輸出的電平稱為 RS232 電平。
1、RS-232電平邏輯
RS-232不同于TTL的電平邏輯,為負(fù)邏輯,最簡(jiǎn)單的RS232通信由三條數(shù)據(jù)線組成,即 TxD、RxD 和GND。負(fù)12V代表高電平,即-15V ~ -3V為邏輯1,正12V代表低電平,即+3V ~ +15V為邏輯0,電壓也有標(biāo)準(zhǔn)范圍。這里的電平,是TXD線(或者RXD線)相對(duì)于 GND 的電壓。
2、D型9針接口定義
記住一點(diǎn),這種接口的協(xié)議只有兩種:RS-232和RS-485。不會(huì)是TTL電平的(除非特殊應(yīng)用)。 一般用的最多的是RXD、TXD、GND,三個(gè)信號(hào)。
3、USB轉(zhuǎn)RS-232
USB轉(zhuǎn)232,可以先將USB轉(zhuǎn)換為TTL,再將TTL轉(zhuǎn)換為RS232,市面上也有很多USB直接轉(zhuǎn)RS232的線材,線材內(nèi)部集成轉(zhuǎn)換電路。
4、TTL和RS-232互轉(zhuǎn)
在實(shí)際中由于需要,有時(shí)候會(huì)要將TTL電平轉(zhuǎn)化為RS232電平,有時(shí)候也會(huì)要將RS232電平轉(zhuǎn)化為TTL電平,因?yàn)閱纹瑱C(jī)接口一般是TTL電平,如果需要接232電平的外設(shè),就需要加TTL轉(zhuǎn)RS232的模塊,轉(zhuǎn)換方向是雙向的。能實(shí)現(xiàn)TTL和RS232電平互相轉(zhuǎn)換最常用的芯片是MX232。 ? PART.05 RS-485 RS-485和RS-232一樣,都是串行通信標(biāo)準(zhǔn),現(xiàn)在的標(biāo)準(zhǔn)名稱是TIA/EIA-485-A,習(xí)慣稱為RS-485標(biāo)準(zhǔn),半雙工,使用該標(biāo)準(zhǔn)的數(shù)字通信網(wǎng)絡(luò)能在遠(yuǎn)距離條件下以及電子噪聲大的環(huán)境下有效傳輸信號(hào)。RS-485使得廉價(jià)本地網(wǎng)絡(luò)以及多支路通信鏈路的配置成為可能,而且增加了聯(lián)網(wǎng)功能。
1、RS-485電平邏輯
RS-485和RS-232單端傳輸不一樣,是差分傳輸,使用一對(duì)雙絞線,其中一根線定義為A,另一個(gè)定義為B,一般收發(fā)器內(nèi)部是一個(gè)發(fā)送器加一個(gè)收發(fā)器組成。對(duì)于使能信號(hào),字母上面加一橫的為低電平有效,不加的為高電平有效。邏輯“1”以兩線間的電壓差為+(2 ~ 6)V表示;邏輯“0”以兩線間的電壓差為-(2 ~ 6)V表示,使能端起作用和其他狀態(tài)時(shí)為高阻態(tài)。
2、TTL和RS-485轉(zhuǎn)換
TTL轉(zhuǎn)成RS-485很常見(jiàn),收發(fā)器芯片市面上很多,比如MAX485,用起來(lái)也很簡(jiǎn)單,一般左邊接MCU的GPIO,用來(lái)控制。
3、RS-232和RS-485轉(zhuǎn)換
RS-232和RS-485之間可以轉(zhuǎn)換,一個(gè)方法是RS-232轉(zhuǎn)換成TTL,再由TTL轉(zhuǎn)換為RS-485,當(dāng)然也有芯片支持將RS-232支持轉(zhuǎn)換成RS-485,雙向轉(zhuǎn)換。 ? PART.06 USB USB是Universal Serial Bus(通用串行總線)的縮寫,是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊,是應(yīng)用在PC領(lǐng)域的接口技術(shù),USB接口的特點(diǎn)是傳輸速度快,支持熱插拔,可連接多個(gè)設(shè)備。 一條USB傳輸線分別由地線、電源線、D+和D-四條線構(gòu)成,D+和D-是差分輸入線,它使用的是3.3V的電壓(與CMOS的5V電平不同),而電源線和地線可向設(shè)備提供5V電壓,最大電流為500mA(可以在編程中設(shè)置)。USB設(shè)備可以直接和HOST通信,或者通過(guò)Hub和Host通信。一個(gè)USB系統(tǒng)中僅有一個(gè)USB 主機(jī),設(shè)備包括USB功能設(shè)備和USB HUB,最多支持127個(gè)設(shè)備。物理連接指的是USB傳輸線。在USB 2.0系統(tǒng)中要求使用屏蔽雙絞線。
1、USB速率
USB1.0:低速模式(low speed):傳輸速率為1.5Mbps; USB1.1:全速模式(full speed):傳輸速率為12Mbps; USB2.0:向下兼容,高速模式(high speed):25~480Mbps; USB3.0:向下兼容,(super speed):理論上最高達(dá)5Gbps,實(shí)際中,也就是high speed 的10倍左右; USB3.1:Gen2 超高速(SuperSpeed +)傳輸速率為 10Gbps。
2、USB接口定義
常見(jiàn)的Type-A型USB接口定義如下。
pin# | Name | 顏色 |
1 | VBUS/+5V | 紅色 |
2 | D-/DM | 白色 |
3 | D+/DP | 綠色 |
4 | GND | 黑色 |
PART.07 CAN總線 CAN是Controller Area Network的簡(jiǎn)稱,是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),現(xiàn)在是汽車網(wǎng)絡(luò)的標(biāo)準(zhǔn)協(xié)議。
1、CAN電平邏輯
顯性電平:邏輯0? ? ? ?典型值 CAN_H = 3.5V,CAN_L = 1.5V; 隱性電平:邏輯1 ?? ? ?典型值 CAN_H = 2.5V,CAN_L = 2.5V; 總結(jié):TTL電平一般用于芯片與芯片之間的通信;RS232采用了正負(fù)邏輯電平,提高線路的抗干擾性最遠(yuǎn)可以達(dá)到15米左右;如果更遠(yuǎn)的距離會(huì)采樣RS485,它使用兩線制的差分信號(hào)傳輸,最遠(yuǎn)可至1200米;RS232全雙工只支持點(diǎn)對(duì)點(diǎn)通訊(1:1),RS485半雙工或單雙工支持總線形式通訊(1:N)。當(dāng)我們?cè)谧鲭娐饭ぷ鲿r(shí),應(yīng)該注意下外設(shè)的串口是Uart類型的還是RS232類型的,如果不匹配,應(yīng)當(dāng)找個(gè)轉(zhuǎn)換線(通常這根轉(zhuǎn)換線內(nèi)有塊類似于Max232的芯片做電平轉(zhuǎn)換工作的),不能盲目地將兩串口相連。 1、RS232、RS-485最終結(jié)果都是轉(zhuǎn)換為TTL電平方式與單片機(jī)通信(CAN收發(fā)器把差分信號(hào)轉(zhuǎn)化為TTL-->CAN控制器(MCU))。其目的都是提高通信質(zhì)量,提高抗干擾能力。 2、TTL、RS232是邏輯電平信號(hào)。RS-485、CAN為差分信號(hào)。 ? PART.08 I2C I2C總線是由Philips公司開(kāi)發(fā)的一種簡(jiǎn)單、半雙工、雙向二線制同步串行總線。它只需要兩根線(SDA、SCL)即可在連接于總線上的器件之間傳送信息。同一時(shí)刻可以單主機(jī)多從機(jī)或單主機(jī)單從機(jī),I2C總線上的任意設(shè)備都可以當(dāng)主機(jī),一般主機(jī)是MCU,當(dāng)有多個(gè)主機(jī)時(shí),會(huì)通過(guò)總線仲裁的方式選出一個(gè)主機(jī),其他退出作從機(jī)。
Mode | 標(biāo)準(zhǔn)模式 | 快速模式 | 高速模式 |
Rate | 100Kbit/s | 400Kbit/s | 3.4Mbit/s |
SDA(串行數(shù)據(jù)線)和SCL(串行時(shí)鐘線)都是雙向I/O線,接口電路為開(kāi)漏輸出.需通過(guò)上拉電阻接電源VCC.當(dāng)總線空閑時(shí).兩根線都是高電平。 主機(jī)用于啟動(dòng)總線傳送數(shù)據(jù),并產(chǎn)生時(shí)鐘以開(kāi)放傳送的器件,此時(shí)任何被尋址的器件均被認(rèn)為是從機(jī),在總線上主和從、發(fā)和收的關(guān)系不是恒定的,而取決于此時(shí)數(shù)據(jù)傳送方向。如果主機(jī)要發(fā)送數(shù)據(jù)給從機(jī),則主機(jī)首先尋址從機(jī),然后主動(dòng)發(fā)送數(shù)據(jù)至從機(jī),最后由主機(jī)終止數(shù)據(jù)傳送;如果主機(jī)要接收從機(jī)的數(shù)據(jù),首先由主機(jī)尋址從機(jī)。然后主機(jī)接收從機(jī)發(fā)送的數(shù)據(jù),最后由主機(jī)終止接收過(guò)程。在這種情況下,主機(jī)負(fù)責(zé)產(chǎn)生定時(shí)時(shí)鐘和終止數(shù)據(jù)傳送。 ? PART.09 SPI SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫,意為串行外圍接口,是摩托羅拉首先在其MC68HCXX系列處理器上定義的,SPI是一種高速的,全雙工,同步的通信總線,SPI的速率比I2C高,一般可以到幾十Mbps,不同的器件當(dāng)主機(jī)和當(dāng)作從機(jī)的速率一般不同。SPI最典型的應(yīng)用是單主機(jī)單從機(jī),下圖是接線方式,當(dāng)然也可以多從機(jī)。
審核編輯:黃飛
評(píng)論
查看更多