在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

串口波特率誤差產生的原因

CHANBAEK ? 來源:硬件工程師技術干貨 ? 作者:硬件工程師技術干 ? 2023-04-13 16:20 ? 次閱讀

1、UART接口

UART全稱Universal Asynchronous Receiver/Transmitter,通用異步收發器,是一種非常常見的異步收發協議,在嵌入式領域應用十分廣泛。收發雙方按照約定好通訊波特率進行配置,如果波特率不匹配會導致失敗。

2、分頻與波特率

使用單片機的朋友,經常使用4800、9600、38400、115200等波特率。設計電路時經常采用11.0592Mhz這樣“不規則”晶振,看起來不規則,實際上很規則,原因是可以精確分頻成常用波特率。

11.0592MHz=11059200=115200*96

11.0592MHz=11059200=57600*192

11.0592MHz=11059200=19200*576

有細心的朋友經常采用11.0592Mhz晶體設計電路,調試完串口通訊之后更換為12MHz后單片機依然能夠正常通訊,并沒有出現通訊異常。可見波特率有少許誤差也是能夠容忍的。

3、串口如何采樣

串口接收方,在收到起始位后,延時1.5個位周期進行第1位采樣,然后依次隔一個位周期采樣一位,直至把所有數據位采樣完成。如果接收方采樣位置正好在數據位的中間位置,那么采樣非常完美,不會出現問題。以下是8bit串口通訊數據格式示意圖。

注意,這里的采樣并不是只采樣一次,有些芯片會采樣多次,這里僅做示意。

4、誤差原因

如果接收方位周期略微大于發送方位周期,就會出現下圖所示的情況。采樣位置逐漸偏移數據位中心,bit7采樣位置偏移最嚴重。這就是波特率誤差。采樣點移位過多就會導致位錯誤,導致通訊失敗。當然如果接收方位周期略微小于發送方位周期,也是同樣道理。一般測特率誤差2%-3%是沒有問題的。

5、舉例

筆者正在使用的某款cortex-M3內核芯片,需求的波特率是460800bps。串口時鐘頻率是36MHz。此款芯片波特率配置方法是串口時鐘頻率除以16,再除以分頻因子。計算出分頻因子(分頻因子只能是整數),然后寫入相應寄存器即可。算來算去,無論如何計算都不能準確分頻出460800bps。按照如下代碼計算出的分頻因子是4。然后反推出波特率是562500bps,整除失去了小數位,導致差距巨大,根本無法通訊。

// baud rate = (serial clock freq) / (16 * divisor).
  tmpBaudRateDiv = (clocks.PCLK_Frequency / 16) / UART_InitStruct->UART_BaudRate;

于是乎做了個優化,如下代碼,計算出的分頻因子是5。然后反推出波特率是450,000bps,差距比較小,測試了一下通訊性能沒問題。

// baud rate = (serial clock freq) / (16 * divisor).
  tmpBaudRateDiv = ((clocks.PCLK_Frequency / 16) + UART_InitStruct->UART_BaudRate / 2) / UART_InitStruct->UART_BaudRate;

6、不建議串口高速使用

串口畢竟是一個低速的數據傳輸協議,這種異步傳輸,沒有時鐘同步信號,在傳輸的每個字節中采樣有誤差積累,不建議高速使用,筆者使用過幾種高波特率460800、921600、1500000等。原因是低端的單片機主頻速率較低,處理高速數據流效率低下,如需高速使用,可根據自己需求開啟串口FIFO、串口DMA、串口流控等。

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

    關注

    5082

    文章

    19126

    瀏覽量

    305201
  • 晶振
    +關注

    關注

    34

    文章

    2866

    瀏覽量

    68036
  • 串口
    +關注

    關注

    14

    文章

    1554

    瀏覽量

    76517
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101395
  • 波特率
    +關注

    關注

    2

    文章

    307

    瀏覽量

    34142
