STM32H562----------串口通信(UART)

1、串口介紹

1.1、 數據通信概念

在單片機中我們常用的通信方式有 USART、IIC、SPI、CAN、USB 等;

1、數據通信方式

根據數據通信方式可分為串行通信和并行通信兩種,如下圖:

串行通信基本特征是數據逐位順序依次傳輸,優點:傳輸線少成本低,抗干擾能力強可用于遠距離傳輸,缺點傳輸速率低

并行通信特征是數據各位可通過多條線同時傳輸,優點傳輸速率高,缺點是成本高,抗干擾能力差;

2、數據傳輸方向

按照數據傳輸方向可分為全雙工、半雙工和單工通信,如下圖所示:

3、數據同步方式

根據數據同步方式可分為同步通信和異步通信,如下圖所示:

同步通信要求通信雙方共用同一時鐘信號,在總線上保持統一的時序和周期完成信息傳輸。

異步通信不需要時鐘信號,而是在數據信號中加入開始位和停止位等一些同步信號,一般通信雙方還會約定傳輸速率。

4、通信速率

在數字通信系統中,通信速率(傳輸速率)指數據在信道中傳輸的速度,分為兩種:傳信率和傳碼率

傳信率:每秒鐘傳輸的信息量,即每秒鐘傳輸的二進制位數,單位為 bit/s(即比特每秒),因而又稱為比特率

傳碼率:每秒鐘傳輸的碼元個數,單位為 Baud(即波特每秒),因而又稱為波特率;

碼元是信號被調制后的概念,每個碼元可以表示一定 bit 的數據信息量。例如子啊 TTL 電平標準的通信中,0V 表示邏輯 0

5V 表示邏輯 1,這時碼元就只可以表示兩種狀態。若在其它通信標準電平中電平信號 0V、2V、4V 和 6V 分別表示二進制

00、01、10、11,這時候碼元就可以表示四種狀態。

比特率和波特率的關系可以用以下關系式表示:

比特率 = 波特率 * log2 M

M 表示碼元承載的信息量,可以理解 M 為碼元的進制數

1.2、串口通信協議簡介

串口按位(bit)發送和接收字節。串口通信協議是指規定了數據包的內容,內容包含了起始位、數據區、校驗位及停止位,

在串口通信中,常用的協議包括 RS-232、RS-422 和 RS-482 等;如下圖所示:

1、波特率

UART 是串口異步通信,不需要時鐘信號,只需約定好兩個設備之間的波特率,常見的波特率是 4800、9600、115200 等;

2、數據幀格式

串口通信的數據幀包括起始位、停止位、有效數據位以及校驗位;

起始位:一般由一個邏輯 0 的數據位表示

有效數據位:起始位之后就是數據位,有效數據位一般會被約定為 5、6、7 或者 8 個位長,一般是低位(LSB)在前高位(MSB) 在后

校驗位:一般用來判斷接受的數據有無錯誤,校驗方法有:奇校驗、偶校驗、0 校驗、1 校驗及無校驗;

奇校驗:指有效數據的和與校驗位中"1"的個數為奇數,如一個 8 位長有效數據為 11001100,共 4 個"1",為達到奇校驗效果

校驗位則為"1";

偶校驗:與上述奇校驗要求相反,要求幀數據與校驗位中"1"的個數為偶數;如數據幀為 11001100,則此時偶校驗位為"0"

0 校驗:指不管數據幀的內容,校驗位總為"0"

1 校驗:即校驗位總為"1"

無校驗:指數據幀中不包含校驗位,一般不使用

停止位:一般通信雙方需約定 0.5、1、1.5 或 2 個邏輯 1 的數據位表示;

1.3、STM32H5 串口外設介紹

STM32H562 的最多可提供 6 路串口(5 路普通串口和 1 路低功耗串口),支持 8/16 倍過采樣、支持自動波特率檢測、支持 Modbus

通信、支持同步單線通信和半雙工單線通訊、支持 LIN、支持調制解調操作、智能卡協議和 IrDA SIR ENDEC 規范、具有 DMA 功能;

USART 框圖如下所示:

1、時鐘與波特率

該部分主要功能是為 USART 提供時鐘以及配置波特率;

如上圖,我們可以看到兩個時鐘域,usart_pclk 時鐘域及 usart_ker_ck 內核時鐘域。

usart_pclk 是外設總線時鐘;

usart_ker_ck 是 USART 時鐘源,獨立于 usart_pclk,由 RCC 提供;

波特率,即每秒鐘傳輸的碼元個數,波特率計算公式分為 16 倍過采樣和 8 倍過采樣;

16 倍過采樣下,波特率計算公式如下:

baud = usart_ker_ckpres/USARTDIV

8 倍過采樣下,波特率計算公式如下:

