STM32-USART串口通信(9)

一、通信接口介紹

通信的目的:將一個設備的數據傳送到另一個設備,擴展硬件系統。

當STM32想要實現一些功能,但是需要外掛一些其他模塊才能實現,這就需要在兩個設備之間連接上一根或多跟通信線,通過通信線路發送或者接收數據,完成數據交換,從而實現控制外掛模塊和讀取外掛模塊數據的目的。

通信協議:制定通信的規則,通信雙方按照協議規則進行數據收發。

單工:只允許數據單向傳輸;
雙工:指通信雙方能夠進行雙向通信;
半雙工:發送數據和接收數據不能同時傳輸;
全雙工:可以同時進行發送數據和接受數據,一般有兩根通信線,一根發送數據,一根接收數據,發送線路和接收線路互不影響。

時鐘特性分為同步和異步。
同步:一般有時鐘線連接,接收設備可以在時鐘信號的指引下進行采樣;
異步:沒有時鐘線,需要通信雙方約定一個采樣頻率,并且還需要加一些幀頭幀尾等,進行采樣位置的對齊。

電平信號
單端:引腳的高低電平都是對GND的電壓差,單端信號通信的雙方必須要共地,就是把GND連接在一起;
差分:靠兩個差分引腳的電壓差來傳輸信號,差分信號可以極大地提高抗干擾特性。
USB協議中有一些地方也需要用到單端信號,因此USB協議也需要共地。

設備特性
點對點:同一時間只能在兩個設備之間進行通信;
多設備:可以在總線上掛載多個設備。

二、串口通信介紹

1、定義和功能

定義:串口是一種應用十分廣泛的通訊接口,串口成本低,容易使用、通信線路簡單,可實現兩個設備的相互通信。

功能:單片機的串口可以使單片機與單片機、單片機與電腦、單片機與各式各樣的模塊相互通信,極大的擴展了單片機的應用范圍,增強了單片機系統的硬件實力。

51單片機內部自帶UART(通用異步收發器),可實現單片機的串口通信。

2、硬件電路

簡單雙向串口通信有兩根通信線(發送端TXD和接收端RXD);

TXD與RXD要交叉連接;

當只需單向的數據傳輸時,可以直接一根通信線;

當電平標準不一致時,需要加電平轉換芯片。

3、電平標準

電平標準是數據1和數據0的表達方式,是傳輸線纜中人為規定的電壓與數據的對應關系,串口常用的電平標準有下面三種:

(1)TTL電平:+5V表示1,0V表示0;

(2)RS232電平:-3V ~ -15V表示1,+3V ~ +15V表示0;

(3)RS485電平:兩線電壓差+2V ~ +6V表示1,-2V ~ -6V表示0(差分信號)。 ?


4、串口參數及時序圖

波特率:串口通信的速率(發送和接收各數據位的間隔時間),單位;碼元/s或波特(Baud),
比特率:每秒傳輸的比特數,單位bit/s或bps,在二進制調制的情況下,一個碼元就是一個bit,此時波特率就等于比特率,單片機的串口通信,基本都是二進制調制。
二進制調制:高電平表示1,低電平表示0,一位就是1bit。
?? ?例如波特率為1000bps,即1s發送1000位數據,每一位的發送時間就是1ms,接收方也是每隔1ms接收一位。

空閑時:引腳默認為高電平;
起始位:標志一個數據幀的開始,固定為低電平;
數據位:數據幀的有效載荷,1為高電平,0為低電平,從低位到高位發送數據;
檢驗位:用于數據驗證,根據數據位計算得來;
停止位:用于數據幀間隔,固定為高電平。

校驗有三種方式,分別是無校驗、奇校驗和偶校驗。
如果使用奇校驗,則數據位8位+校驗位會出現奇數個1,如傳輸數據是0000 1111,則校驗位會補1。
如果使用偶校驗,則數據位8位+校驗位會出現偶數個1,如傳輸數據是0000 1111,則校驗位會補0。


三、USART串口外設

?通用同步/異步收發器,簡稱USART(Universal Synchronous/Asynchronous Receiver/Transmitter),在51單片機中還會叫UART,也就是通用異步收發器。STM32中這個同步功能用的很少,所以兩者區別不大。

USART是STM32內部集成的硬件外設,可根據數據寄存器的一個字節數據自動生成數據幀時序,從TX引腳發送出去,也可自動接收RX引腳的數據幀時序,拼接為一個字節數據,存放在數據寄存器里。

USART自帶波特率發生器,最高達4.5Mbits/s,它本質上就是一個分頻器,通過APB2總線給的72MHz的頻率,對其進行分頻,得到想要的波特率時鐘,最后在這個時鐘下,進行收發數據。
波特率一般采用9600bits/s、115200bits/s。

