【STM32實踐篇】:串口通信

文章目錄

  • 1. 串行通信與并行通信
  • 2. 異步通信與同步通信
  • 3. 單工,半雙工和全雙工通信
  • 4. 通信速率和接口標準
  • 5. USART 結構框圖
  • 6. 串口電路
    • 6.1 串口之間的連接
    • 6.2 串口與 RS232 的轉換和連接
    • 6.3 串口與 RS485 的轉換和連接
    • 6.4 串口與 USB 的轉換和連接
  • 7. USART 字符說明


在這里插入圖片描述


1. 串行通信與并行通信

  • 串行通信是一種數據逐位順序傳輸的通信方式,發送設備把 8 位數據(D0~D7)通過單條線路“順次傳送”,接收設備逐位接收后再還原成完整數據。
    • 在這里插入圖片描述
  • 并行通信是一種多位二進制數據通過多條獨立線路同時傳輸的通信方式,下圖中:發送端先發 “詢問”,接收端回復 “應答”,發送設備與接收設備間有 8 條數據線,8 位數據通過這 8 條線同時發送,接收端在同一時刻采樣所有數據線的電平,直接還原出完整的 8 位數據。
    • 在這里插入圖片描述

2. 異步通信與同步通信

  • 異步通信是一種 “以字符為單位、無需全局時鐘同步” 的串行通信方式,數據按 “字符 / 字節” 獨立封裝傳輸,字符與字符之間的時間間隔完全任意,發送端可隨時發送下一個字符,但每個字符中的各位是以固定的時間傳送的,收發雙方通過“起始位 + 停止位”實現字符級局部同步。
    • 在這里插入圖片描述
    • 字符幀是異步串行通信中傳輸單個字符(或字節)的 “標準化數據包”:
      • 空閑狀態:通信線路在無數據傳輸時的默認狀態;
      • 起始位:標志一個字符幀的開始,固定為 1 位低電平;
      • 數據位:實際傳輸的有效字符數據,位數可靈活配置(5/6/7/8 位常見);
      • 校驗位:用于簡單錯誤檢測(奇校驗 / 偶校驗 / 無校驗);
      • 停止位:標志一個字符幀的結束,固定為 1 位,1.5 位或 2 位高電平;
      • 在這里插入圖片描述
  • 同步通信是一種 “依賴全局時鐘信號,實現連續數據流同步傳輸” 的通信方式,收發雙方通過 “統一時鐘節奏” 采樣數據。
    • 在這里插入圖片描述
    • 外同步使用獨立時鐘線,發送方同時傳輸 “數據信號”(如01101)和 “時鐘信號”,接收方通過時鐘信號的邊沿(上升 / 下降沿) 采樣數據位。
    • 自同步無獨立時鐘線,發送方將 “時鐘信息嵌入數據信號”,接收方通過解碼數據信號的跳變提取時鐘。

3. 單工,半雙工和全雙工通信

  • 單工通信是一種 “數據只能沿單一固定方向傳輸,無法反向反饋” 的通信方式。
    • 在這里插入圖片描述
  • 半雙工通信是一種 “數據可雙向傳輸,但同一時刻只能單向進行” 的通信方式。
    • 在這里插入圖片描述
  • 全雙工通信是一種 “通信雙方可同時雙向傳輸數據,發送與接收完全獨立、互不干擾” 的通信方式。
    • 在這里插入圖片描述

4. 通信速率和接口標準

  • 比特率表示每秒傳輸的二進制位數,bps(bits per second,比特 / 秒)。
  • 波特率表示每秒傳輸的碼元數量,一個碼元可表示多個二進制位;比特率與波特率的關系由每個碼元攜帶的比特數決定,公式為:比特率=波特率×每個碼元的比特數。
  • RS–232C 接口:25針 – DB25,9針 – DB9。
    • 在這里插入圖片描述
    • 9針公頭和母頭
      • 在這里插入圖片描述
    • 9針和25針管腳功能:
      • 在這里插入圖片描述
    • RS–232C 電平標準:邏輯1:-3V ~ -15V(負電壓),邏輯0:+3V ~ +15V(正電壓)。
  • 常用通信格式:96-N-8-1。
    • 96:波特率9600 bps;
    • N:無校驗;
    • 8:數據位8位;
    • 1:停止位1位;

5. USART 結構框圖