baud = (2*usart_ker_ckpres)/USARTDIV

2、收發數據

USART 雙向通信有兩個引腳 TX/RX;

USART_TDR 是 USART 發送數據寄存器,USART_RDTR 是 USART 接收數據寄存器,這兩個寄存器都是低 9 位有效;

可通過 USART_CR1 寄存器的 M 位設置字長:

7 位字符長度:M[1:0] = “10”

8 位字符長度:M[1:0] = “00”

9 位字符長度:M[1:0] = “01”

基本都是使用 8 位數據字長;

3、控制寄存器

可以通過控制寄存器控制 USART 數據的發送、數據接收、各種通信模式的設置、中斷、DMA 模式及喚醒單元等;

4、DMA 和中斷功能

USART 支持 DMA 傳輸,可實現高速數據傳輸;

5、USART 信號引腳

在 RS232 硬件流控制模式下需要以下兩個引腳:

CTS(清除以發送):發送器在發送下一幀數據之前會檢測 CTS 引腳,若為低電平,表示可發送數據;若為高電平則在發送完當前數據之后停止發送

RTS(請求以發送):若為低電平,則該信號用于指示 USART 已準備好接收數據。

在 RS485 硬件控制模式下需要下面該引腳:

DE(驅動器使能):該信號用于激活外部收發器的發送模式。

在同步主/從模式和智能卡模式下需要以下引腳:

CK:該引腳在同步主模式和智能卡模式下用作時鐘輸出,在同步從模式下用作時鐘輸入。

NSS:該引腳在同步從模式下用作從器件選擇輸入。

2、代碼詳解

代碼如下:

