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