1. 程式人生 > >STM32微控制器的串列埠通訊波特率應該這樣計算~

STM32微控制器的串列埠通訊波特率應該這樣計算~

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

1

什麼是波特率

不管是什麼微控制器,在使用串列埠通訊的時候,有一個非常重要的引數:波特率。什麼是波特率:波特率就是每秒傳送的位元組數。雙方在傳輸資料的過程中,波特率一致,這是通訊成功的基本保障。下面以STM32微控制器為例,講解一下串列埠波特率的計算方法。

2

STM32波特率相關的暫存器

STM32微控制器設定波特率的暫存器只有一個:USART_BRR暫存器,如下圖所示。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

該暫存器的有效位數為16位,前4位用於存放小數部分,後12位用於存放整數部分。將波特率算出來後,數值填入這個波特率就可以了。下面介紹如何計算。

3

波特率計算方法

STM32的資料手冊給出了計算方法,有一個公式,如下圖所示:

0?wx_fmt=jpeg

在這個公式上,共有三個變數,其中兩個我們是知道的,Fck和Tx/Rx波特率 這兩個是已知的,USARTDIV是未知的。通過該公式的描述可以看出如果使用USART1的話,那Fck就是PCLK2=72MHz,否則就是PCLK1=36MHz,Tx/Rx波特率這個引數是已知的。只需要計算出USARTDIV的值賦值給USART_BRR暫存器就可以了。以115200為例,將公式變形後得到:USARTDIV = 72×1000000/(16×115200) = 39.0625。即將39.0625寫入USART_BRR即可。

前文說過,USART_BRR的前4位存放小數部分,後12位存放整數部分。

那小數部分DIV_Fraction = 0.0625×16 = 1 = 0x01;

那整數部分DIV_Mantissa = 39 = 0x27;

那USART_BRR = 0X271;

資料手冊給我們提供了一張資料表:

0?wx_fmt=jpeg

在這張資料表上,已經算出了常用的波特率值,我們可以拿來直接用。但是如果我們想把波特率的計算做成一個傳參函式的方式,

如:USART_INIT(uint_t 16 Baud),在呼叫時只需要寫USART_INIT(9600),USART_INIT(115200),那程式該怎麼寫呢?

4

程式的實現

下面介紹的是暫存器版的程式。

0?wx_fmt=jpeg程式第一步45行:先計算得到USART_DIV,這個就是前面公式的變形;

程式第二步46行:獲得USART_DIV的整數部分;

程式第三步47行:獲得USART_DIV的小數部分;

程式第四步48行:將整數部分左移4位,即存入BRR暫存器的後12位;

程式第五步49行:將整數和小數部分合在一起,即前4位和後12位重新組合;

程式第六步50行:將計算出來的數值賦給BRR暫存器。

這樣一個將波特率作為形參的函式就完成了。從以上來看的話,波特率的計算好像也不是很難啊。

640?

0?wx_fmt=gif

免責宣告:本文系網路轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯絡,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。

相關推薦

STM32微控制器串列通訊波特率應該這樣計算~

1什麼是波特率不管是什麼微控制器,在使用串列埠通訊的時候,有一個非常重要的引數:波特率。什麼是波

微控制器串列通訊波特率計算

在模式0和模式2下,串列埠波特率固定,模式0為Fosc/12。模式2為Fosc/32或Fosc/64,具體由PCON暫存器的SMOD位決定。 在模式1和模式3下,波特率是一個可變值,波特率可以由定時器1產生(8052可以由定時2產生),那麼波特率到底為多少呢?波特率由定

QT筆記(8)——Qt與51微控制器串列通訊

工業控制中微控制器與pc機通訊,常常通過串列埠通訊來完成,本次基於RS232通訊來完成的,硬體是普中的STC51微控制器開發板;板子如下圖: 不需要液晶顯示器,自帶的例子這裡就不貼了,主要實驗是Qt進行串列埠連結,傳送資料,微控制器判斷髮送的內容並做出反饋; 微控制器

51微控制器串列通訊的傳送與接收

51微控制器的串列埠,是個全雙工的串列埠,傳送資料的同時,還可以接收資料。 當序列傳送完畢後,將在標誌位 TI 置 1,同樣,當收到了資料後,也會在 RI 置 1。 無論 RI 或 TI 出現了 1,只要串列埠中斷處於開放狀態,微控制器都會進入串列埠中斷處理程式。 在中斷

51微控制器串列通訊接收一串字串

在51微控制器中,我們使用上下位機時,我們通常會發送一串字串,將它作為訊號發給微控制器處理。 因為串列埠通訊時,傳送資訊是以一個個字元的形式傳送過來的,所以接收的就是一個個字元,通常我們是一個字元陣列儲存,在進行下一步處理,同時字元陣列長度固定有限,但是如果上位機發送的字元

STM32串列通訊之printf重定向

在串列埠通訊中,常用的協議包括RS-232、RS-422和RS-485。 •RS-232:標準串列埠,最常用的一種序列通訊介面。有三種類型(A,B和C),它們分別採用不同的電壓來表示on和off。最被廣泛使用的是RS-232C,它將mark(on)位元的電壓定義為-3V到-12V之間,而將space(off)

