?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機(jī)的過程,其中包括51單片機(jī)和STM32單片機(jī)兩部分;建議先學(xué)習(xí)51單片機(jī),其是STM32等高級單片機(jī)的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。
?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機(jī),且有一定C語言基礎(chǔ)的的童鞋。
??專欄目標(biāo):實(shí)現(xiàn)從零基礎(chǔ)入門51單片機(jī)和STM32單片機(jī),力求在玩好單片機(jī)的同時,能夠了解一些計(jì)算機(jī)的基本概念,了解電路及其元器件的基本理論等。?? 專欄主要內(nèi)容: 主要學(xué)習(xí)STM32單片機(jī)的功能、各個模塊、單片機(jī)的外設(shè)、驅(qū)動等,最終玩好單片機(jī)和單片機(jī)的外設(shè),全程手敲代碼,實(shí)現(xiàn)我們所要實(shí)現(xiàn)的功能。
?? 專欄說明 :如果文章知識點(diǎn)有錯誤的地方,歡迎大家隨時在文章下面評論,我會第一時間改正。讓我們一起學(xué)習(xí),一起進(jìn)步。
??專欄主頁:http://t.csdn.cn/HCD8v
本學(xué)習(xí)過程參考:https://space.bilibili.com/383400717
STM3單片機(jī)安裝軟件、各種資料以及源碼的路徑:
鏈接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取碼:asdf
鏈接里壓縮包的解壓密碼:32
本大節(jié)主要學(xué)習(xí)USART的相關(guān)知識,包含九小節(jié):
第一小節(jié)主要學(xué)習(xí)USART串口協(xié)議的理論基礎(chǔ)知識
第二小節(jié)主要學(xué)習(xí)USART串口外設(shè)的理論基礎(chǔ)知識
第三小節(jié)是對第一、二小節(jié)的內(nèi)容寫一個串口發(fā)送程序進(jìn)行練習(xí)
第四小節(jié)是對第一、二小節(jié)的內(nèi)容再寫一個串口發(fā)送+接收的程序進(jìn)行練習(xí)
第五小節(jié)主要學(xué)習(xí)USART串口數(shù)據(jù)包的理論基礎(chǔ)知識
第六小節(jié)是對第五小節(jié)的內(nèi)容寫一個串口收發(fā)HEX數(shù)據(jù)包程序進(jìn)行練習(xí)
第七小節(jié)是對第五小節(jié)的內(nèi)容再寫一個串口收發(fā)文本數(shù)據(jù)包程序進(jìn)行練習(xí)
第八小節(jié)主要了解FlyMcu串口下載的知識
第九小節(jié)主要了解STLINK Utility串口下載的知識
最終附上所有的源代碼;
本小節(jié)主要學(xué)習(xí)USART串口協(xié)議的理論基礎(chǔ)知識。
一、STM32通信接口介紹
- 以上通信接口,STM32C8T6均支持;
- USART包含TX和RX兩個引腳,也叫TXD和RXD;TX(Transmit Exchange)是數(shù)據(jù)發(fā)送腳,RX(Receive Exchange)是數(shù)據(jù)接收腳;數(shù)據(jù)按照協(xié)議在這些引腳上進(jìn)行輸入和輸出,從而實(shí)現(xiàn)通信;
- USART是全雙工的模式;全雙工是指通信雙方能夠同時進(jìn)行雙向通信,一般來說,全雙工的通信都有兩根通信線;比如串口,一根TX發(fā)送,一根RX接收;
- USART是異步通信,所以需要通信雙方約定一個采樣頻率,并且還需要加一些幀頭幀尾等進(jìn)行采樣位置的對齊;
- USART的電平是單端電平,也就是說它們引腳的高低電平都是對GND的電壓差;所以單端通信的雙方必須共地,也就是把GND接在一起;
二、串口通信
- 上圖的底部三幅圖,左邊是USB轉(zhuǎn)串口模塊, 上面的芯片是CH340;這個芯片可以把串口協(xié)議轉(zhuǎn)換為USB協(xié)議,它一邊是USB口,可以插在電腦上,另一邊是串口的引腳,可以和支持串口的芯片連接在一起;這樣就能實(shí)現(xiàn)串口和電腦的通信了;中間的圖是陀螺儀傳感器模塊;右邊是藍(lán)牙串口模塊;
三、硬件電路
- 上圖就是串口的接線圖
- 一般串口通信模塊都有四個引腳,VCC、TX、RX、GND;VCC和GND是供電,TX和RX是通信的引腳;串口通信的TX、RX、GND是必須要接的;上面的VCC,如果兩個設(shè)備都有獨(dú)立供電,那么VCC可以不接;
四、電平標(biāo)準(zhǔn)
- 單片機(jī)中最常用的就是TTl電平;
五、串口參數(shù)及時序
- 上圖底部的兩張時序圖,就是串口發(fā)送一個字節(jié)的格式,這個格式是串口協(xié)議規(guī)定的
- 串口中,每一個字節(jié)都裝載在一個數(shù)據(jù)幀里面,每個數(shù)據(jù)幀都有起始位、數(shù)據(jù)位和停止位組成,左圖中數(shù)據(jù)位有8個,代表一個字節(jié)的8位;右圖的數(shù)據(jù)位有9個,除了一個字節(jié)的8位外,最后一位是奇偶校驗(yàn)位;
- 串口的參數(shù)包括波特率、起始位、數(shù)據(jù)位、校驗(yàn)位、停止位等
- 波特率的用途是規(guī)定串口通信的速率;
- 串口的空閑狀態(tài)是高電平,也就是沒有數(shù)據(jù)傳輸?shù)臅r候,引腳必須要置高電平,作為空閑狀態(tài);然后需要傳輸?shù)臅r候,必須要先發(fā)送一個起始位,這個起始位必須是低電平,來打破空閑狀態(tài)的高電平,產(chǎn)生一個下降沿,這個下降沿就告訴接收設(shè)備,這一幀數(shù)據(jù)要開始了;
- 同理,當(dāng)數(shù)據(jù)發(fā)送結(jié)束時必須有一個停止位,用于數(shù)據(jù)幀間隔,固定為高電平;同時這個停止位也是為下一個起始位做準(zhǔn)備;
- 所以起始位固定為0,產(chǎn)生下降沿,表示傳輸開始;停止位固定為1,把引腳恢復(fù)成高電平;
- 數(shù)據(jù)位是低位先行,也就是先發(fā)送低位,再發(fā)送高位;比如要想發(fā)送
0x0F
,也就是00001111
,波形如下圖所示:
六、串口時序
文章來源:http://www.zghlxwxcb.cn/news/detail-574403.html
- 上面列出了幾個串口通信的實(shí)際波形;看完這幾個波形我們就能大致理解串口是如何傳輸數(shù)據(jù)的了;
- 首先左邊第一個波形是發(fā)送一個字節(jié)數(shù)據(jù)0x55時,再TX引腳輸出的波形;因?yàn)榇趥鬏斒菑牡臀坏礁呶粋鬏數(shù)?,所以第一個波形從低到高依次是1->0->1->0->1->0->1->0,所以從高到底排列的二進(jìn)制數(shù)據(jù)就是
01010101
,也就是0x55
; - 第一個波形波特率是9600,所以每一位的時間就是1/9600,大概是104us,可以看到,上圖第一個波形每一位就是100us多一點(diǎn),就是104us;沒發(fā)送數(shù)據(jù)的時候,空閑狀態(tài)是高電平,數(shù)據(jù)幀開始,先發(fā)送起始位,產(chǎn)生下降沿,代表數(shù)據(jù)幀開始;數(shù)據(jù)0x55轉(zhuǎn)為二進(jìn)制,低位先行,就是依次發(fā)送10101010;然后這個參數(shù)是8位數(shù)據(jù),1位停止,無校驗(yàn);所以8個數(shù)據(jù)位結(jié)束后,緊跟著后面就是停止位,把引腳置回高電平,這樣一個數(shù)據(jù)幀就完成了;
- 同樣的道理,左邊第二個波形是發(fā)送0xAA;
- 左邊第三個波形是發(fā)送0xFF
- 左邊第四個波形是發(fā)送0x00
- 右邊的波形波特率改為了4800,也就是波特率變?yōu)橐话?,那相?yīng)的,波形的時長就會變?yōu)樵瓉淼膬杀叮?/li>
- 右邊的第二個波形加了奇偶校驗(yàn)位
七、串口通信總結(jié)
總結(jié)一下就是:
TX引腳輸出定時反轉(zhuǎn)的高低電平;RX引腳定時讀取引腳的高低電平;每個字節(jié)的數(shù)據(jù)加上起始位、停止位、可選的校驗(yàn)位,打包成數(shù)據(jù)幀,依次輸出在TX引腳,另一端RX引腳依次接收這樣就完成了字節(jié)數(shù)據(jù)的傳遞;這就是串口通信文章來源地址http://www.zghlxwxcb.cn/news/detail-574403.html
到了這里,關(guān)于STM32單片機(jī)(九)USART串口----第一節(jié):USART串口協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!