亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32串口波特率大小計算案例

454398 ? 來源:博客園 ? 作者:cposture ? 2020-10-23 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

波特率的計算

STM32下的波特率和串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32中,有個波特率寄存器USART_BRR,如下:

STM32串口波特率通過USART_BRR進行設置,STM32的波特率寄存器支持分數設置,以提高精確度。USART_BRR的前4位用于表示小數,后12位用于表示整數。但是它還不是我們想要設置的波特率,想要設置我們串口的波特率大小還需要進行計算。其實有關波特率的計算是下面這一條表達式:

從上面的表達式,我們引入了一個新量USARTDIV,它表示對串口的時鐘源fck進行分頻。假設我們已知道了波特率和fck時鐘頻率的大小,那么通過上式便可以計算出USARTDIV的具體大小,然后再通過USART的值大小對波特率寄存器進行設置。

USARTDIV通過上面的表達式得出,是一個帶有小數的浮點數(如27.75)。將小數部分和整數部分分開,分別得到一個整數值n(如27)和一個小數值m(如0.75)。有了這兩個值我們便可以填寫USART_BRR寄存器進而設置我們串口波特率大小了。

將整數部分m(27 = 0x1B)直接寫入USART_BRR的后12位部分;將小數部分n乘以16后得到的整數值(如0.75 x 16 = 12 = 0xC)寫入USART_BRR前4位部分,最后USART_BRR的值為0x1BC。

注意:如果小數部分乘以16之后仍帶有小數,則要四舍五入去除小數部分得到一個新的整數,再將其寫入USART_BRR的前四位。

為什么在計算波特率的公式中要乘以16?

?我們知道串口通信是通過TXD和RXD這兩條線進行通信的,當接收器的RXD連接著發(fā)送器的TXD,接收器的TXD連接著發(fā)送器的RXD,接收器和發(fā)送器可以通過RXD和TXD互傳數據。當接收器檢測到RXD這條線的電平被拉為低電平,立即開始接收發(fā)送器發(fā)送過來的數據,剛剛那個低電平只是一個告知接收器可以接收數據的起始位而已。

在數據的傳輸中,信號可能受到一些干擾而產生一些抖動,如下圖。如果接收端只對這些信號數據采樣一次,那么它有可能采樣到的是抖動的不準的數據,進而使數據傳輸不準確,所以接收端在采樣數據線上的數據,通常都要采樣多次,然后通過比較獲得準確的數據。

前面已經說過,USARTDIV,它表示對串口的時鐘源fck進行分頻,而這16表示的正是1bit數據的采樣次數。為什么呢?

,將這個表達式的分子分母倒過來,可以得到下面這條表達式

