STM32串口通信基本原理

通信接口背景知識

學(xué)習(xí)交流群:780619431??

(stm32 USART串口應(yīng)用)

http://www.makeru.com.cn/live/1392_1164.html?s=10

PWM脈寬調(diào)制技術(shù)

http://www.makeru.com.cn/live/4034_2146.html?s=10

基于STM32講解串口操作

http://www.makeru.com.cn/live/1758_490.html?s=10

通過Z-stack協(xié)議棧實(shí)現(xiàn)串口透傳

http://www.makeru.com.cn/live/1758_330.html?s=10

通信協(xié)議 - UART串口協(xié)議

http://www.makeru.com.cn/live/3576_1437.html?s=10

設(shè)備之間通信的方式

一般情況下皮官,設(shè)備之間的通信方式可以分成并行通信和串行通信兩種。并行與串行通信的區(qū)別如下表所示。

串行通信的分類

1筋岛、按照數(shù)據(jù)傳送方向轿腺,分為:

單工:數(shù)據(jù)傳輸只支持?jǐn)?shù)據(jù)在一個方向上傳輸牡昆;

半雙工:允許數(shù)據(jù)在兩個方向上傳輸扔字。但是育拨,在某一時刻止邮,只允許數(shù)據(jù)在一個方向上傳輸这橙,它實(shí)際上是一種切換方向的單工通信;它不需要獨(dú)立的接收端和發(fā)送端导披,兩者可以合并一起使用一個端口屈扎。

全雙工:允許數(shù)據(jù)同時在兩個方向上傳輸。因此撩匕,全雙工通信是兩個單工通信方式的結(jié)合鹰晨,需要獨(dú)立的接收端和發(fā)送端。

2止毕、按照通信方式并村,分為:

同步通信:帶時鐘同步信號傳輸。比如:SPI滓技,IIC通信接口哩牍。

異步通信:不帶時鐘同步信號。比如:UART(通用異步收發(fā)器)令漂,單總線膝昆。

????在同步通訊中,收發(fā)設(shè)備上方會使用一根信號線傳輸信號叠必,在時鐘信號的驅(qū)動下雙方進(jìn)行協(xié)調(diào)荚孵,同步數(shù)據(jù)。例如纬朝,通訊中通常雙方會統(tǒng)一規(guī)定在時鐘信號的上升沿或者下降沿對數(shù)據(jù)線進(jìn)行采樣收叶。

????在異步通訊中不使用時鐘信號進(jìn)行數(shù)據(jù)同步,它們直接在數(shù)據(jù)信號中穿插一些用于同步的信號位共苛,或者將主題數(shù)據(jù)進(jìn)行打包判没,以數(shù)據(jù)幀的格式傳輸數(shù)據(jù)蜓萄。通訊中還需要雙方規(guī)約好數(shù)據(jù)的傳輸速率(也就是波特率)等,以便更好地同步澄峰。常用的波特率有4800bps嫉沽、9600bps、115200bps等俏竞。

????在同步通訊中绸硕,數(shù)據(jù)信號所傳輸?shù)膬?nèi)容絕大部分是有效數(shù)據(jù),而異步通訊中會則會包含數(shù)據(jù)幀的各種標(biāo)識符魂毁,所以同步通訊效率高玻佩,但是同步通訊雙方的時鐘允許誤差小,稍稍時鐘出錯就可能導(dǎo)致數(shù)據(jù)錯亂席楚,異步通訊雙方的時鐘允許誤差較大咬崔。

常見的串行通信接口

STM32串口通信基礎(chǔ)

??? STM32的串口通信接口有兩種,分別是:UART(通用異步收發(fā)器)酣胀、USART(通用同步異步收發(fā)器)刁赦。而對于大容量STM32F10x系列芯片,分別有3個USART和2個UART闻镶。

UART引腳連接方法

RXD:數(shù)據(jù)輸入引腳甚脉,數(shù)據(jù)接受;

TXD:數(shù)據(jù)發(fā)送引腳铆农,數(shù)據(jù)發(fā)送牺氨。

????對于兩個芯片之間的連接,兩個芯片GND共地墩剖,同時TXD和RXD交叉連接猴凹。這里的交叉連接的意思就是,芯片1的RxD連接芯片2的TXD岭皂,芯片2的RXD連接芯片1的TXD郊霎。這樣,兩個芯片之間就可以進(jìn)行TTL電平通信了爷绘。

????若是芯片與PC機(jī)(或上位機(jī))相連书劝,除了共地之外,就不能這樣直接交叉連接了土至。盡管PC機(jī)和芯片都有TXD和RXD引腳购对,但是通常PC機(jī)(或上位機(jī))通常使用的都是RS232接口(通常為DB9封裝),因此不能直接交叉連接陶因。RS232接口是9針(或引腳)骡苞,通常是TxD和RxD經(jīng)過電平轉(zhuǎn)換得到的。故,要想使得芯片與PC機(jī)的RS232接口直接通信解幽,需要也將芯片的輸入輸出端口也電平轉(zhuǎn)換成RS232類型贴见,再交叉連接典阵。

