STM32HAL 快速入門(十六):UART 協議 —— 異步串行通信的底層邏輯

大家好,這里是 Hello_Embed。在前幾篇中,我們通過環形緩沖區解決了按鍵數據丟失問題,而在嵌入式系統中,設備間的數據交互(如單片機與電腦、傳感器的通信)同樣至關重要。UART(通用異步收發傳輸器)是最常用的串行通信協議之一,廣泛應用于調試、數據傳輸等場景。本篇將從 “同步與異步傳輸的區別” 入手,詳解 UART 協議的工作原理、數據格式及關鍵概念,為下一篇 “UART 硬件結構與編程” 打基礎。

一、數據傳輸的兩種基本方式

在講解 UART 之前,我們先明確 “同步傳輸” 與 “異步傳輸” 的核心區別 —— 這是理解 UART(異步協議)的基礎。

1. 同步傳輸
  • 特點:同時發送兩種信號 ——時鐘信號(用于同步)和數據信號(實際傳輸的數據)。
  • 原理:發送方通過時鐘信號的上升沿 / 下降沿通知接收方 “即將傳輸數據”,雙方嚴格按照時鐘節拍同步收發。
  • 類比:就像和朋友約定 “每天下午 3 點準時視頻”,到點后直接開始交流,無需額外確認 “是否準備好”。
2. 異步傳輸
  • 特點:僅發送數據信號,通過信號本身的 “起始標識” 和 “時長約定” 實現同步。
  • 原理:數據信號中包含起始位(標記傳輸開始)、數據位(實際數據)和停止位(標記傳輸結束),收發雙方需提前約定信號時長(如波特率)。
  • 類比:就像打電話 —— 先撥號碼(起始標識),對方接起后開始說話(數據),說完掛電話(停止標識),雙方無需提前約定 “幾點開始”,但需聽懂同一種語言(約定規則)。
  • 實例:紅外遙控器協議 —— 接收端檢測到 “9ms 低電平 + 4.5ms 高電平” 時,判定為傳輸開始;邏輯 1 定義為 “0.56ms 低電平 + 1.69ms 高電平”,邏輯 0 定義為 “0.56ms 低電平 + 0.56ms 高電平”。
對比項同步傳輸異步傳輸
信號線需時鐘線 + 數據線僅需數據線
速率由時鐘信號頻率決定(可動態調整)收發雙方需提前約定(固定波特率)
抗干擾能力強(時鐘同步可修正偏差)弱(依賴信號時長,偏差易導致錯誤)
適用場景高速、短距離(如 SPI、IIC)中低速、長距離(如 UART、紅外)
二、UART 協議:異步串行通信的典型實現

UART(Universal Asynchronous Receiver/Transmitter)是異步傳輸的典型應用,通過單條數據線實現雙向通信,其核心是 “約定數據格式和傳輸速率”,示意圖如下:
請添加圖片描述

1. 通信方式:全雙工

UART 支持全雙工通信,即發送數據(TX)和接收數據(RX)可同時進行,互不干擾。三種通信方式的對比如下:
要使用串口傳輸數據,則需要明白其底層工作邏輯,我們以下圖為例:

通信方式核心特點數據流向典型場景
全雙工同時收發,無沖突雙向并行(TX/RX 獨立)電話通話、視頻會議、以太網通信
半雙工可雙向傳輸,但同一時間只能單向雙向交替(共用一根線)對講機、RS485 半雙工模式(共用一根線)
單工只能單向傳輸(固定發送或接收)單向固定廣播、紅外遙控器(僅發送)、打印機(僅接收)
2. 波特率:傳輸速率的度量

波特率(Baud Rate)是 UART 的核心參數,定義為 “每秒傳輸的信號狀態數(波特)”。在多數場景中,1 個狀態對應 1 位數據,因此波特率等價于 “每秒傳輸的比特數(bit/s)”。

  • 例:波特率 115200 表示 “每秒傳輸 115200 位數據”,傳輸 1 位數據的時間為 1/115200 ≈ 8.68μs
3. 數據傳輸格式:從起始到停止

UART 傳輸 1 字節(8 位)數據的完整格式如下(以傳輸字符‘A’為例):

  1. 起始位:1 位,低電平(默認狀態為高電平,拉低表示傳輸開始);
  2. 數據位:8 位,傳輸實際數據(‘A’的 ASCII 碼為 0x41,二進制01000001);
  3. 校驗位(可選):1 位,用于簡單錯誤檢測(奇校驗 / 偶校驗);
  4. 停止位:1 位、1.5 位或 2 位,高電平(表示傳輸結束,給接收方緩沖時間)。
  • 傳輸 1 字節的總位數:1(起始)+8(數據)+1(停止)=10 位(無校驗位時),總耗時 10/115200 ≈ 86.8μs
    請添加圖片描述
4. 接收方的采樣與同步