STM32中的串口通信可配置數據位長度(8/9),數據位不需要校驗位就是8位,加上校驗位就是9位。可選校驗位(無校驗/奇校驗/偶校驗)。
停止位長度(0.5/1/1.5/2),決定了數據幀的間隔,一般都是采用1位。

支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN。
同步模式:相比正常的串口通信,多了一個時鐘CLK的輸出;
硬件流控制:如A設備TX向B設備的RX發送數據,A設備發送的數據太快,B處理過不來,B就只能選擇拋棄新數據或者覆蓋原數據;如果有硬件流控制,兩者之間的硬件電路上還會多出一根線,如果B沒有準備好,就置高電平,如果準備好了,就置低電平,A接收到了B反饋的準備信號,就只有在B準備好了以后,才會發送數據。硬件流控制就是為了防止B處理數據太慢導致數據丟失的問題。
DMA:串口通信支持DMA數據轉運;
智能卡:跟學校飯卡或者公交卡有關;
IrDA:用于紅外通信的,一個為紅外發光管,一個為紅外接收管,靠閃爍紅外光通信;
LIN:局域網的通信協議。

STM32F103C8T6 USART資源: USART1、 USART2、 USART3。

四、USART框圖

發送數據:首先將要發送的數據,寫入TDR發送數據寄存器,然后會檢測發送移位寄存器中是否有數據正在移位,如果沒有,就會將數據從TDR轉入到移位寄存器中,這時會使標志位TXE置1,TDR為空,這時就可以寫入下一個數據了,移位寄存器中的數據就會向右(低位先行)一位一位地把數據輸出到TX引腳,發送完成后,新的數據就會自動的從TDR轉移到移位寄存器中。
接收數據過程跟上面類似,其中標志位為RXNE,接收數據寄存器非空,標志位置1時,就可以將數據讀走了。

TDR和RDR是在同一個數據寄存器DR中的。

五、USART基本結構

時鐘來源是PCLK2/1,經過波特率分頻后,產生的時鐘通向發送控制器和接收器,它們兩個用來控制移位;

寫入數據通過兩個寄存器移出,然后通過GPIO的復用輸出,輸出到TX引腳,產生串口協議規定的波形。
讀取數據類似。

USART初始化步驟:
(1)RCC開啟時鐘,包括USART和GPIO的時鐘;
(2)GPIO初始化,把TX配置成復用輸出,RX配置成輸入;
(3)配置USART;
(4)如果有接收數據,還需要配置中斷,加上ITconfig和NVIC;
(5)開啟USART。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79860.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MoveIt 2】使用 MoveIt 任務構造器(MoveIt Task Constructor)進行拾取和放置