51微控制器串列通訊(電腦傳送數字到微控制器數碼管顯示)

#include<reg51.h> #include<intrins.h> //--定義使用的IO--// #define GPIO_DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; typ

關於微控制器串列通訊的幾個問題

串列埠通訊:(從微控制器的角度考慮) 過程:(無論中斷開關與否,資料都能進出SBUF,且RI和TI都能硬體置1,只是CPU未進行接收) 接收:PC發一個位元組-->RI硬體置1-->進入中斷,接收資料(RI手動置0)-->返回現場 傳送:單片機發一個位元

51微控制器 (5)VSPD+Proteus+串列除錯工具+Keil C51實現微控制器串列通訊模擬

【若有疑問錯誤或版權等問題請聯絡我】 1、效果圖 2、虛擬串列埠 通過VSPD虛擬串列埠工具虛擬出兩個串列埠用於通訊 3、串列埠除錯 開啟兩份串列埠除錯工具,第一個開啟com1,

51微控制器串列通訊的幀資料接收

首先定義一個數據幀格式,Header :{ 0xAA 0x55} type:{ 0x01 | 0x02 | 0x03 } length:{  N } body :{____n個位元組的資料___ } 資料的格式就是上面的定義  Header 為幀頭 標記一個數據幀的開始,t

深入理解51微控制器串列通訊

串列埠通訊的基本認識 通訊分為並行通訊和序列通訊,並行通訊時的資料各個位同時傳送,可以實現位元組為單位通訊,但通訊線多佔用資源,成本高。以前用到的的P1=0x55,一次給P1口的8個管腳分別賦值,同時進行訊號輸出,類似於8個車道可以過去8輛車,這樣的形式是並行的,一般稱P0

51微控制器串列通訊的實現.

在串列埠通訊實際操作裡面往往串列埠還要和電腦上的上位機軟體進行互動,實現電腦軟件傳送不同的指令,微控制器對應執行不同操作的功能,這就要求我們組織一個比較合理的通訊機制和邏輯關係,用來實現我們想要的結果。我們發的資料往往是一組(一幀)資料,那麼我們是如何判斷一段資料有沒有接收完

STM32串列通訊基本原理(超基礎、詳細版)

STM32F1xx官方資料:《STM32中文參考手冊V10》-第25章通用同步非同步收發器(USART)通訊介面背景知識裝置之間通訊的方式一般情況下,裝置之間的通訊方式可以分成並行通訊和序列通訊兩種。它們的區別是:並、序列通訊的區別並行通訊序列通訊傳輸原理資料各個位同時傳輸資

【常用模組】HC-05藍芽串列通訊模組使用詳解(例項:手機藍芽控制STM32微控制器

HC-05藍芽串列埠通訊模組應該是使用最廣泛的一種藍芽模組之一了。為什麼呢?因為HC05模組是一款高效能主從一體藍芽串列埠模組,可以不用知道太多藍芽相關知識就可以很好的上手。說白了,只是個藍芽轉串列埠的裝置,你只要知道串列埠怎麼程式設計使用,就可以了,實現了所謂的透明傳輸。但

【C語言實現串列通訊知識點整理(一)】執行緒、開啟串列、設定波特率、設定校驗位、互斥鎖等實現基本的通訊

  部分程式碼借鑑地址:https://blog.csdn.net/wangqingchuan92/article/details/73497354/ 謝謝! 1.建立執行緒線上程內進行串列埠之間的收發 void CREAT_pthread(void) { pthr

STM32系統學習——USART(串列通訊

串列埠通訊是一種裝置間非常常用的序列通行方式,其簡單便捷,大部分電子裝置都支援。 一、物理層 常用RS-232標準,主要規定了訊號的用途、通訊介面以及訊號的電平標準。     “DB9介面”之間通過串列埠訊號線建立起連線,串列埠訊號線使用”RS-232標準“傳

STM32串列通訊中使用printf傳送資料配置方法(開發環境 Keil RVMDK)

出處:STM32串列埠通訊中使用printf傳送資料配置方法(開發環境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47176.html 在STM32串列埠通訊程式中使用printf傳送資料,非常的方便。

51微控制器串列通訊(一)

串列埠通訊好東西,但我沒用過。 下面照著普中科技的ppt搬運下。        隨著多微機系統的廣泛應用和計算機網路技術的普及,計算機的通訊功能愈來愈顯得重要。計算機通訊是指計算機與外部裝置或計算機與計算機之間的資訊交換。 通訊方式 有並行

教你如何在51微控制器上模擬串列通訊!!!

我們可以不使用微控制器本身帶有的串列埠,而自己用程式去模擬一個串列埠並達到和本身的串列埠具有同樣的功能, 首先,我們需要用到CH340串列埠模組,大家可以上某寶自行購買。 正面: 反面:   然後我們需要了解一下這串列埠模組上的引腳: 5V  :與VCC短路為5V TL

stm32 hal庫串列通訊資料彙集

串列埠的傳送接收函式: HAL_UART_Transmit();串列埠輪詢模式傳送,使用超時管理機制。 HAL_UART_Receive();串列埠輪詢模式傳送,使用超時管理機制。 HAL_UART_Transmit_IT();串列埠中斷模式傳送, HAL_UART_Receive_IT();串