接收方如何準確識別每一位數據?以波特率 115200 為例:

  • 檢測到 “起始位”(低電平)后,等待 1.5 個比特時間(1.5×8.68μs ≈ 13μs),此時處于第 1 位數據的中間位置(采樣最穩定);
  • 此后每間隔 1 個比特時間采樣一次,依次獲取 8 位數據;
  • 最后檢測到 “停止位”(高電平),完成一次傳輸。
    請添加圖片描述
5. 容錯機制:抗干擾的采樣策略

為應對信號抖動,UART 接收端采用 “多次采樣” 策略(以 16 次采樣為例):

  • 起始位校驗:需滿足 3 個條件 —— 前 2 次采樣為低電平、中間 3 次(8/9/10)為低電平、最后 2 次為低電平,才認定為有效起始位;
  • 數據位校驗:中間 3 次采樣(8/9/10)中,若 2 次為 0 則判定為 0,2 次為 1 則判定為 1。
6. 校驗位:簡單的錯誤檢測

校驗位用于檢測數據傳輸中的偶然錯誤,分為奇校驗和偶校驗:

  • 奇校驗:數據位中 “1” 的個數為奇數(包括校驗位);
  • 偶校驗:數據位中 “1” 的個數為偶數(包括校驗位)。
  • 例:傳輸‘A’(二進制01000001,含 2 個 1):
    • 奇校驗:校驗位需為 1(總個數 3,奇數);
    • 偶校驗:校驗位需為 0(總個數 2,偶數)。
三、波特率與比特率的區別
  • 波特率:每秒傳輸的 “信號狀態數”(波形變化次數);
  • 比特率:每秒傳輸的 “有效數據位數”(bit/s)。
    多數情況下,1 個信號狀態對應 1 位數據,因此波特率 = 比特率(如 UART)。
    特殊場景:若 1 個信號狀態表示 2 位數據(如 00.7V=00,0.81.5V=01),則比特率 = 波特率 ×2(例:2ms 傳輸 2 個狀態,對應 4 位數據,波特率 = 500 波特,比特率 = 1000bit/s)。
結尾

UART 協議通過 “異步傳輸 + 約定格式” 實現了簡單可靠的串行通信,其核心是波特率同步和數據幀格式。下一篇我們將聚焦 STM32 的 UART 硬件結構,學習如何通過 CubeMX 配置 UART,并結合環形緩沖區實現高效的串口數據收發。
Hello_Embed 繼續帶你從協議原理到硬件實戰,掌握嵌入式通信的核心技能,敬請期待~

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

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

相關文章

使用 C 模仿 C++ 模板的拙劣方法

如下所示,準備兩個宏,一個定義類型,一個定義容器大小。 使用時只要先定義這兩個宏,然后再包含容器頭文件就能生成不同類型和大小的容器了。但是這種方法只允許在源文件中使用,如果在頭文件中使用,定義不同類…

flume接收處理器:構建高可用與高性能的數據鏈路

