R&D奇譚 第2期:USART的同步和異步區(qū)別?
wm :
各位,我用stm32的串口來給電腦傳輸數(shù)據(jù),到底用的同步通訊還是異步通訊?
Mr.杜 :
異步
wm :
@Mr.杜 何以見得?
.舒燦:
分清同步和異步的本質(zhì),你就會有見得了
wm :
我知道他們的區(qū)別,但是我不知道哪兒控制著他們
0114 0112 0127:
cubemx 配置
藍(lán)色雨:
串口無論怎么控制都是異步的啊
wm:
@藍(lán)色雨,USART可以進(jìn)行同步通訊
藍(lán)色雨:
先理解一下同步和異步的概念,不傳輸時(shí)鐘的通訊都是異步的
0114 0112 0127:
@藍(lán)色雨,這個(gè)跟站的角度有關(guān),不是這么說的。
我們暫且不關(guān)注如何配置同步和異步工作方式,先關(guān)注到底什么是同步與異步,對此大家已經(jīng)有不同的理解。
這個(gè)問題,其實(shí)這么多年,我也沒搞清楚。
wuya:
串口同步、異步,我也沒搞清楚過,用的都是異步。有用過同步的大神嗎?
APaul:
剛畢業(yè)時(shí),面試的問我異步電路和同步電路哪個(gè)更好?工作十年后,再次被面試的問同步通信的事情,我說光纖這個(gè)沒時(shí)鐘信號應(yīng)該是異步的,他說這是同步的,后來關(guān)于同步還是異步的理解就變復(fù)雜了。
揚(yáng)帆起航:
我也被問過,一直就沒弄明白
看來不清楚這個(gè)問題的人大有存在。
APaul:
一根線的通信隱含時(shí)鐘,其實(shí)要本地時(shí)鐘采樣對齊才能得到數(shù)據(jù),一般是過采樣或相位偏移采樣處理的,這個(gè)FPGA中做通信的用的多。一般的串口通信要波特率一樣,也是接收端要16倍采樣處理的,這些有人說是同步的,因?yàn)檫@是基于頻率的,也有人說是異步的,因?yàn)闆]有一個(gè)時(shí)鐘線用來邊沿采樣。
那么STM32這個(gè)串口的具體例子來說,一般說串口不帶時(shí)鐘線就是異步的,而SPI那種帶時(shí)鐘線就是同步的。UART也可配成帶時(shí)鐘線的用法,類似SPI,也就成了同步串口了,這么說大家都可以理解。
wuya:
什么情況下 stm32 串口需要帶時(shí)鐘線呢?
APaul:
一般不用,因?yàn)樗械拇?,尤其是?jì)算機(jī)的串口,都沒時(shí)鐘線。
只有那種非要把它當(dāng)SPI來用的情況,才配成同步的,這是可能是波特率可以高很多吧
帶時(shí)鐘線的串口,就是類似SPI的,比如接收端上升沿采樣,發(fā)送端下降沿改變輸出,一次傳一個(gè)字節(jié)等等
異步通信,或者說是隱含時(shí)鐘的同步通信,沒單獨(dú)的時(shí)鐘線,發(fā)送方和接收方的本地時(shí)鐘頻率肯定有差異,這需要過采樣后根據(jù)多倍的01變化來解決頻率差的問題。串口波特率是有個(gè)誤差范圍的,接收方 可以在一定范圍內(nèi)承受頻率差異。
HQY:
@Apaul,大佬,通俗易懂。
之前搞了那么多年,只是知道USART 和 UART 是有同步區(qū)別的,這么一說才發(fā)現(xiàn)差差異點(diǎn)有一個(gè)CLK,竟然從沒注意過
wm:
只有帶clk 顯得才能說同步啊
Guo:
我覺得用數(shù)據(jù)恢復(fù)的時(shí)鐘不能叫同步。
同步應(yīng)該收發(fā)用同一個(gè)時(shí)鐘。
APaul:
可以這么簡單的說,但在一些通信上,比如光纖,或者基于bit流的RS485通信,都會說是隱含時(shí)鐘的同步通信。
wm:
@APaul?隱含時(shí)鐘具體是指用過采樣來確定每一位么
APaul:
差不多這意思吧
藍(lán)色雨:
有種正交編碼的方式,數(shù)據(jù)線上隱含時(shí)鐘信號。
MIPI的LP模式就是這樣的
wm:
那這樣說所有的通信都是同步
APaul:
寬泛的理解就是雙方必須基于相同的頻率才能通信,不然任何方法都不能正確判斷出bit來,這就是同步
藍(lán)色雨:
就像CAN通訊里有同步域和位填充來保證時(shí)鐘同步,但是本質(zhì)上還是異步通訊的
wm:
@Apual,相同的頻率指什么?
APaul:
頻率的一定范圍內(nèi)的誤差,可以通過邊沿重對齊,過采樣去抖動來解決,這樣就要求數(shù)據(jù)必須不斷的變化,變化才能隱含時(shí)鐘。
要是給個(gè)直流電平過去,告訴它我這發(fā)的是一串1,它打死也認(rèn)不出這是多少個(gè)1來,變化的隔間大到一定程度,時(shí)鐘對齊就失效了,哪怕錯(cuò)了1個(gè)bit,往往導(dǎo)致一幀數(shù)據(jù)都錯(cuò)了,所以由誤碼率的說法,也有幀同步的概念。
相同的頻率就是那個(gè)約定好的波特率
總結(jié)一下:
1. USART中的同步通信,需要發(fā)送方和接收方共用一個(gè)clock。換句話說,發(fā)送方提供一個(gè)clock或其他timing signal,接收方從而知道什么時(shí)候去讀取下一位數(shù)據(jù)。
在同步傳輸方式下,數(shù)據(jù)在一條線上傳輸,clock在另外一條線上傳輸。
同步通信通常效率更高,因?yàn)橹粋鬏攲?shí)際數(shù)據(jù),而無需其他bits,像start bit、stop bit 等。
2. USART中的異步通信,不需要發(fā)送方發(fā)送時(shí)鐘信號即可通信。但是需要收發(fā)雙方事先在某些方面做好約定,以用于同步,比如增加起始位、結(jié)束位、奇偶校驗(yàn)位等,需要事先知道波特率。
3. 不管哪種通信方式,其實(shí)都涉及到同步的概念,從這個(gè)角度來說,也都可寬泛的稱之為同步通信。
看完上述大家的討論,對同步和異步的概念,你有什么想說的呢?歡迎評論區(qū)留言。留言點(diǎn)贊數(shù)前3名(點(diǎn)贊數(shù)相同按照評論先后順序排名),送TopSemic定制Logo的32G U盤一個(gè),截止日期10月7日中午12點(diǎn)。
U盤,會在10月8日寄出,屆時(shí)小編會主動聯(lián)系,記得查看。
或者將此篇文章轉(zhuǎn)發(fā)到微信朋友圈,集滿50個(gè)贊,也可得32G U盤一個(gè),數(shù)量5個(gè),先到先得,發(fā)完為止,截止日期10月7日中午12點(diǎn)。集滿后添加小編微信,確認(rèn)后領(lǐng)取。