91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

USART的波特率的計算公式

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-02-16 15:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用開發(fā)板的USART作為UART通信,在前調(diào)用BSP_Init()函數(shù)初始化開發(fā)板,串口上傳輸?shù)臄?shù)據(jù)出錯:‘a(chǎn)’變成0xfa或0xfe;

【在這個問題解決之后,回頭總結(jié)下,在解決問題時:

1.預(yù)計有可能造成出錯的原因(這個可能需要一些經(jīng)驗(yàn),但是思維方式需要這樣的猜測,從系統(tǒng)內(nèi)外,可以先羅列出盡可能有的原因,后面再一一排除)

2.盡可能的定位出錯的地方(比如這里通過在線調(diào)試,確定在修改時鐘后,可以解決數(shù)據(jù)發(fā)送的不正確)

3.推測并排除次因,找出主因,往深一步探測 】

1:猜測原因。

外因:串口接收的過程受干擾

內(nèi)因:A.端口設(shè)置有問題 B.USART的波特率設(shè)置有問題

2:定位錯誤

在剛開始時通過屏蔽BSP_Init()發(fā)現(xiàn)功能正常,再具體定位到BSP_Init()里面的SYSCLK_Frequency時鐘設(shè)置,發(fā)現(xiàn)例程中默認(rèn)的是72M,但是改為36M,就沒有問題,應(yīng)該是時鐘方面的設(shè)置問題,具體的問題做何解析?

3:推測排除,深究

外因內(nèi)因很好排除,數(shù)據(jù)既然在波特率低時能正常通信,可能不是端口設(shè)置的問題,應(yīng)該是波特率的問題,??从脩羰謨栽摴?jié)的資料:

注:

1.CPU 的時鐘頻率越低,則某一特定波特率的誤差也越低??梢赃_(dá)到的波特率上限可以由這組數(shù)據(jù)得到。

2.只有USART1 使用PCLK2(最高72MHz)。其它USART使用PCLK1(最高36MHz)。

USART的波特率的計算公式:

USARTDIV是一個無符號的定點(diǎn)數(shù)。這12位的值設(shè)置在USART_BRR寄存器。那么USARTDIV與USART_BRR的關(guān)系又是怎么樣的?

加入USARTDIV=27.75;那么USART_BRR=0x1B(27)+0XC(0.75*16)=0X1BC;同理可以從USART_BRR推出USARTDIV的值;

假設(shè)fck=36000000;Tx=115200;=》USARTDIV=19.53125;所以0x13+(0.53125*16=8.5)=》0x13+0x9=0x139;所以實(shí)際上是0x139產(chǎn)生的波特率:115015.97(誤差率為0.15%);

===》理論最大波特率:36000000/(16*1.0)=2.25M(USARTDIV最小為1.0)

繼續(xù)往下查,對于SYSCLK_Frequency最高72M,運(yùn)行應(yīng)該沒有問題,但是目前有問題;順藤摸瓜,查看各個時鐘控制器,發(fā)現(xiàn)時鐘設(shè)置路徑:HSE--》PREDIV2--》PLL2--》PREDIV1--》PLL--》SYSCLK;

發(fā)現(xiàn)其中有問題:HSE(25M),PREDIV2(源代碼設(shè)置是2分頻),PLL2(8倍頻),PREDIV1(9倍頻),SYSCLK是算不出72M的,這時72M的算法其實(shí)已經(jīng)超過72M,所以給USART2時,波特率計算時會出現(xiàn)問題;將PREDIV2(改為5分頻就對了);

這就是為什么調(diào)用BSP_Init()或者SystemInit會出問題,他們都調(diào)用SetSysClock(),再調(diào)用SetSysClockTo72()【宏定義72M】,同時將系統(tǒng)時鐘改為36M時不會出問題,因?yàn)榇藭r調(diào)用的不是出問題的SetSysClockTo72(),而在之前用的是出錯的SetSysClockTo72()卻沒有發(fā)現(xiàn)問題,是因?yàn)橄到y(tǒng)時鐘雖沒有在預(yù)設(shè)值,但是系統(tǒng)還足以正常工作,但是一旦添加串口,波特率設(shè)置就會有很大的偏差,數(shù)據(jù)傳輸就出錯。

1:參考代碼其實(shí)里面是有很多問題的

2:我們應(yīng)該盡可能的多閱讀參考代碼,利用其中的資源,避免重復(fù)造輪子。

2:用串口終端軟件顯示字符串,連續(xù)發(fā)送幾個字符串時,“xxxx/n”,包含了換行轉(zhuǎn)義字符,但是就是不會換行?

通過調(diào)試,發(fā)現(xiàn)在存儲空間,轉(zhuǎn)義字符‘/n’是正確的0x0a,

USART_SendString(USART2,Menu[0]);

USART_SendString(USART2,Menu[1]);

USART_SendString(USART2,Menu[2]);

USART_SendString(USART2,Menu[3]);

但是不連續(xù)發(fā)送就不會出現(xiàn)這種現(xiàn)象,或者一句句調(diào)試打印也不會出現(xiàn)不換行的現(xiàn)象,斷定是連續(xù)發(fā)送的時間間隔太短,軟件還沒來得及換行,就又重新顯示新數(shù)據(jù),那么就在USART_SendString的尾部加了延時,就解決問題了。

來源:http://www.51hei.com/stm32/4117.html