在這里插入圖片描述

  1. 功能引腳

    • RX:接收數據輸入引腳。
    • TX:發送數據輸出引腳。
    • 同步模式下需要 SCLK:發送器時鐘輸出。
    • 硬件流控制模式下需要 :
      • nRTS(Request To Send,低有效):
        • 若接收緩沖區有空間,nRTS 輸出低電平(請求發送方 “可以發數據”)。
        • 若接收緩沖區已滿,nRTS 輸出高電平(告訴發送方 “暫停發送,避免溢出”)。
      • nCTS(Clear To Send,低有效):
        • 若外部設備 nRTS 為低電平,USART 的 CTS 檢測到后,啟動發送
        • 若外部設備 nRTS 為高電平,USART 的發送自動掛起,直到 CTS 變低。
  2. 數據寄存器

    • 發送流程 CPU → 外部設備:CPU/DMA 寫并行數據 → 存入 TDR 發送數據寄存器 → 轉移到 發送移位寄存器進行并行→串行拆分 → 按幀格式逐位輸出到 TX 引腳,串行信號輸出。
    • 接收流程 外部設備 → CPU:RX 引腳輸入串行信號 → 送入 接收移位寄存器進行串行→并行拼接 → 拼接為完整數據存入 RDR 接收數據寄存器 → CPU/DMA 讀并行數據。
  3. 控制器

    • 發送控制:
      • CR1 寄存器 → TE:
        • 置 1 → 激活發送移位寄存器,允許從 TDR 取數據并串行輸出。
        • 置 0 → 關閉發送,TX 引腳回到空閑狀態(高電平)。
    • 接收器控制:
      • CR1 寄存器 → RE:
        • 置 1 → 激活接收移位寄存器,允許從 RX 引腳采樣串行信號。
        • 置 0 → 關閉接收,RX 引腳輸入被忽略。
    • USART 中斷:
      • 在這里插入圖片描述
      • 在這里插入圖片描述
  4. 波特率發生器

    • 波特率=fPCLK8×(2?OVER8)×USARTDIV\text{波特率} = \frac{f_{\text{PCLK}}}{8 \times (2 - \text{OVER8}) \times \text{USARTDIV}} 波特率=8×(2?OVER8)×USARTDIVfPCLK??
      • fPCLK:系統總線時鐘。
      • OVER8=0:采用 16 倍過采樣;OVER8=1:采用 8 倍過采樣。
      • USARTDIV=DIV_Mantissa+DIV_Fraction16\text{USARTDIV} = \text{DIV\_Mantissa} + \frac{\text{DIV\_Fraction}}{16} USARTDIV=DIV_Mantissa+16DIV_Fraction?

6. 串口電路

6.1 串口之間的連接

  • 串口數據收發線交叉連接,并且共GND
  1. 帶硬件控制流:
    • 在這里插入圖片描述
  2. 無硬件控制流:
    • 在這里插入圖片描述

6.2 串口與 RS232 的轉換和連接

  • SP3232 是一款雙通道 RS-232 電平轉換芯片,核心功能是實現 TTL/CMOS 電平與 RS-232 電平的雙向轉換,解決不同電平標準的設備間通信問題。
  • 引腳功能:
    • 電源與接地引腳:VCC – 接系統電源;GND – 與系統地共地。
    • 電荷泵電容引腳:C1+,C2+ – 外接電容正極;C1-,C2- – 外接電容負極。
    • 串口通信引腳:
      • RINx – 接 RS-232 的 RX 引腳。
      • ROUTx – 接單片機的 UART RX 引腳。
      • DINx – 接單片機的 UART TX 引腳。
      • DOUTx – 接 RS-232 的 TX 引腳。
  • 在這里插入圖片描述

6.3 串口與 RS485 的轉換和連接

  • SP3485 是一款低功耗半雙工 RS-485 收發器芯片,核心功能是實現 TTL/CMOS 電平與 RS-485 差分電平的雙向轉換。
  • 電源與接地引腳:VCC – 接系統電源;GND – 與系統地共地。
  • 數據收發與使能控制引腳:
    • RO – 接單片機的 UART RX 引腳。
    • DI – 接單片機的 UART TX 引腳。
    • RE – 通常與 DE 引腳短接。
    • DE – 與 RE 短接后,接單片機的 GPIO 引腳(控制收發方向)。
  • RS-485 總線差分引腳:
    • A 差分正端 – 接 RS-485 總線的 A 線。
    • B 差分負端 – 接 RS-485 總線的 B 線。
  • 在這里插入圖片描述

6.4 串口與 USB 的轉換和連接

  • CH340C 是 USB 轉串口芯片,支持 USB 轉 TTL/RS232/RS485 等接口。
  • 電源與接地引腳:VCC – 接系統電源;GND – 與系統地共地。
  • USB 通信引腳:D+,D- 直接連接 USB 接口的 D +,D - 信號線,無需串聯電阻,芯片內置 USB 上拉電阻。
  • 串口通信引腳:TXD 串口數據發送端,連接MCU 的 RXD 引腳,RXD 串口數據接收端,連接MCU 的 TXD 引腳。
  • RTS#:請求發送信號,低電平有效;低電平時,三極管導通,BOOT0 被拉到高電平,進入下載模式。
  • DTR#:數據終端就緒信號,低電平有效;低電平時,三極管導通,RESET 被拉到低電平,觸發復位。
  • 在這里插入圖片描述

