【STM32】UART串口通訊學習

零、前言:

兩天看完這本書:

腦子裏一堆一堆的知識.....睡一覺翻幾個身,再到公司,成了一堆的漿糊...不行,我得做個實打實的東西,通過實踐去理解。

上次點亮的STM32開發板的LED燈,算是一個腳指頭踏入STM32中。這次我想做一個串口通訊,用一根RS-232-usb線,將主板和電腦相連,板子能夠接受我電腦發送的數據,並回復我得發送,本次實驗就算成功。

一、UART:

(這篇博客介紹的不錯:https://blog.csdn.net/junyeer/article/details/46761853

(摘自百度百科,讓我理解了經常再串口通訊工具中見到的com字樣)

UART是一種通用串行數據總線,用於異步通信。
該總線雙向通信,可以實現全雙工傳輸和接收。
在嵌入式設計中,UART用於主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件。

UART是通用異步收發器(異步串行通信口)的英文縮寫,它包括了RS232、RS449、RS423、RS422和RS485等接口標準規範和總線標準規範,即UART是異步串行通信口的總稱。 
而RS232、RS449、RS423、RS422和RS485等,是對應各種異步串行通信口的接口標準和總線標準,它規定了通信口的電氣特性、傳輸速率、連接特性和接口的機械特性等內容。
實際上是屬於通信網絡中的實體層(Physical Layer)的概念,與通信協議沒有直接關係。而通信協議,是屬於通信網絡中的資料鏈接層(Data Link Layer)的概念。 
COM是PC(個人計算機)上,異步串行通信口的簡寫。由於歷史原因,IBM的PC外部接口配置爲RS232,成爲實際上的PC界默認標準。所以,現在PC機的COM均爲RS232。
若配有多個異步串行通信口,則分別稱爲COM1、COM2... 。

UART是一種異步傳輸接口,不需要時鐘線,通過起始位和停止位及波特率進行數據識別。

1.接口  
    UART僅使用兩條線TXDRXD用於數據的發和收。

2.數據格式
    1)起始位
    數據線空閒狀態爲高電平,要發送數據時將其拉低一個時鐘週期表示起始位。
    2)數據位
    使用校驗位時,數據位可以有5~8位;如果不使用校驗位,數據位可以達9位。
    3)校驗位
    奇偶校驗,保證包括校驗位和數據位在內的所有位中1的個數爲奇數或偶數。
    4)停止位
    爲了表示數據包的結束,發送端需要將信號線從低電平變爲高電平,並至少保持2個時鐘週期。
3.優缺點
    1)優點
    只使用兩條信號線;
    不需要時鐘信號;
    有校驗位進行錯誤檢測;
    2)缺點
    傳輸速率比較低。


4.URAT在計算機中的運用

UART是計算機中串行通信端口的關鍵部分。在計算機中,UART相連於產生兼容RS232規範信號的電路。RS232標準定義邏輯“1”信號相對於地爲-3到-15伏,而邏輯“0”相對於地爲+3到+15伏。所以,當一個微控制器中的UART相連於PC時,它需要一個RS232驅動器來轉換電平。

Uart這裏指的是TTL電平的串口;RS232指的是RS232電平的串口。

TTL電平是5V的,而RS232是負邏輯電平,它定義+5~+12V爲低電平,而-12~-5V爲高電平。

Uart串口的RXD、TXD等一般直接與處理器芯片的引腳相連,而RS232串口的RXD、TXD等一般需要經過電平轉換(通常由Max232等芯片進行電平轉換)才能接到處理器芯片的引腳上,否則這麼高的電壓很可能會把芯片燒壞。

我們平時所用的電腦的串口就是RS232的,當我們在做電路工作時,應該注意下外設的串口是Uart類型的還是RS232類型的,如果不匹配,應當找個轉換線(通常這根轉換線內有塊類似於Max232的芯片做電平轉換工作的),可不能盲目地將兩串口相連。

5.對比SPI、I2C、UART、CAN:嵌入式系統中的總線以及接口

SPI 和I2C這兩種通信方式都是短距離的,芯片和芯片之間或者其他元器件如傳感器和芯片之間的通信。SPI和IIC是板上通信,IIC有時也會做板間通信,不過距離甚短,不過超過一米,例如一些觸摸屏,手機液晶屏那些薄膜排線很多用IIC,I2C能用於替代標準的並行總線,能連接的各種集成電路和功能模塊。I2C是多主控總線,所以任何一個設備都能像主控器一樣工作,並控制總線。總線上每一個設備都有一個獨一無二的地址,根據設備它們自己的能力,它們可以作爲發射器或接收器工作。多路微控制器能在同一個I2C總線上共存這兩種線屬於低速傳輸。

而UART是應用於兩個設備之間的通信,如用單片機做好的設備和計算機的通信。這樣的通信可以做長距離的。UART速度比上面兩者者快,最高達100K左右,用與計算機與設備或者計算機和計算之間通信,但有效範圍不會很長,約10米左右,UART優點是支持面廣,程序設計結構很簡單,隨着USB的發展,UART也逐漸走向下坡。

CAN 通訊距離最大是10 公里(設速率爲5Kbps),或最大通信速率爲1Mbps(設通信距離爲40 米)。
CAN 總線上的節點數可達110 個。通信介質可在雙絞線,同軸電纜,光纖中選擇。
CAN 採用非破壞性的總線仲裁技術,當多個節點同時發送數據時,優先級低的節點會主動退出發送,高優先級的節點可繼續發送,節省總線仲裁時間。
CAN 是多主方式工作,網上的任一節點均可在任意時刻主動地向網絡上其他節點發送信息。
CAN 採用報文識別符識別網絡上的節點,從而把節點分成不同的優先級,高優先級的節點享有傳送報文的優先權。報文是短幀結構,短的傳送時間使其受干擾概率低,CAN 有很好的效驗機制,這些都保證了CAN 通信的可靠性。
————————————————
版權聲明:本文爲CSDN博主「HUST_Miao」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010183728/article/details/81984433

二、查看芯片手冊以及電路圖,找到UART的接口

三、配置串口 通過STM32CubeMX

將CPU的引腳配置相應的串口(它不想GPIO是通用的IO引腳)

更新代碼,下載到本地。先連接上板子,看能否燒錄程序,再驗證剛纔配置的串口PC能否識別到。

white rx     green tx    black gnd

四、編程思路

  1. 使能 RX和 TX 引腳 GPIO時鐘和 USART時鐘;
  2. 初始化 GPIO,並將 GPIO複用到 USART上;
  3. 配置 USART 參數;
  4. 配置中斷控制器並使能 USART接收中斷;
  5. 使能 USART;
  6. 在 USART接收中斷服務函數實現數據接收和發送。

 ----------------------------

MD,搞了一天的串口,看了無數的博客,代碼和CubeMX自動生成的都不一樣啊,沒寫出來,感覺與原理都理解了,就是做不出功能,啊煩啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章