每一位的傳輸時間只有1/TX_baud,這個總時間除以16,所以每采樣一次的時間正好是T1,即新分頻后的周期。而初始的串口時鐘信號來自于APBx,APBx時鐘信號需要經過分頻才會等于T1,所以才需要分頻USARTDIV。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2302

    文章

    11105

    瀏覽量

    370213
  • 串口通信
    +關注

    關注

    34

    文章

    1655

    瀏覽量

    57504
  • 時鐘信號
    +關注

    關注

    4

    文章

    493

    瀏覽量

    29641
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    UART波特率計算及UART收發(fā)回顯實驗

    決定串口波特率的寄存器有BRR(Bite Rate Rigister),SEMR(Serial Extended Mode Rigister)和MDDR(Modulation Duty
    的頭像 發(fā)表于 10-17 09:51 ?2028次閱讀
    UART<b class='flag-5'>波特率</b><b class='flag-5'>計算</b>及UART收發(fā)回顯實驗

    串口波特率設置1200用不了是怎么回事?

    mcu:stm32f407zg 調試時,設置波特率為1200,而串口輸出為亂碼,電腦設置波特率19200來接收mcu的數據,卻能接收正確; (我以前沒有用RTT時,用
    發(fā)表于 09-23 07:19

    波特率是什么

    波特率是串行通信中的一個核心參數,用于描述數據在傳輸線路上的傳輸速率。以下從定義、單位、與比特的關系、實際應用及設置注意事項等方面進行詳細說明: 一、定義與本質 波特率(Baud Rate)指單位
    的頭像 發(fā)表于 07-22 11:11 ?4447次閱讀

    可編程電源的通信波特率應如何設置?

    (如RS-485專用電纜)并縮短通信距離。 在電源和PC端添加終端電阻(如120Ω)以減少信號反射。 問題3:多臺電源通信沖突 原因:多臺電源共用同一串口,地址沖突或波特率不一致。 解決: 為每臺
    發(fā)表于 07-07 15:01

    STM32串口下載軟件(FLYMCU)

    STM32串口下載軟件(FLYMCU),經典版本,親試可用。
    發(fā)表于 04-09 15:59 ?5次下載

    STM32U575串口接收+GPDMA波特率不匹配怎么解決?

    我用CubeMX配置的串口+GPDMA接收,115200波特率正常能用, 然后如果波特率設置錯誤為9600,再改回來115200,接收就不能用了,調試好像時DMA出錯了,然后啟用HAL_UARTEx_ReceiveToIdle_
    發(fā)表于 03-07 07:59

    AN-891: ADuC703x系列LIN波特率計算

    電子發(fā)燒友網站提供《AN-891: ADuC703x系列LIN波特率計算.pdf》資料免費下載
    發(fā)表于 01-14 15:53 ?0次下載
    AN-891: ADuC703x系列LIN<b class='flag-5'>波特率</b><b class='flag-5'>計算</b>

    請問MSC1210串口UART1如何設置波特率?

    如題,MSC1210的手冊上面有提到,UART0的波特率可以進行選擇,可選擇為T1的溢出作為波特率的設置,但是UART1的波特率如何設置?是和UART0的波特率一樣嗎?還是需要其他
    發(fā)表于 01-02 08:27

    RS232通信的波特率設置說明

    RS232通信的波特率設置是確保數據正確傳輸的關鍵參數之一。以下是對RS232通信波特率設置的說明: 一、波特率的概念 波特率是指每秒傳輸的比特數(bps),是衡量數據傳輸速度的重要指
    的頭像 發(fā)表于 12-10 16:26 ?5970次閱讀

    波特率設置中的常見問題解析

    在數字通信系統中,波特率是一個關鍵參數,它直接影響數據傳輸的效率和可靠性。然而,在實際應用中,波特率的設置往往會引起一些常見的問題。 一、波特率與數據速率的混淆 問題描述: 許多人會將波特率
    的頭像 發(fā)表于 11-22 10:06 ?2252次閱讀

    波特率與串行通信的關系 各種設備波特率轉換的方法

    波特率(Baud Rate)是串行通信中的一個重要參數,它指的是信號傳輸的速率,即單位時間內傳輸的符號(或信號狀態(tài))的數量。在串行通信中,波特率決定了數據傳輸的速度,因此對于通信效率和設備兼容性
    的頭像 發(fā)表于 11-22 10:01 ?2119次閱讀

    常見的波特率標準和協議

    波特率是指在數據通信中,每秒鐘傳輸的符號數(或比特數),是衡量數據通信速度的重要指標。在不同的通信協議和場景中,常見的波特率標準和協議有所不同。以下是一些常見的波特率標準和協議: 一、串口
    的頭像 發(fā)表于 11-22 09:56 ?8419次閱讀

    波特率設置在串口通信中的重要性

    在現代通信技術中,串口通信作為一種基本的數據傳輸方式,扮演著不可或缺的角色。無論是在計算機與外部設備的連接,還是在工業(yè)自動化系統中的數據交換,串口通信都發(fā)揮著重要作用。波特率,作為
    的頭像 發(fā)表于 11-22 09:51 ?3727次閱讀

    波特率的定義和計算方法 波特率與數據傳輸速度的關系

    。符號可以是數字、字母、聲音、圖像等,根據不同的符號來確定每個符號占據多長時間。 波特率計算方法 波特率計算方法通常有兩種: 基于傳輸速率和符號位數 :
    的頭像 發(fā)表于 11-22 09:49 ?1.1w次閱讀

    串口波特率是多少?

    波特率是多少
    發(fā)表于 11-05 15:40