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