收藏 人收藏

    評論

    相關推薦

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

    波特率的計算 STM32下的波特率串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32中,有個波特率寄存器USART_BRR
    的頭像 發表于 10-23 14:19 ?8342次閱讀
    STM32<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>大小計算案例

    什么是串口波特率串口波特率的分類及應用詳解

    什么是串口波特率串口波特率是指串口通信系統中傳輸數據的速率。在UART串口通信中,數據以位(bi
    的頭像 發表于 08-08 10:09 ?5973次閱讀
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>的分類及應用詳解

    串口波特率計算工具下載

    串口波特率計算工具
    發表于 03-11 09:38 ?179次下載

    C Core芯片SCI串口波特率容限優化

    發現了C*Core國芯芯片中SCI發送與接受方波特率誤差導致數據不匹配問題,分析了發送與接受方數據傳輸丟幀、誤幀現象出現的根本原因,總結了SCI容限值與芯片主頻及標準波特率之間規
    發表于 03-05 17:45 ?17次下載
    C Core芯片SCI<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>容限優化

    串行通信的實現條件和波特率自動整定問題

    串行通信在波特率誤差超過一定范圍時,會產生錯誤。本節介紹的內容在51單片機上僅用軟件就實現了波特率自動整定,最大程度地減小了波特率
    發表于 03-23 14:52 ?3918次閱讀
    串行通信的實現條件和<b class='flag-5'>波特率</b>自動整定問題

    STM32的串口自動識別波特率

    STM32串口自動識別波特率
    的頭像 發表于 03-04 09:53 ?9658次閱讀

    串口通訊實際的波特率測量

    平時使用串口打印出現亂碼的絕大部分原因串口波特率沒對。那么我們怎么測量實際的波特率呢?在這之前,順便一起回顧一下
    的頭像 發表于 04-04 17:27 ?7205次閱讀
    <b class='flag-5'>串口</b>通訊實際的<b class='flag-5'>波特率</b>測量

    串口波特率計算詳解

    STM32下波特率計算詳解波特率的計算????STM32下的波特率串口外設時鐘息息相關,USART 1的時鐘來源于APB2,USART 2-5的時鐘來源于APB1。在STM32中,有
    發表于 12-05 09:06 ?22次下載
    <b class='flag-5'>串口</b><b class='flag-5'>波特率</b>計算詳解

    串口通訊波特率出現誤差的因素

    串口通訊(UART)是一種異步通訊,收發雙方需要按照約定的波特率進行通訊。當波特率出現誤差時,會導致通訊出錯。那導致波特率出現
    的頭像 發表于 07-03 17:40 ?1w次閱讀

    波特率是什么?波特率設計

    從宏觀理解,波特率表征了串口的傳輸速度。
    的頭像 發表于 06-05 15:19 ?2.7w次閱讀
    <b class='flag-5'>波特率</b>是什么?<b class='flag-5'>波特率</b>設計

    什么是波特率?為什么要設置波特率

    歡迎來到東用知識小課堂!一、什么是波特率波特率(BaudRate)單位bps是用于衡量串口通信速度的單位,它表示每秒鐘發送的比特數。如果一個串口
    的頭像 發表于 04-08 00:00 ?6953次閱讀
    什么是<b class='flag-5'>波特率</b>?為什么要設置<b class='flag-5'>波特率</b>?

    串口傳輸速率低于波特率怎么辦 串口通信的波特率如何設置

    如果串口傳輸速率低于波特率,您可以嘗試以下方法來解決問題:   1. 檢查硬件連接:確保串口連接正確且牢固。檢查連接線是否完好,確保沒有松動或斷開的接觸。   2. 檢查波特率設置
    的頭像 發表于 09-08 16:23 ?6246次閱讀

    什么是串口波特率串口通信為什么要設置波特率

    在電子設備的世界中,數據是通過各種方式進行傳輸的。其中,串口通信是一種常見的數據傳輸方式,它以其簡單、可靠和廣泛的特性,成為了電子設備間通信的重要手段。而在串口通信中,有一個非常重要的參數——波特率
    的頭像 發表于 11-03 08:21 ?5231次閱讀
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b>通信為什么要設置<b class='flag-5'>波特率</b>?

    什么是串口波特率串口通信為什么要設置波特率

    什么是串口波特率串口通信為什么要設置波特率波特率與比特的關系 如何選擇
    的頭像 發表于 01-22 16:10 ?2175次閱讀

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

    在通信和電子測量領域,串口波特率是一個至關重要的參數,它決定了數據在串行通信線上的傳輸速率。使用示波器來測量串口波特率是一種常見且有效的方法,尤其是在沒有專業
    的頭像 發表于 05-27 16:25 ?5020次閱讀
    主站蜘蛛池模板: 天天爱天天操天天射| 加勒比一本一道在线| 国产精品福利久久2020| 日本在线观看一区| 色女人网| www.99色.com| 5060精品国产福利午夜| 亚洲精品卡1卡二卡3卡四卡| 久久久久综合中文字幕| 欧美尺寸又黑又粗又长| 老熟女毛片| 欧美精品1| 日本综合视频| 国产成人精品系列在线观看| 噜噜噜噜私人影院| 日本加勒比官网| 足控免费视频xxav| 狠狠色综合久久婷婷| 大量国产后进翘臀视频| 亚洲国产精品乱码一区二区三区| 激情理论| 好吊色7777sao在线视频观看| 在线免费观看色视频| 国产色噜噜| 欧美人与z0zoxxxx特| 色综合天天综合网国产成人| 夜夜爽影院| 视频二区中文字幕| 久青草视频在线| 国产大片免费观看中文字幕| 性日韩| 亚洲国产第一区二区香蕉| 男女视频在线看| 狠狠躁夜夜躁人人爽天天天天 | 色网站免费视频| 六月综合| 日本三级11k影院在线| 日本xxxxx黄区免费看动漫| 人人射人人草| 婷婷色综合网| 天天操夜夜摸|