91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

USART的波特率的計算公式

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

掃碼添加小助手

加入工程師交流群

使用開發板的USART作為UART通信,在前調用BSP_Init()函數初始化開發板,串口上傳輸的數據出錯:‘a’變成0xfa或0xfe;

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

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

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

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

1:猜測原因。

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

內因:A.端口設置有問題 B.USART的波特率設置有問題

2:定位錯誤

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

3:推測排除,深究

外因內因很好排除,數據既然在波特率低時能正常通信,可能不是端口設置的問題,應該是波特率的問題,常看用戶手冊該節的資料:

注:

1.CPU 的時鐘頻率越低,則某一特定波特率的誤差也越低。可以達到的波特率上限可以由這組數據得到。

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

USART的波特率的計算公式:

USARTDIV是一個無符號的定點數。這12位的值設置在USART_BRR寄存器。那么USARTDIV與USART_BRR的關系又是怎么樣的?

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

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

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

繼續往下查,對于SYSCLK_Frequency最高72M,運行應該沒有問題,但是目前有問題;順藤摸瓜,查看各個時鐘控制器,發現時鐘設置路徑:HSE--》PREDIV2--》PLL2--》PREDIV1--》PLL--》SYSCLK;

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

這就是為什么調用BSP_Init()或者SystemInit會出問題,他們都調用SetSysClock(),再調用SetSysClockTo72()【宏定義72M】,同時將系統時鐘改為36M時不會出問題,因為此時調用的不是出問題的SetSysClockTo72(),而在之前用的是出錯的SetSysClockTo72()卻沒有發現問題,是因為系統時鐘雖沒有在預設值,但是系統還足以正常工作,但是一旦添加串口,波特率設置就會有很大的偏差,數據傳輸就出錯。

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

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

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

通過調試,發現在存儲空間,轉義字符‘/n’是正確的0x0a,

USART_SendString(USART2,Menu[0]);

USART_SendString(USART2,Menu[1]);

USART_SendString(USART2,Menu[2]);

USART_SendString(USART2,Menu[3]);

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

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

審核編輯:何安

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

    關注

    25

    文章

    5682

    瀏覽量

    104774
  • STM32F
    +關注

    關注

    1

    文章

    40

    瀏覽量

    18540
  • 學習筆記
    +關注

    關注

    1

    文章

    28

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    RS232通信的波特率設置說明

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

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

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

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

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

    常見的波特率標準和協議

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

    Wi-Fi與藍牙的波特率對比分析

    Wi-Fi與藍牙是兩種不同的無線通信技術,它們在波特率(或稱數據傳輸速率)方面存在顯著的差異。以下是對Wi-Fi與藍牙波特率的對比分析: 一、Wi-Fi的波特率 概述 : Wi-Fi(無線局域網
    的頭像 發表于 11-22 09:54 ?1842次閱讀

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

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

    云端彈性計算公式有哪些內容?

    云端彈性計算公式有哪些內容?云端彈性計算公式涵蓋資源分配、性能監控、自動伸縮及積分計算等方面。資源分配依據虛擬機配置和實際需求動態調整;性能監控實時監控CPU、內存等關鍵指標;自動伸縮根據預設閾值
    的頭像 發表于 11-15 11:04 ?556次閱讀

    MCU串口自動識別波特率原理分析

    現在的單片機資源越來越豐富了,其中我們常用的串口也是內部集成了多個,關鍵功能也越來越強了。 我們有些應用可能會用到串口自動識別波特率,今天就來講講MCU串口自動識別波特率底層的常見的原理,以及MCU的案例。
    的頭像 發表于 10-23 16:12 ?2002次閱讀
    MCU串口自動識別<b class='flag-5'>波特率</b>原理分析

    波特率9600和115200的區別

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

    波特率與比特有何關系 波特率與數據傳輸速率的關系

    波特率(Baud Rate)和比特(Bit Rate)是衡量數據通信系統性能的兩個重要參數,它們之間有著密切的關系,但并不完全相同。 波特率(Baud Rate): 波特率是指在數據
    的頭像 發表于 10-18 14:55 ?2555次閱讀

    uart波特率和傳輸頻率的關系 UART串口的常用波特率為多少

    UART(Universal Asynchronous Receiver/Transmitter)是一種廣泛使用的異步串行通信技術,它允許兩臺設備之間進行雙向數據傳輸。在UART通信中,波特率和傳輸
    的頭像 發表于 10-06 16:12 ?7018次閱讀
    uart<b class='flag-5'>波特率</b>和傳輸頻率的關系 UART串口的常用<b class='flag-5'>波特率</b>為多少

    工業鏡頭焦距計算公式

    掌握工業鏡頭焦距計算公式是確保工業視覺系統高效、準確運行的重要一步。
    的頭像 發表于 09-25 16:36 ?2077次閱讀
    工業鏡頭焦距<b class='flag-5'>計算公式</b>

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

    波特率在串口通信中的作用在串口通信中,波特率起著至關重要的作用。因為在傳輸數據時,發送方和接收方需要以相同的波特率進行通信。如果兩端的波特率不同,那么就會出現數據丟失、傳輸錯誤等問題,
    的頭像 發表于 08-27 11:46 ?3224次閱讀
    串口通信中的<b class='flag-5'>波特率</b>你真的了解嗎?差距竟如此重要!

    比特波特率計算公式及舉例說明

    比特(Bit Rate)和波特率(Baud Rate)的計算方法分別涉及數據傳輸的不同方面,下面將分別進行說明。 比特計算 比特
    的頭像 發表于 08-05 15:18 ?2666次閱讀
    主站蜘蛛池模板: 免费在线观看一级片 | 久久人人视频 | 噜噜噜噜噜久久久久久91 | 日韩精品一区二区在线观看 | 成人爽a毛片在线视频 | 国产色秀视频 | 最新日韩中文字幕 | 22sihu国产精品视频影视资讯 | 日本三级带日本三级带黄首页 | 婷婷综合久久中文字幕 | 啪一啪日一日 | 国产精品久久久久乳精品爆 | 免费福利片2022潦草影视午夜 | 欧美色视频日本 | h视频国产 | 黑色丝袜美女被网站 | 中日韩在线视频 | 97射射| 亚洲第一毛片 | 中文在线最新版天堂bt | 久久在线精品 | 婷婷成人丁香五月综合激情 | 婷婷综合丁香 | 又黄又爽又猛午夜性色播在线播放 | 日韩a一级欧美一级 | 国产在线一卡二卡 | 12306影院午夜入口 | 99精品热女视频专线 | 国产免费一区二区三区香蕉精 | 久久免费精品 | 久久精品国产精品亚洲毛片 | 日本免费网 | 久久久这里有精品999 | 欧美日韩国产另类一区二区三区 | 久久免费国产视频 | 2021国内精品久久久久影院 | 国产免费久久 | 四虎在线最新地址公告 | 诱人的老师bd高清日本在线观看 | 91网站免费在线观看 | 天堂网2021天堂手机版 |