flume接收處理器:構建高可用與高性能的數據鏈路 在大規模數據采集場景中,單點故障和性能瓶頸是兩大核心挑戰。Flume 通過 Sink Group 接收處理器(Processor) 機制,提供了強大的故障轉移(Failover&#xf…

高級Kafka應用之流處理

40 Kafka Streams與其他流處理平臺的差異在哪里? 什么是流處理平臺? “Streaming Systems”一書是這么定義“流處理平臺”的:流處理平臺(Streaming System)是處理無限數據集(Unbounded Dataset)…

Custom SRP - LOD and Reflections

1 LOD Groups 場景中對象越多,場景就越豐富,但是過多的對象,也會增加 CPU 和 GPU 的負擔.同時如果對象最終渲染在屏幕上后覆蓋的像素太少,就會產生模糊不清的像素點/噪點.如果能夠不渲染這些過小的對象,就能解決噪點問題,同時釋放 CPU GPU,去處理更重要的對象. 裁剪掉這些對象…

【Linux篇章】互聯網身份密碼:解密 Session 與 Cookie 的隱藏玩法和致命漏洞!

本篇摘要 本篇將承接上篇HTTP講解( 戳我查看 )遺留的關于Cookie與Session的介紹,在本篇,將會介紹Cookie的由來,作用,以及缺點等,進而引出Session,最后介紹一下它們的性質等&#xf…

Postman接口測試工具:高效管理測試用例與環境變量,支持斷言驗證及團隊協作同步

之前跟你們聊過能搭知識網絡的 Obsidian,今天換個偏向接口測試的方向 —— 給你們安利一個 Github 上的「Postman」,它是個接口測試工具,官網能直接下載(Postman: The Worlds Leading API Platform | Sign Up for Free&#xff09…

可可圖片編輯 HarmonyOS 上架應用分享

可可圖片編輯 HarmonyOS 上架應用分享 介紹 可可圖片編輯 原名 圖片編輯大師,因為上架審核的時候 ,提示與一些已有應用重名,為了避免沖突,需要改名字,所以苦心思考了一分鐘,就調整成 可可圖片編輯。 應用…

Notepad++近期版本避雷

近期Notepad若干版本存在投毒事件,雖然也歡迎大家使用替代軟件,但是Notepad作為一款開源軟件,如有需要也可以繼續白嫖使用,但是請務必避開若干埋雷版本! 經檢查,部分版本在幫助菜單中加入了有關tw的部分個人…

【lucene核心】impacts的由來

在 Lucene 的 Impact 概念(出現在 ImpactsEnum / Impact 對象里)中:字段 含義 freq 當前 term 在該文檔中出現了多少次(即詞頻 term frequency)。 norm 當前 文檔在該字段中的長度因子(即之前 norms 里保存…

基于Echarts+HTML5可視化數據大屏展示-惠民服務平臺

效果展示代碼結構&#xff1a;主要代碼實現 index.html布局 <!doctype html> <html><head><meta charset"utf-8"><title>雙數智慧公衛-傳染病督導平臺</title><meta http-equiv"refresh" content"60;urlhttps…

【Flink】DataStream API:執行環境、執行模式、觸發程序執行

目錄執行環境getExecutionEnvironmentcreateLocalEnvironmentcreateRemoteEnvironment執行模式流執行模式&#xff08;Streaming&#xff09;批執行模式&#xff08;Batch&#xff09;自動模式&#xff08;AutoMatic&#xff09;觸發程序執行DataStream API是Flink的核心層API&…

CentOS7.6

騰訊云服務器 騰訊云 產業智變云啟未來 - 騰訊 服務器在控制臺顯示 點擊進入面板&#xff0c;顯示所有信息 現在來安裝桌面的遠程控制軟件 寶塔SSH終端:一款同時支持SSH和SFTP客戶端的免費軟件! 點擊立即下載 在云服務器的實例列表復制公網ip 密碼就是服務器的密碼&#xff…

前端架構知識體系:常見圖片格式詳解與最佳實踐

前端開發必備&#xff1a; 在前端開發中&#xff0c;合理選擇圖片格式直接影響網頁加載性能、用戶體驗和帶寬成本。本文將系統梳理常見圖片格式&#xff0c;分析它們的優缺點、壓縮原理、兼容性和推薦使用場景&#xff0c;并提供前端優化實戰建議。1. JPEG / JPG 全稱&#xff…

ARM的編程模型

ARM的編程模型 ARM 的編程模型指的是從程序員&#xff08;特別是匯編程序員和編譯器設計者&#xff09;視角所看到的 ARM 處理器架構。它定義了程序員可以使用的資源、數據操作方式以及規則&#xff0c;主要包括&#xff1a;寄存器組、數據類型、內存訪問方式、執行狀態和異常處…

最大熵強化學習相比傳統強化學習,有什么缺點?

要理解最大熵強化學習&#xff08;MaxEnt RL&#xff09;相比傳統強化學習&#xff08;如DQN、PPO、DDPG等&#xff09;的缺點&#xff0c;首先需要明確兩者的核心差異&#xff1a;傳統RL的目標是“最大化累積獎勵”&#xff0c;而MaxEnt RL在該目標基礎上額外增加了“最大化策…

python生成器與協程深度剖析

目錄 生成器 傳統列表 vs 生成器對比 yield機制深度解析 生成器的高級用法 協程的演進:從yield到async/await 基于yield的協程 現代async/await語法 協程的錯誤處理和超時控制 異步生成器與異步迭代器 異步生成器 異步迭代器實現 實戰案例:異步爬蟲框架設計 生成器…

論文解讀:基于 77 GHz FMCW 毫米波雷達的艙內占位檢測

毫米波 (mm-Wave) 雷達是汽車應用&#xff08;例如高級駕駛輔助系統 (ADAS)&#xff09;的一種解決方案。本研究探索了商用毫米波雷達技術在車內應用領域的應用。本文提出了一種基于 77 GHz 毫米波雷達的車輛占用檢測器框架。本研究采用了德州儀器 (Texas Instruments) 的多輸入…

進程優先級(Process Priority)

&#x1f381;個人主頁&#xff1a;工藤新一 &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄進…

OpenCV的輪廓檢測

1. 輪廓檢測的基本概念輪廓是圖像中連續的、閉合的曲線段&#xff0c;代表物體的邊界&#xff08;如圓形的輪廓是一條閉合曲線&#xff09;。OpenCV 的輪廓檢測通過 cv2.findContours() 實現&#xff0c;可用于形狀識別、物體計數、圖像分割等場景。2. 核心函數與參數&#xff…

亞信安全亮相鴻蒙生態大會2025 攜手鴻蒙生態繪就萬物智聯新藍圖

8 月30 日&#xff0c;以 “新場景?新體驗” 為主題的鴻蒙生態大會 2025 在深圳福田會展中心隆重開幕。本次大會由全球智慧物聯網聯盟&#xff08;GIIC&#xff09;主辦、鴻蒙生態服務&#xff08;深圳&#xff09;有限公司承辦&#xff0c;旨在搭建全球鴻蒙生態伙伴的高層次交…