UART_HandleTypeDef  UART1_Handler;
DMA_HandleTypeDef   UART1TxDMA_Handler;
DMA_HandleTypeDef   UART1RxDMA_Handler;//發送接收緩沖區
uint8_t rx_buffer[512];
uint8_t tx_buffer[256];volatile uint8_t rxComplete = 0;
volatile uint16_t rxlen = 0;
volatile uint8_t dma_tx_busy = 0;void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{GPIO_InitTypeDef GPIO_Initure;if(huart->Instance == USART1){__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_Initure.Pin = GPIO_PIN_9 | GPIO_PIN_10;GPIO_Initure.Mode = GPIO_MODE_AF_PP;GPIO_Initure.Pull = GPIO_NOPULL;GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH;GPIO_Initure.Alternate = GPIO_AF7_USART1;HAL_GPIO_Init(GPIOA, 

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

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

相關文章

20-Oracle 23 ai free Database Sharding-特性驗證

對于Oracle 23ai Sharding 新特性的驗證腳本,目標是涵蓋其核心改進和新增功能。基于 Oracle 23ai 的 Sharding 特性總結(Raft 協議、True Cache、Vector等),結合常見場景驗證。 通過SQL腳本驗證這些特性。例如: 1.基于…

? 常用 Java HTTP 客戶端匯總及使用示例

在 Java 開發中,HTTP 客戶端是與服務端交互的關鍵組件。隨著技術發展,出現了多種 HTTP 客戶端庫,本文匯總了常用的 Java HTTP 客戶端,介紹其特點、適用場景,并附上簡單使用示例,方便開發者快速選擇和上手。 1.常用 HTTP 客戶端一覽 名稱簡介特點HttpClient(JDK 自帶)Ja…

MCP(Model Context Protocol)與提示詞撰寫

隨著大模型(LLM)在復雜任務中的普及,如何讓模型高效調用外部工具和數據成為關鍵挑戰。傳統函數調用(Function Calling)依賴開發者手動封裝 API,而 MCP(Model Context Protocol) 通過…

RootSIFT的目標定位,opencvsharp。

首先截取匹配模板,然后使用rootsift特征匹配,最后定位目標。 對于微弱變化,還是能夠識別定位的,對于傳統算法來說已經不錯了。 目標定位效果: 使用的模板圖片。 using OpenCvSharp; using OpenCvSharp.Features2D;u…

Appium如何支持ios真機測試

ios模擬器上UI自動化測試 以appiumwebdriverio為例,詳細介紹如何在模擬器上安裝和測試app。在使用ios模擬器前,需要安裝xcode,創建和啟動一個simulator。simulator創建好后,就可以使用xcrun simctl命令安裝被測應用并開始測試了。…

近幾年字節飛書測開部分面試題整理

文章目錄 一、面試問題1. 創建索引2. 攔截器(Interceptor)和過濾器(Filter)的區別3. 為什么jwt令牌代替session?4. 有一個100行的數據,和一個1萬行的數據,寫sql 的時候要注意什么?5.…

JDBC基礎關鍵_001_認識

目 錄 一、概述 二、原理 三、接口的作用 四、JDBC 模擬 1.JDBC 接口 2.驅動 3.配置文件 4.調用者 一、概述 JDBC(Java DataBase Connectivity),Java 數據庫連接;是用 Java 語言操作數據庫,使用 Java 語言向數…

SWAN(Scade One) 語言原理介紹

SCADE 團隊于2024年推出了下一代 SCADE 工具 Scade One,工具的建模語言也基于Scade 6 進行了演化。在語言命名方面,并沒有復用"Scade"這一標志性的名稱,而是使用了新的名字:Swan。在本篇中,將敘述 Swan 語言…

【工具教程】多個條形碼識別用條碼內容對圖片重命名,批量PDF條形碼識別后用條碼內容批量改名,使用教程及注意事項

一、條形碼識別改名使用教程 打開軟件并選擇處理模式:打開軟件后,根據要處理的文件類型,選擇 “圖片識別模式” 或 “PDF 識別模式”。如果是處理包含條形碼的 PDF 文件,就選擇 “PDF 識別模式”;若是處理圖片文件&…

sql中group by使用場景

GROUP BY語句在SQL中用于將多個記錄分組為較小的記錄集合,以便對每個組執行聚合函數,如COUNT(), MAX(), MIN(), SUM(), AVG()等。GROUP BY的使用場景非常廣泛,以下是一些典型的應用場景: 統計數量 當你想要計算某個字段的唯一值數…

MongoDB慢查詢臨時開啟方法講解

1、首先連接數據庫 mongosh "mongodb://localhost:27017" 2、選擇目標數據庫 show databases;#顯示所有數據庫 use lidb;#使用某數據庫 3、查看當前分析級別 db.getProfilingStatus() 輸出 { was: 0, slowms: 100, sampleRate: 1, ok: 1 } #was0表示關閉&…

UML活動圖與泳道圖

活動圖的作用,與用例圖類似,也是幫助我們捕獲用戶的需求。 活動圖主要是用來描述用戶的業務流程,如果能把用戶的這個業務流程描述的很清楚的話,就可以幫助我們做用例分析。 1 活動圖定義 活動圖描述了在一個過程中,…

算法練習-回溯

今天給大家帶來的是在dfs查用的降低復雜度的方法---剪枝 所謂減枝 第一題 代碼部分:(未剪枝) 代碼部分(剪枝) 第二題 代碼部分(未剪枝) 剪枝后 通過這些題目可以看出如果沒有進行剪枝操作&#…

Elasticsearch + Milvus 構建高效知識庫問答系統《一》

🔍 Elasticsearch Milvus 構建高效知識庫問答系統(RAG 技術實戰) 📌 目錄 背景介紹Elasticsearch 在知識庫檢索中的作用Milvus 在知識庫檢索中的作用混合檢索:Elasticsearch Milvus完整代碼實現部署建議與優化方向…

10萬QPS高并發請求,如何防止重復下單

1. 前端攔截 首先因為是10萬QPS的高并發請求,我們要保護好系統,那就是盡可能減少用戶無效請求。 1.1 按鈕置灰 很多用戶搶票、搶購、搶紅包等時候,為了提高搶中的概率,都是瘋狂點擊按鈕。會觸發多次請求,導致重復下…

基于單片機的病房呼叫系統(源碼+仿真)

該系統由以 STM32F4 為平臺的監控終端以及以 CC2530 為平臺的無線傳感網組成。系統上電后自動完成 ZigBee 網絡的組建、終端節點的加入,病人可利用便攜式的病人終端發出呼叫求助請求信息、節點在線信息以及對護士的服務評價信息等,這些信息通過路由節點發…

使用WebSocket實時獲取印度股票數據源(無調用次數限制)實戰

使用WebSocket實時獲取印度股票數據源(無調用次數限制)實戰 一、前置準備 1. 獲取API密鑰 登錄 StockTV開發者平臺 → 聯系客服獲取測試Key(格式MY4b781f618e3f43c4b055f25fa61941ad),該密鑰無調用次數限制且支持實時…

kafka消息積壓排查

kafka監控搭建:https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…

Matlab回歸預測大合集又更新啦!新增2種高斯過程回歸預測模型,已更新41個模型!性價比拉滿!

Matlab回歸預測大合集又更新啦!新增2種高斯過程回歸預測模型,已更新41個模型!性價比拉滿! 目錄 Matlab回歸預測大合集又更新啦!新增2種高斯過程回歸預測模型,已更新41個模型!性價比拉滿&#xf…

6套bootstrap后臺管理界面源碼

后端管理系統是指一種用于管理和監控網站、應用程序或系統的后臺管理界面。它通常由一組后端代碼和數據庫組成,用于處理和存儲數據,提供給前端用戶界面展示和操作數據。 后端管理系統的功能和特點可以包括: 用戶權限管理:可以設…