欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32串口波特率大小計(jì)算案例

454398 ? 來源:博客園 ? 作者:cposture ? 2020-10-23 14:19 ? 次閱讀

波特率的計(jì)算

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

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

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

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

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

注意:如果小數(shù)部分乘以16之后仍帶有小數(shù),則要四舍五入去除小數(shù)部分得到一個(gè)新的整數(shù),再將其寫入U(xiǎn)SART_BRR的前四位。

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

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

在數(shù)據(jù)的傳輸中,信號(hào)可能受到一些干擾而產(chǎn)生一些抖動(dòng),如下圖。如果接收端只對(duì)這些信號(hào)數(shù)據(jù)采樣一次,那么它有可能采樣到的是抖動(dòng)的不準(zhǔn)的數(shù)據(jù),進(jìn)而使數(shù)據(jù)傳輸不準(zhǔn)確,所以接收端在采樣數(shù)據(jù)線上的數(shù)據(jù),通常都要采樣多次,然后通過比較獲得準(zhǔn)確的數(shù)據(jù)。

前面已經(jīng)說過,USARTDIV,它表示對(duì)串口的時(shí)鐘源fck進(jìn)行分頻,而這16表示的正是1bit數(shù)據(jù)的采樣次數(shù)。為什么呢?

,將這個(gè)表達(dá)式的分子分母倒過來,可以得到下面這條表達(dá)式

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10926

    瀏覽量

    357751
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1627

    瀏覽量

    55751
  • 時(shí)鐘信號(hào)
    +關(guān)注

    關(guān)注

    4

    文章

    453

    瀏覽量

    28672
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RS232通信的波特率設(shè)置說明

    RS232通信的波特率設(shè)置是確保數(shù)據(jù)正確傳輸?shù)年P(guān)鍵參數(shù)之一。以下是對(duì)RS232通信波特率設(shè)置的說明: 一、波特率的概念 波特率是指每秒傳輸?shù)谋忍財(cái)?shù)(bps),是衡量數(shù)據(jù)傳輸速度的重要指
    的頭像 發(fā)表于 12-10 16:26 ?1505次閱讀

    波特率與串行通信的關(guān)系 各種設(shè)備波特率轉(zhuǎn)換的方法

    波特率(Baud Rate)是串行通信中的一個(gè)重要參數(shù),它指的是信號(hào)傳輸?shù)乃俾剩磫挝粫r(shí)間內(nèi)傳輸?shù)姆?hào)(或信號(hào)狀態(tài))的數(shù)量。在串行通信中,波特率決定了數(shù)據(jù)傳輸?shù)乃俣龋虼藢?duì)于通信效率和設(shè)備兼容性
    的頭像 發(fā)表于 11-22 10:01 ?765次閱讀

    常見的波特率標(biāo)準(zhǔn)和協(xié)議

    波特率是指在數(shù)據(jù)通信中,每秒鐘傳輸?shù)姆?hào)數(shù)(或比特?cái)?shù)),是衡量數(shù)據(jù)通信速度的重要指標(biāo)。在不同的通信協(xié)議和場景中,常見的波特率標(biāo)準(zhǔn)和協(xié)議有所不同。以下是一些常見的波特率標(biāo)準(zhǔn)和協(xié)議: 一、串口
    的頭像 發(fā)表于 11-22 09:56 ?2589次閱讀

    波特率設(shè)置在串口通信中的重要性

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

    波特率的定義和計(jì)算方法 波特率與數(shù)據(jù)傳輸速度的關(guān)系

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

    MCU串口自動(dòng)識(shí)別波特率原理分析

    現(xiàn)在的單片機(jī)資源越來越豐富了,其中我們常用的串口也是內(nèi)部集成了多個(gè),關(guān)鍵功能也越來越強(qiáng)了。 我們有些應(yīng)用可能會(huì)用到串口自動(dòng)識(shí)別波特率,今天就來講講MCU串口自動(dòng)識(shí)別
    的頭像 發(fā)表于 10-23 16:12 ?880次閱讀
    MCU<b class='flag-5'>串口</b>自動(dòng)識(shí)別<b class='flag-5'>波特率</b>原理分析

    波特率9600和115200的區(qū)別

    限性。 1. 波特率的定義與計(jì)算 波特率,或稱為波特,是衡量數(shù)據(jù)傳輸速率的單位,它表示每秒鐘傳輸?shù)男盘?hào)單元數(shù)。在串行通信中,一個(gè)信號(hào)單元可以是一個(gè)比特(bit),也可以是多個(gè)比特組成的
    的頭像 發(fā)表于 10-18 14:56 ?2528次閱讀

    uart波特率和傳輸頻率的關(guān)系 UART串口的常用波特率為多少

    頻率是兩個(gè)關(guān)鍵參數(shù),它們之間存在一定的關(guān)系,并且UART串口有一系列常用的波特率。以下是對(duì)這兩個(gè)概念的介紹。 一、UART波特率和傳輸頻率的關(guān)系 1. 定義與區(qū)別 波特率(Baud R
    的頭像 發(fā)表于 10-06 16:12 ?3695次閱讀
    uart<b class='flag-5'>波特率</b>和傳輸頻率的關(guān)系 UART<b class='flag-5'>串口</b>的常用<b class='flag-5'>波特率</b>為多少

    串口通信中的波特率你真的了解嗎?差距竟如此重要!

    波特率串口通信中的作用在串口通信中,波特率起著至關(guān)重要的作用。因?yàn)樵趥鬏敂?shù)據(jù)時(shí),發(fā)送方和接收方需要以相同的波特率進(jìn)行通信。如果兩端的
    的頭像 發(fā)表于 08-27 11:46 ?1776次閱讀
    <b class='flag-5'>串口</b>通信中的<b class='flag-5'>波特率</b>你真的了解嗎?差距竟如此重要!

    STM32U575串口接收+GPDMA波特率不匹配導(dǎo)致失敗怎么解決?

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

    如何使用示波器測量串口波特率

    詳細(xì)介紹如何使用示波器測量串口波特率,包括準(zhǔn)備工作、設(shè)置示波器、測試步驟、結(jié)果計(jì)算及注意事項(xiàng)等方面,旨在為讀者提供一份詳盡的指南。
    的頭像 發(fā)表于 05-27 16:25 ?5559次閱讀

    KT142C語音芯片工作電壓多少?電流是多少?串口波特率多少?多大的喇叭?

    KT142C-sop16語音芯片ic工作電壓多少?電流是多少?串口波特率是多少?支持多大的喇叭?
    的頭像 發(fā)表于 05-23 09:45 ?543次閱讀
    KT142C語音芯片工作電壓多少?電流是多少?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>多少?多大的喇叭?

    STM32F412串口波特率最大調(diào)到3.1M就上不去了,怎么解決?

    之前,用STM32F407的芯片做了串口usart6通訊,波特率調(diào)整到3.9M可以正常通訊,發(fā)送的數(shù)據(jù)也都對(duì)?,F(xiàn)在換STM32F412后發(fā)現(xiàn)最大頻率的
    發(fā)表于 04-02 07:50

    stm32mp157在linux系統(tǒng)下,串口波特率如何使用非標(biāo)準(zhǔn)波特率

    請(qǐng)問stm32mp157在linux系統(tǒng)下,串口波特率如何使用非標(biāo)準(zhǔn)波特率153600。內(nèi)核或者設(shè)備樹里需要怎么改動(dòng)? 麻煩答復(fù)一下,最好能給個(gè)詳細(xì)的更改示例,謝謝!
    發(fā)表于 03-14 06:21

    為啥要轉(zhuǎn)換波特率 波特率和傳輸速率的關(guān)系

    對(duì)于串行多主 CAN 總線,如果波特率被稱為“500000波特”,則 CAN 上的該端口每秒最多可傳輸500000位。
    的頭像 發(fā)表于 03-06 17:38 ?5483次閱讀
    為啥要轉(zhuǎn)換<b class='flag-5'>波特率</b> <b class='flag-5'>波特率</b>和傳輸速率的關(guān)系