????經(jīng)過電平轉(zhuǎn)換后,芯片串口和RS232的電平標(biāo)準(zhǔn)是不一樣的:

單片機(jī)的電平標(biāo)準(zhǔn)(TTL電平):+5V表示1怀樟,0V表示0俊啼;

RS232的電平標(biāo)準(zhǔn):+15/+13 V表示0,-15/-13表示1宛畦。

??? RS-232通訊協(xié)議標(biāo)準(zhǔn)串口的設(shè)備間通訊結(jié)構(gòu)圖如下:?

所以單片機(jī)串口與PC串口通信就應(yīng)該遵循下面的連接方式:在單片機(jī)串口與上位機(jī)給出的RS232口之間,通過電平轉(zhuǎn)換電路(如下面圖中的Max232芯片) 實(shí)現(xiàn)TTL電平與RS232電平之間的轉(zhuǎn)換。

RS232串口簡介

????臺式機(jī)電腦后面的9針接口就是com口(串口) 在工業(yè)控制 數(shù)據(jù)采集上應(yīng)用廣泛上圖中然爆,最右邊的是串口接口統(tǒng)稱為RS232接口,是常見的DB9封裝黍图。

通信過程中只有兩個腳參與通信曾雕。

2腳:電腦的輸入RXD

3腳:電腦的輸出TXD 通過2 ,3 腳就可以實(shí)現(xiàn)全雙工(可同時收發(fā))的串行異步 通信

5腳:接地

單片機(jī)的P3口是有兩個復(fù)用接口RXD 和TXD助被。這是單片機(jī)進(jìn)行串行通信的收發(fā)口剖张,連接應(yīng)該錯位的對應(yīng)到電腦的TDX RDX上。注意:單片機(jī)和RS232的電平標(biāo)準(zhǔn)是不一樣的揩环。

單片機(jī)的電平標(biāo)準(zhǔn) TTL電平 :+5V表示1 0V表示0搔弄。

RS232的電平標(biāo)準(zhǔn) +15/+13 V表示1 -15/-13 表示0。

所以 單片機(jī)與電腦串口通信就應(yīng)該遵循下面的連接方式:

在單片機(jī)與上位機(jī)給出的RS232口之間通過電平轉(zhuǎn)換電路(最上面圖中的Max232芯片) 實(shí)現(xiàn)TTL電平與RS232電平之間的轉(zhuǎn)換丰滑,PC串口與單片機(jī)串口連接方式圖:

注意這兩個DB9:DB91是在電腦上的 DB92是在單片機(jī)實(shí)驗(yàn)板上焊接著的顾犹。

這里的交叉連接的意思是 DB91的RXD連著DB92的TXD。

DB92的RXD連著DB91的TXD這樣交叉著連接褒墨,如果電腦沒有RS232口 只有USB口炫刷,可以用串口轉(zhuǎn)接線轉(zhuǎn)出串口,如下圖所示郁妈。

這個時候在電腦上位機(jī)上需要安裝串口驅(qū)動程序浑玛。

注意,這個驅(qū)動程序驅(qū)動的是PL2303芯片(在上圖的大頭里面) 使得RS232信息轉(zhuǎn)換成USB信息噩咪。

下圖為上圖的內(nèi)部結(jié)構(gòu):

用串口通信比USB簡單顾彰,因?yàn)榇谕ㄐ艣]有協(xié)議,使用方便簡單剧腻。

STM32的UART特點(diǎn)

全雙工異步通信拘央;

分?jǐn)?shù)波特率發(fā)生器系統(tǒng),提供精確的波特率书在。發(fā)送和接受共用的可編程波特率灰伟,最高可達(dá)4.5Mbits/s;

可編程的數(shù)據(jù)字長度(8位或者9位);

可配置的停止位(支持1或者2位停止位)栏账;

可配置的使用DMA多緩沖器通信帖族;

單獨(dú)的發(fā)送器和接收器使能位;

檢測標(biāo)志:

① 接受緩沖器

②發(fā)送緩沖器空

③傳輸結(jié)束標(biāo)志挡爵;

多個帶標(biāo)志的中斷源竖般,觸發(fā)中斷;

其他:校驗(yàn)控制茶鹃,四個錯誤檢測標(biāo)志涣雕。

串口通信過程

STM32中UART參數(shù)

????串口通訊的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的TXD接口傳輸?shù)浇邮赵O(shè)備的RXD接口,通訊雙方的數(shù)據(jù)包格式要規(guī)約一致才能正常收發(fā)數(shù)據(jù)闭翩。????

