1、什么是串口?
USART是全雙工通用同步/異步收發(fā)器,是一種串行的通信設(shè)備。在嵌入式開發(fā)設(shè)計(jì)中經(jīng)常被使用到,廣泛的被應(yīng)用于主機(jī)與外圍設(shè)備的通信交互中,應(yīng)用相當(dāng)?shù)膹V泛。
1.1、串口中的 UART 和 USART有什么不同?
UART:指的是通用異步收發(fā)器;
USART:指的是通用同步和異步收發(fā)器。
當(dāng)只使用異步通信功能時(shí),這兩者是沒有區(qū)別的,區(qū)別在于USART比UART多了同步(時(shí)鐘)通信功能。
2、通信方式有哪些?
2.1、并行通信
并行通信指的是數(shù)據(jù)同時(shí)在多根數(shù)據(jù)線上進(jìn)行發(fā)送或者接收。如下所示:
并行通信的優(yōu)點(diǎn):控制方式簡單,傳輸速度快,適用于距離比較近的傳輸。
并行通信的缺點(diǎn):占用的數(shù)據(jù)線較多,對MCU資源少的單片機(jī)而言不是很友好,線路布局變復(fù)雜。
2.2、串行通信
串行通信指的是數(shù)據(jù)在同一根數(shù)據(jù)線上依次按位(bit)進(jìn)行發(fā)送或者接收。如下圖所示:
串行通信方式的優(yōu)點(diǎn):占用數(shù)據(jù)線少,適合用于遠(yuǎn)距離傳輸,系統(tǒng)布線簡單;
串行通信方式的缺點(diǎn):控制方式復(fù)雜,傳輸速度較并行通信的方式要慢。
3、串行通信方式中的兩種方式
3.1、同步串行通信方式
同步通信的方式是發(fā)送方和接收方都必須采用同一個(gè)時(shí)鐘,收發(fā)雙方利用時(shí)鐘信號來確定每個(gè)信號位。如下圖所示:
這種方式把多個(gè)字符組成一個(gè)信息幀,每幀的開頭用同步字符來指示,是一種連續(xù)傳送數(shù)據(jù)的通信方式。即使在傳輸中沒有信息需要傳輸時(shí),因?yàn)橥絺鬏敳辉试S中間有空隙,所以也要填上空字符。如下圖所示:
3.2、異步串行通行方式
異步串行通信方式是指通信的雙方使用各自的時(shí)鐘,以一個(gè)字符作為數(shù)據(jù)傳輸單元并且發(fā)送方發(fā)送字符的時(shí)間間隔不一定,是一種不規(guī)則數(shù)據(jù)段傳送的通信方式。如下圖所示:
4、串行通信方式的傳送方向
根據(jù)串行數(shù)據(jù)的傳輸方向,可以將通信分為單工、半雙工、全雙工。
1)單工:是指數(shù)據(jù)傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸。
2)半雙工:是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行傳輸。
3)全雙工:是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。
5、常用到的 USART 通信方式
在嵌入式中最常使用到的就是異步全雙工的USART通信方式,收發(fā)兩方各自使用自身的時(shí)鐘,收發(fā)可以相互獨(dú)立的進(jìn)行。數(shù)據(jù)傳輸?shù)氖疽鈭D如下:
異步串行通信是將一個(gè)字節(jié)數(shù)據(jù)加上起始位、校驗(yàn)位、停止位,構(gòu)成的字符幀。由于異步通信沒有同步時(shí)鐘,所以接收端要時(shí)刻處于接收狀態(tài)。
起始位: 在沒有數(shù)據(jù)需要傳送時(shí),此時(shí)通信線上為邏輯“1”狀態(tài)。當(dāng)發(fā)送端要發(fā)送一個(gè)字符時(shí),首先發(fā)送一個(gè)邏輯“0”信號,即起始位,告訴接收端要開始發(fā)送一幀數(shù)據(jù)了。接收端檢測到這個(gè)低電平時(shí),就開始準(zhǔn)備接收數(shù)據(jù)信息了。
數(shù)據(jù)位: 在起始位發(fā)送完畢之后,發(fā)送端發(fā)出的就是數(shù)據(jù)位了,數(shù)據(jù)位一般是沒有嚴(yán)格的規(guī)定的,5~9位都可以。一般是低位先發(fā),高位后發(fā),按位依次進(jìn)行傳輸。平時(shí)使用中一般都是選擇8bit的。
校驗(yàn)位: 數(shù)據(jù)位發(fā)送完成之后,為了檢驗(yàn)數(shù)據(jù)在傳輸過程中是否有出錯(cuò),可以選擇發(fā)送一個(gè)位進(jìn)行校驗(yàn)。使用的是奇偶校驗(yàn),當(dāng)然也可以選擇不進(jìn)行檢驗(yàn)。
波特率: 是指數(shù)據(jù)傳輸?shù)乃俾?。表示每秒鐘傳送的bit位數(shù)。比如,一秒鐘傳送了120個(gè)字符,每個(gè)字符傳送10個(gè)bit(1個(gè)起始位 + 8個(gè)數(shù)據(jù)位 + 1個(gè)停止位),那么:波特率 = 10x120 = 1200 (bit/s)。平常使用中常用的波特率有9600、115200、19200、25600等。
6.1、USART編號上的差異
通過對比GD32和STM32同樣內(nèi)核已經(jīng)同樣引腳數(shù)的MCU手冊可以知道,兩者是有區(qū)別的。如下圖:
6.2、通信協(xié)議上的細(xì)微差異
GD在連續(xù)發(fā)送數(shù)據(jù)的時(shí)候每兩個(gè)字節(jié)之間會有一個(gè)Bit的Idle,而STM32沒有,如下圖為GD的發(fā)送波形:
GD的串口在發(fā)送的時(shí)候停止位只有1/2兩種停止位模式。STM32有0.5/1/1.5/2四種停止位模式。
GD 和STM32 USART的這兩個(gè)差異對通信基本沒有影響,只是GD的通信時(shí)間會加長一點(diǎn)。
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3370瀏覽量
105789 -
通信設(shè)備
+關(guān)注
關(guān)注
3文章
328瀏覽量
31991 -
嵌入式開發(fā)
+關(guān)注
關(guān)注
18文章
1018瀏覽量
47470 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30760
發(fā)布評論請先 登錄
相關(guān)推薦
評論