7. USART 字符說明

  • 可通過對 USART_CR1 寄存器中的 M 位進行編程來選擇8位或9位的字長,一般設置為8位。
  • TX 引腳在起始位工作期間處于低電平狀態,在停止位工作期間處于高電平狀態。
  • 空閑字符可理解為整個幀周期內電平均為“1”(停止位的電平也是“1”),該字符后是下一個數據幀的起始位。
  • 停止字符可理解為在一個幀周期內接收到的電平均為“0”。發送器在中斷幀的末尾插入1或2個停止位(邏輯“1”位)以確認起始位。
  • 發送和接收由通用波特率發生器驅動,發送器和接收器的使能位分別置1時將生成相應的發送時鐘和接收時鐘。
    在這里插入圖片描述

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

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

相關文章

Trae IDE評測體驗:通過 MCP Server - Figma AI Bridge 一鍵將 Figma 轉為前端代碼

Trae IDE評測體驗:通過 MCP Server - Figma AI Bridge 一鍵將 Figma 轉為前端代碼 在現代前端開發中,從設計稿到可用頁面的交付往往需要大量重復勞動:切圖、手寫樣式、布局調整……而借助 MCP Server - Figma AI Bridge,我們可以…

文獻閱讀 250715-Atmospheric rivers cause warm winters and extreme heat events

Atmospheric rivers cause warm winters and extreme heat events 來自 <Atmospheric rivers cause warm winters and extreme heat events | Nature> ## Abstract: Definition: Atmospheric rivers (ARs) are narrow regions of intense water vapour transport in the …

線上協同辦公時代:以開源AI大模型等工具培養網感,擁抱職業變革

摘要&#xff1a;在提倡線上協同辦公的時代背景下&#xff0c;職場人需迅速提升工作能力以適應職業變革。培養網感成為時代所需&#xff0c;它為快速連接時代奠定基礎。本文深入探討了開源AI大模型、AI智能名片、S2B2C商城小程序源碼等工具在培養網感過程中的重要作用&#xff…

Netty網絡聊天室及擴展序列化算法

一、前言Netty是一個基于Java的高性能、事件驅動的網絡應用框架&#xff0c;廣泛應用于各種網絡通信場景。本文將介紹如何使用Netty構建一個簡單的網絡聊天室&#xff0c;并擴展序列化算法來提高數據傳輸效率和靈活性。二、Netty網絡聊天室的實現1. 項目結構我們將使用Maven構建…

基于單片機金沙河糧倉環境監測系統設計與實現

摘 要 本文圍繞基于單片機的金沙河糧倉環境監測系統展開設計與實現研究。系統以單片機為核心&#xff0c;集成 DHT11、MQ - 135 等傳感器&#xff0c;可實時精準監測糧倉溫濕度、氣體成分等關鍵環境參數。借助 LoRa、ESP8266 實現數據的可靠傳輸與遠程通信 &#xff0c;OLED 屏…

如何解決Android Studio安裝時無法下載SDK的問題(Windows、Linux、Mac解決方案大全)

如何解決Android Studio安裝時無法下載SDK的問題&#xff08;Windows、Linux、Mac解決方案大全&#xff09; 前言 對于全棧開發者而言&#xff0c;安裝 Android Studio 是邁向 Android 開發的第一步&#xff0c;但在 Windows、Linux、macOS 等不同平臺上&#xff0c;經常會遇…

SQL Server從入門到項目實踐(超值版)讀書筆記 21

9.5 數據的內連接查詢連接是關系數據庫模型的主要特點&#xff0c;連接查詢是關系數據庫中最主要的查詢&#xff0c;主要包括內連接、外連接等。內連接查詢操作列出與連接條件匹配的數據行&#xff0c;它使用比較運算符比較被鏈接列的列值。具體語法格式如下&#xff1a;SELECT…

瑞芯微7月17日舉辦開發者大會,多款AIoT新品發布,觸覺智能RK方案商報導

瑞芯微第九屆開發者大會RKDC 2025將有多款新品發布。 據瑞芯微電子Rockchip此前宣布&#xff1a;該企業的本年度開發者大會RKDC 2025將于7月17~18日在福建福州海峽國際會展中心舉行。本次瑞芯微開發者大會以“AIoT模型創新重做產品”為主題&#xff0c;關注傳統IoT功能設備向場…

Eureka+Ribbon實現服務注冊與發現

目錄 一、相關文章 二、兼容說明 三、服務注冊 四、服務發現 一、相關文章 基礎工程&#xff1a;gradle7.6.1springboot3.2.4創建微服務工程-CSDN博客 Eureka服務端啟動&#xff1a;https://blog.csdn.net/cherishSpring/article/details/149473554 Ribbon負載均衡&#…