??? STM32中串口異步通信需要定義的參數(shù):起始位挣郭、數(shù)據(jù)位(8位或者9位)、奇偶校驗(yàn)位(第9位)疗韵、停止位(1,15,2位)兑障、波特率設(shè)置。

??? UART串口通信的數(shù)據(jù)包以幀為單位蕉汪,常用的幀結(jié)構(gòu)為:1位起始位+8位數(shù)據(jù)位+1位奇偶校驗(yàn)位(可選)+1位停止位流译。如下圖所示:

????奇偶校驗(yàn)位分為奇校驗(yàn)和偶校驗(yàn)兩種,是一種簡單的數(shù)據(jù)誤碼校驗(yàn)方法者疤。奇校驗(yàn)是指每幀數(shù)據(jù)中福澡,包括數(shù)據(jù)位和奇偶校驗(yàn)位的全部9個位中1的個數(shù)必須為奇數(shù);偶校驗(yàn)是指每幀數(shù)據(jù)中宛渐,包括數(shù)據(jù)位和奇偶校驗(yàn)位的全部9個位中1的個數(shù)必須為偶數(shù)竞漾。

????校驗(yàn)方法除了奇校驗(yàn)(odd)、偶校驗(yàn)(even)之外窥翩,還可以有:0 校驗(yàn)(space)业岁、1 校驗(yàn)(mark)以及無校驗(yàn)(noparity)。?0/1校驗(yàn):不管有效數(shù)據(jù)中的內(nèi)容是什么寇蚊,校驗(yàn)位總為0或者1笔时。

UART(USART)框圖

??這個框圖分成上、中仗岸、下三個部分允耿。本文大概地講述一下各個部分的內(nèi)容,具體的可以看《STM32中文參考手冊》中的描述扒怖。

????框圖的上部分较锡,數(shù)據(jù)從RX進(jìn)入到接收移位寄存器,后進(jìn)入到接收數(shù)據(jù)寄存器盗痒,最終供CPU或者DMA來進(jìn)行讀嚷煸獭;數(shù)據(jù)從CPU或者DMA傳遞過來,進(jìn)入發(fā)送數(shù)據(jù)寄存器骡楼,后進(jìn)入發(fā)送移位寄存器熔号,最終通過TX發(fā)送出去。

????然而鸟整,UART的發(fā)送和接收都需要波特率來進(jìn)行控制的引镊,波特率是怎樣控制的呢?

????這就到了框圖的下部分篮条,在接收移位寄存器弟头、發(fā)送移位寄存器都還有一個進(jìn)入的箭頭,分別連接到接收器控制兑燥、發(fā)送器控制亮瓷。而這兩者連接的又是接收器時鐘琴拧、發(fā)送器時鐘降瞳。也就是說,異步通信盡管沒有時鐘同步信號蚓胸,但是在串口內(nèi)部挣饥,是提供了時鐘信號來進(jìn)行控制的。而接收器時鐘和發(fā)送器時鐘有是由什么控制的呢沛膳?

????可以看到扔枫,接收器時鐘和發(fā)送器時鐘又被連接到同一個控制單元,也就是說它們共用一個波特率發(fā)生器锹安。同時也可以看到接收器時鐘(發(fā)生器時鐘)的計算方法短荐、USRRTDIV的計算方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叹哭,一起剝皮案震驚了整個濱河市忍宋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌风罩,老刑警劉巖糠排,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異超升,居然都是意外死亡入宦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門室琢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乾闰,“玉大人,你說我怎么就攤上這事盈滴⊙募纾” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宽菜。 經(jīng)常有香客問我谣膳,道長,這世上最難降的妖魔是什么铅乡? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任继谚,我火速辦了婚禮,結(jié)果婚禮上阵幸,老公的妹妹穿的比我還像新娘花履。我一直安慰自己,他們只是感情好挚赊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布诡壁。 她就那樣靜靜地躺著,像睡著了一般荠割。 火紅的嫁衣襯著肌膚如雪妹卿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天蔑鹦,我揣著相機(jī)與錄音夺克,去河邊找鬼。 笑死嚎朽,一個胖子當(dāng)著我的面吹牛铺纽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哟忍,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼狡门,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锅很?” 一聲冷哼從身側(cè)響起其馏,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粗蔚,沒想到半個月后尝偎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹏控,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年致扯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片当辐。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡抖僵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缘揪,到底是詐尸還是另有隱情耍群,我是刑警寧澤义桂,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站蹈垢,受9級特大地震影響慷吊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜曹抬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一溉瓶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谤民,春花似錦堰酿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至为牍,卻和暖如春哼绑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吵聪。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工凌那, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吟逝。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赦肋,于是被迫代替她去往敵國和親块攒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容