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