審核編輯:何安

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

    關(guān)注

    26

    文章

    6288

    瀏覽量

    117968
  • STM32F
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    18780
  • 學(xué)習(xí)筆記
    +關(guān)注

    關(guān)注

    1

    文章

    28

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    碩博電子IO模塊修改波特率和節(jié)點(diǎn)ID操作步驟

    正確設(shè)置波特率與節(jié)點(diǎn)ID,是保證IO模塊與控制器穩(wěn)定通信的關(guān)鍵。配置不當(dāng)易引發(fā)設(shè)備失聯(lián)、數(shù)據(jù)錯亂等故障。本文將詳細(xì)講解波特率與節(jié)點(diǎn)ID的規(guī)范修改步驟,輕松搞定配置難題。
    的頭像 發(fā)表于 01-27 10:39 ?502次閱讀
    碩博電子IO模塊修改<b class='flag-5'>波特率</b>和節(jié)點(diǎn)ID操作步驟

    請問使用串口ISP波特率可以自己設(shè)定嗎?

    請問使用串口ISP,波特率可以自己設(shè)定嗎?
    發(fā)表于 01-14 08:27

    FDCAN 數(shù)據(jù)段波特率增加后發(fā)送失敗的問題分析

    客戶在使用 FDCAN 協(xié)議,仲裁段波特率配置位 1Mbit/s,數(shù)據(jù)段波特率配置為 5Mbit/s時,發(fā)現(xiàn) FDCAN 發(fā)送功能異常。首先建議客戶使用 IC 內(nèi)部回環(huán)模式進(jìn)行測試發(fā)現(xiàn) 5M
    發(fā)表于 01-04 11:16 ?0次下載

    請問波特率參數(shù)如何設(shè)置?

    波特率參數(shù)如何設(shè)置?
    發(fā)表于 12-24 08:05

    支持小數(shù)波特率的意義是什么

    我看芯源有一款MCU是支持小數(shù)波特率,支持小數(shù)波特率的意義是什么?是為了數(shù)據(jù)傳輸更穩(wěn)定?
    發(fā)表于 12-11 07:15

    串行時鐘發(fā)生器的計算公式

    串行時鐘發(fā)生器用來產(chǎn)生 I2C 通信的波特率時鐘 SCL。串行時鐘發(fā)生器采用 PCLK 作為輸入時鐘,通過 1 個 8bit的計數(shù)器計數(shù),輸出所需波特率的 I2C 時鐘信號。 SCL 時鐘頻率計算公式
    發(fā)表于 12-08 08:16

    UART波特率計算及UART收發(fā)回顯實(shí)驗(yàn)

    Register)。波特率與寄存器的值的公式如圖19_8 所示。N表示BRR寄存器的值,B是波特率,PCLK 是外設(shè)時鐘的頻率(單位:MHz)。BGDM(Baud Rate Generator
    的頭像 發(fā)表于 10-17 09:51 ?2964次閱讀
    UART<b class='flag-5'>波特率</b><b class='flag-5'>計算</b>及UART收發(fā)回顯實(shí)驗(yàn)

    115200的波特率,為啥實(shí)際速度只有11KB/s?

    波特率≠真實(shí)速度! 這幾個概念確實(shí)容易混淆,但它們描述的是通信過程中不同層面的速率指標(biāo)。讓我們一起來理清楚它們的區(qū)別和聯(lián)系↓ 主要區(qū)別解析 比特 (Bit Rate): 指每秒傳輸?shù)亩M(jìn)制比特數(shù)量
    的頭像 發(fā)表于 09-10 11:18 ?735次閱讀

    請問如何使用低功耗 UART (LP UART) 波特率補(bǔ)償?

    如何使用低功耗 UART (LP UART) 波特率補(bǔ)償?
    發(fā)表于 08-21 07:05

    波特率是什么

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

    可編程電源的通信波特率應(yīng)如何設(shè)置?

    可編程電源的通信波特率設(shè)置需綜合考慮設(shè)備兼容性、通信穩(wěn)定性、實(shí)時性需求及抗干擾能力,推薦根據(jù)設(shè)備支持的最高波特率、通信距離、環(huán)境干擾等因素,優(yōu)先選擇標(biāo)準(zhǔn)波特率(如9600、19200、38400
    發(fā)表于 07-07 15:01

    基于瑞薩64位MPU RZ/G2L的uboot串口多波特率支持介紹

    本文主要介紹基于瑞薩64位MPU RZ/G2L,討論uboot下非常規(guī)波特率115200的支持方法,用于解決客戶對uboot下特殊波特率的需求,供客戶參考。
    的頭像 發(fā)表于 07-04 15:54 ?3048次閱讀
    基于瑞薩64位MPU RZ/G2L的uboot串口多<b class='flag-5'>波特率</b>支持介紹

    第十四章 USART——串口通訊

    本章介紹了USART串口通訊,含物理層(RS-232、TTL電平)、協(xié)議層(波特率、數(shù)據(jù)幀),及W55MH32的USART功能與應(yīng)用。
    的頭像 發(fā)表于 06-14 16:30 ?1777次閱讀
    第十四章 <b class='flag-5'>USART</b>——串口通訊

    如何選擇合適的水位流量計算公式?

    的適用場景、參數(shù)測量方法及公式選擇要點(diǎn),幫助用戶精準(zhǔn)匹配計算公式。一、第一步:明確堰型結(jié)構(gòu)選擇公式前,需通過現(xiàn)場檢查或設(shè)計圖紙確認(rèn)堰的幾何形狀:注意:若堰口形狀與上
    的頭像 發(fā)表于 04-02 16:32 ?1550次閱讀
    如何選擇合適的水位流量<b class='flag-5'>計算公式</b>?

    壓敏電阻型號及電感計算公式

    )) + ( 40 * 圈長(吋))}] ÷ 圈直徑 (吋) 圈數(shù) = [8.116 * {(18*2.047) + (40*3.74)}] ÷ 2.047 = 19 圈 空心電感計算公式空心
    發(fā)表于 04-01 14:09