數據庫、HTML

一、數據庫 數據庫文件與普通文件區別: 普通文件對數據管理(增刪改查)效率低2.數據庫對數據管理效率高&#xff0c;使用方便 常用數據庫: 1.關系型數據庫: 將復雜的數據結構簡化為二維表格形式 大型:0racle、DB2 中型:MySq1、sQLServer 小型:Sqlite 2.非關系型數據庫以鍵值對…

RCE隨筆(1)

哪些是可以執行代碼執行&#xff1a;php代碼。eval如&#xff1a;eval:<?php eval($_post[key]);eval&#xff1a;php中不被叫做函數叫動態執行命令assert&#xff1a;執行函數call_user_func_array<?php call_user_func_array(assert,array($_REQUEST[shu]));傳入xxs-…

FPGA——ZYNQ7020學習日記(PS端)4(開始PS控制VGA顯示)

1.DMA 我們的整體VGA顯示分為幾步&#xff1a;比如先導入VIDEO TIMING CONTROL來做對輸入數據的時序“對齊”&#xff0c;這里開源騷客寫的很詳細&#xff0c;先用了一個虛擬IO&#xff08;VIO)來作為輸入&#xff0c;導入了一個簡單的RTL模塊&#xff08;當VTL的使能信號有效…

AGX Xavier 搭建360環視教程【補充一:魚眼去畸變(Fisheye Undistortion)】

對每路幀做魚眼去畸變除了用cv::cuda::remap是否有更好的辦法呢&#xff1f;確實 cv::cuda::remap 不是唯一可選項&#xff0c;甚至未必是最高效或最適合實際業務量級的方案。&#x1f3af; 1?? 去畸變的原理魚眼相機&#xff08;或者大廣角相機&#xff09;會把直線拉彎&…

tomato靶機練習

下載完靶機后&#xff0c;直接運行&#xff0c;選擇安裝路徑后將虛擬機的網絡設置為nat模式&#xff0c;設置完成后重啟虛擬機掃描同一網段&#xff0c;查找主機&#xff0c;這里我們使用kali的nmap&#xff0c;既能找到主機&#xff0c;也能查看開啟的端口依次嘗試&#xff0c…

136. Java 泛型 - 下限通配符

文章目錄136. Java 泛型 - 下限通配符 (? super T)**1. 什么是下限通配符 (? super T)&#xff1f;****2. 為什么使用下限通配符&#xff1f;****3. 示例&#xff1a;使用 ? super Integer 允許添加 Integer****? 正確示例****4. 為什么 List<? super Integer> 和 L…

C++23中的std::expected:異常處理

C23中的std::expected:異常處理 眾所周知&#xff0c;C23以前的異常處理是比較麻煩的&#xff0c;尤其是自己要在可能拋出異常的地方&#xff0c;需要自己去捕獲它&#xff0c;比如除數為0的異常、使用std::stoi函數將字符串轉換成int整型數據、處理文件讀寫的異常等等&#x…

處理Electron Builder 創建新進程錯誤 spawn ENOMEM

這個錯誤 spawn ENOMEM 表明系統內存不足&#xff0c;無法為 Electron Builder 創建新進程。以下是一些可能的解決方案&#xff1a;釋放系統內存關閉不必要的程序和服務增加物理內存 (RAM) 或交換空間 (swap)使用 free -h 和 top 命令檢查內存使用情況臨時增加交換空間# 創建一…

discuz安裝使用教程,及網站部署在公網訪問

Discuz!的安裝主要包括環境準備、程序部署和配置管理三個核心步驟?&#xff0c;有條件 的可以使用寶塔面板或云鏡像簡化流程&#xff0c;本地部署無公網IP的配合類似nat123映射公網訪問&#xff0c;當前最新版本為Discuz! Q&#xff08;2025年發布&#xff09;和Discuz! X3.5&…

深入解析C#數字轉換:隱式與顯式轉換的全面指南

—— 數據精度保衛戰中的checked與unchecked秘籍 &#x1f4cc; 核心概念速覽 1. 隱式轉換 自動發生&#xff0c;無數據丟失風險&#xff08;如 int→long&#xff09;遵循"小類型→大類型"路徑&#xff08;見下圖??&#xff09; [圖1&#xff1a;C#隱式數字轉換路…

量子計算可以解決的三個現實問題

今年是量子力學被發現一百周年。這一突破幫助人們認識到&#xff0c;支配我們周圍世界最小層面&#xff08;分子、原子和亞原子粒子&#xff09;的物理定律&#xff0c;與支配我們在日常生活中與物體相互作用方式的物理定律有著根本的不同。量子力學讓我們能夠了解從血液中的新…