本教程將引導您創建一個使用 MoveIt 任務構造器規劃抓取和放置操作的包。MoveIt 任務構造器(https://github.com/moveit/moveit_task_constructor/tree/ros2/)提供了一種為包含多個不同子任務(稱為階段)的任務進行規劃的方法。如果…

破解商業綜合體清潔管理困局:商業空間AI智能保潔管理系統全場景解決方案

方案整體概述 隨著商業綜合體日益向智能化、精細化管理轉型,傳統保潔工作面臨人員監管難、清潔效果評估難、應急響應滯后等諸多挑戰。為解決這些痛點,本系統依托計算機視覺、行為識別、圖像分割與深度學習等AI技術,構建一套集人員管理、工作…

spring響應式編程系列:異步消費數據

目錄 示例 大致流程 parallel cache PARALLEL_SUPPLIER newParallel init publishOn new MonoSubscribeOnValue ???????subscribe ???????new LambdaMonoSubscriber ???????MonoSubscribeOnValue.subscribe ???????onSubscribe ??…

視頻編解碼學習十二之Android疑點

一、android.view.SurfaceControl.setDisplaySurface的作用 android.view.SurfaceControl.setDisplaySurface 是 Android 系統中一個 native 層級別的 API,主要用于 設置某個物理顯示屏(Display)的輸出 Surface,屬于 SurfaceFlin…

家用或辦公 Windows 電腦玩人工智能開源項目配備核顯的必要性(含 NPU 及顯卡類型補充)

一、GPU 與顯卡的概念澄清 首先需要明確一個容易誤解的概念:GPU 不等同于顯卡。 顯卡和GPU是兩個不同的概念。 【概念區分】 在討論圖形計算領域時,需首先澄清一個常見誤區:GPU(圖形處理單元)與顯卡(視…

Python----神經網絡(《Deep Residual Learning for Image Recognition》論文和ResNet網絡結構)

一、論文 1.1、論文基本信息 標題:Deep Residual Learning for Image Recognition 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 單位:Microsoft Research 會議:CVPR 2016 主要貢獻:提出了一種深度殘…

Qt/C++開發監控GB28181系統/錄像文件查詢/錄像回放/倍速播放/錄像文件下載

一、前言 搞定了實時預覽后,另一個功能就是錄像回放,錄像回放和視頻點播功能完全一致,唯一的區別就是發送點播的sdp信息中攜帶了開始時間和結束時間,因為是錄像文件,所以有這個時間,而實時視頻預覽這個對應…

在Spark搭建YARN

(一)什么是SparkONYarn模式 Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中運行的一種部署模式,它借助 Hadoop YARN 來管理資源和調度任務。 架構組成 ResourceManager:作…

SpringAI

機器學習: 定義:人工智能的子領域,通過數據驅動的方法讓計算機學習規律,進行預測或決策。 核心方法: 監督學習(如線性回歸、SVM)。 無監督學習(如聚類、降維)。 強化學…

如何用Redis實現分布式鎖?RedLock算法的核心思想?Redisson的看門狗機制原理?

一、Redis分布式鎖基礎實現 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默認30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…

前端面試寶典---js垃圾回收機制

什么是垃圾回收 垃圾回收是指一種自動內存管理機制,當聲明一個變量時,會在內存中開辟一塊內存空間用于存放這個變量。當這個變量被使用過后,可能再也不需要它了,此時垃圾回收器會自動檢測并回收這些不再使用的內存空間。垃圾回收…

阿里媽媽LMA2新進展:集成大語言模型與電商知識的通用召回大模型URM

近日,阿里媽媽在國際頂級學術會議 —— 國際萬維網大會(International World Wide Web Conference, 簡稱WWW)上共同主持了計算廣告算法技術相關的Tutorial(講座),介紹了計算廣告領域的技術發展脈絡&#xf…

數字孿生實時監控汽車零部件工廠智能化巡檢新范式

在汽車制造業面臨數字化轉型時,汽車零部件工廠也面臨著提升生產效率、降低運營成本和增強市場競爭力的多重挑戰。傳統的巡檢方式已經難以滿足現代工廠對高效、精準管理和實時決策的需求。數字孿生系統的出現,為汽車零部件工廠提供了一種創新的智能化巡檢…

【計算機網絡】3數據鏈路層②

1. 數據鏈路層所處的地位 數據鏈路層使用的信道主要有兩種: ①點對點信道:PPP協議 ②廣播信道:有線局域網,CSMA/CD協議;無線局域網,CSMA/CA協議 對比項點對點信道 vs 單播廣播信道 vs 廣播核心是否一致? 一致(一對一傳輸)? 一致(一對所有傳輸)差異點前者是物理層…

c++中的函數(默認參數,占位參數,重載)

1&#xff0c;函數默認參數 在c中&#xff0c;函數的形參列表中的形參是可以有默認值得 語法&#xff1a;返回值類型 函數名 &#xff08;參數 默認值&#xff09;{} 示例&#xff1a; #include<iostream> using namespace std;//函數默認參數 // 就是如果傳了就…

【原創】使用阿里云存放一個臨時共享的文件

在某些場合&#xff0c;需要臨時將一個文件存儲到一個可被公網訪問的地方&#xff0c;某個服務需要訪問一下這個文件。這個文件基本上就是一次壽命&#xff0c;也就是你上傳一下&#xff0c;然后被訪問一下&#xff0c;這個文件的壽命就結束了。 對于這種需求&#xff0c;自建…

Python中列表(list)知識詳解(2)和注意事項以及應用示例

在 Python 中列表&#xff08;list&#xff09; 的包括其結構、常見操作&#xff08;更新、添加、刪除、查找、隊列棧行為等&#xff09;&#xff0c;下面將逐一的進行講解并附相關的示例。 一、列表的基礎知識 1. 定義與特點 定義方式&#xff1a;用 [] 包裹的有序可變集合 …

vscode extention踩坑記

# npx vsce package --allow-missing-repository --no-dependencies #耗時且不穩定 npx vsce package --allow-missing-repository #用這行 code --install-extension $vsixFileName --force我問ai&#xff1a;為什么我的.vsix文件大了那么多 ai答&#xff1a;因為你沒有用 --n…

移動端巡檢點檢,讓設備管理更便捷高效

在企業設備管理的日常工作中&#xff0c;巡檢點檢是保障設備正常運行的重要環節。傳統的巡檢方式依賴紙質記錄、人工操作&#xff0c;效率低、易出錯&#xff0c;已難以滿足現代企業的管理需求。隨著技術發展&#xff0c;越來越多設備管理系統引入移動端功能&#xff0c;為設備…

laravel 中使用的pdf 擴展包 laravel-snappy(已解決中文亂碼)

Centos7 安裝 wkhtmltopdf 1、先查看系統是 32 位的還是 64 位的 uname -a2、通過 composer 安裝 wkhtmltopdf 32位: $ composer require h4cc / wkhtmltopdf-i386 0.12.x $ composer require h4cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h4cc/wkhtmltopdf-…