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

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

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

3天內不再提示

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

冬至子 ? 來源:兩猿社 ? 作者:IC猿 ? 2023-06-05 15:19 ? 次閱讀

01 波特率是什么

從宏觀理解,波特率表征了串口的 傳輸速度

從微觀上,波特率是指在系統中 單位時間內傳輸的碼元個數 。對于UART而言,碼元是二進制的,都是用高低電平傳輸,所以波特率和比特率在數值上是相等的。例如,當波特率為115200時,實質就是UART串口每秒傳輸115200個bit的數據量,傳輸一個bit的時間等于1/115200秒。常見的UART串口波特率為300、600、1200、4800、9600、19200、34800等。

串口傳輸中一個bit數據的周期即傳輸一個bit的時間,即可以表示為:

1.jpg

在串口傳輸中,一幀數據由起始位(1bit)、數據位(典型8bit)、校驗位(1bit)和停止位(1bit)組成,在通常情況下一幀數據有11bit。那么可以算出1幀數據傳輸所需的時間為11x1/bps。

串口通信的雙方需要設置相同的波特率 ,由波特率約定數據傳輸的周期。決定了應該多久讀取一次電平值。

02 模塊接口與描述

1.jpg

  • 26MHz功能時鐘主要用于波特率的產生與計算,由外部輸入。
  • 接收波特率使能信號由接收數據模塊中產生,UART_RX線檢測到起始位后使能接收波特率。
  • 發送波特率使能信號由發送數據模塊中產生,需要發送數據時即可使能。
  • 波特率分頻系數是配置模塊產生,由APB總線配置。
  • 接收和發送波特率時鐘根據配置由26MHz時鐘產生的用接收和發送數據的信號。

03 功能時鐘與波特率設計

本項目使用的功能時鐘為26MHz,波特率可通過波特率分頻系數BAUD_DIV進行配置。波特率分頻系數BAUD_DIV與波特率之間的關系為:

1.jpg

為了方便計算和設計,我們將N固定為16,只配置BAUD_DIV來調整波特率,波特率可配置如下:

1.jpg

波特率計算公式中,分母即為一個數據周期所需要計26MHz時鐘的個數。已知波特率和功能時鐘頻率,即可計算一個波特率周期所需的功能時鐘數。公式中的乘N操作使用左移實現(默認波特率為9600)。

always@(posedge clk26m ornegedge rst26m_) begin
    if(!rst26m_) begin
        cnt_value <= 10'd169 < < 4;
    end
    elsebegin
        cnt_value <= (baud_div + 1'b1) < < 4;
    end
end

在產生接收數據的波特率時鐘時,需要注意,接收模塊是根據所產生的這個波特率時鐘來進行數據接收,數據采集如果都在“ 每位數據的中間 ”,那么采樣出的數據是最穩定的。

圖片

接收數據采樣

所以在產生波特率時鐘時,RX波特率計數器累加到一半時就應使產生接收波特率時鐘。而發送數據時則不必這樣,只需保證波特率正確即可。

波特率模塊實現如下:

`timescale 1ns/1ps
module    UART_BAUD(
   // inputs
    clk26m,
    rst26m_,
    tx_bps_en,
    rx_bps_en,
    baud_div,
    // outputs
    rx_bpsclk,
    tx_bpsclk
);

input            clk26m;             // 26M function clock
input            rst26m_;            // function clk's rst_
input            rx_bps_en;          // baud enable signal
input            tx_bps_en;
input  [9:0]     baud_div;           // baud frequency divide factor
output           rx_bpsclk;          // receive bps clk
output           tx_bpsclk;          // send bps clk

reg  [13:0]     cnt_value;           // bps count value
reg  [13:0]     cnt_baud_rx;         // receive baud counter
reg  [13:0]     cnt_baud_tx;         // send baud counter


// produce receive bpsclk
always@(posedge clk26m ornegedge rst26m_) begin
    if(!rst26m_) begin
        cnt_baud_rx <= 14'd0;
    end
    elsebegin
        if(rx_bps_en) begin
            if(cnt_baud_rx > cnt_value - 1'b1) begin
                cnt_baud_rx <= 14'd0;
            end
            elsebegin
                cnt_baud_rx <= cnt_baud_rx + 1'b1;
            end
        end
        elsebegin
            cnt_baud_rx <= 14'd0;
        end
    end
end
assign  rx_bpsclk = (cnt_baud_rx == (cnt_value >>1))? 1'b1:1'b0;

// produce send bpsclk
always@(posedge clk26m ornegedge rst26m_) begin
    if(!rst26m_) begin
        cnt_baud_tx <= 14'd0;
    end
    elsebegin
        if(tx_bps_en) begin
            if(cnt_baud_tx > cnt_value - 1'b1) begin
                cnt_baud_tx <= 14'd0;
            end
            elsebegin
                cnt_baud_tx <= cnt_baud_tx + 1'b1;
            end
        end
        elsebegin
            cnt_baud_tx <= 14'd0;
        end
    end
end
assign  tx_bpsclk = (cnt_baud_tx == (cnt_value >>1))? 1'b1:1'b0;

always@(posedge clk26m ornegedge rst26m_) begin
    if(!rst26m_) begin
        cnt_value <= 10'd169 < < 4;
    end
    elsebegin
        cnt_value <= (baud_div + 1'b1) < < 4;
    end
end

endmodule

波特率模塊雖然理解和實現起來比較簡單,但也是比較重要的,是接收和發送數據的依據。

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

    關注

    8

    文章

    1184

    瀏覽量

    53636
  • 計數器
    +關注

    關注

    32

    文章

    2261

    瀏覽量

    94983
  • 串口通信
    +關注

    關注

    34

    文章

    1627

    瀏覽量

    55732
  • 時鐘域
    +關注

    關注

    0

    文章

    52

    瀏覽量

    9574
  • Uart串口
    +關注

    關注

    0

    文章

    29

    瀏覽量

    6859
收藏 人收藏

    評論

    相關推薦

    STM32單片機的串口波特率計算方法

    不管是什么單片機,在使用串口通信的時候,有一個非常重要的參數:波特率。什么是波特率波特率就是每秒傳送的字節數。雙方在傳輸數據的過程中,波特率一致,這是通訊成功的基本保障。下面以STM
    的頭像 發表于 01-05 09:59 ?2.9w次閱讀
    STM32單片機的串口<b class='flag-5'>波特率</b>計算方法

    UART通信總線的特性與協議幀

    同步點是通過兩個設備的相同波特率(UART和大多數串行通信一樣,發送和接收設備需要將波特率波特率是指信息傳輸到信道的速率)設置為相同的值。
    發表于 10-12 10:27 ?1822次閱讀
    UART通信總線的特性與協議幀

    STM32G4的外部晶振設置can通信波特率波特率均不正常無法通信怎么解決?

    目前使用G4配置CAN,波特率500k,在選擇內部晶振為外設時鐘時,可以通過計算配置500k正常通信,但是使用外部24M晶振時,只有把APB1設置為16M時可以正常通信,一旦采用其他頻率時,波特率
    發表于 04-11 06:23

    #硬聲創作季 #CAN #PLC 總線設計的波特率應該如何選擇?

    CAN波特率波特率發生器
    學習電子知識
    發布于 :2022年11月02日 20:00:29

    單片機原理及應用: 波特率#單片機

    單片機波特率波特率發生器
    學習硬聲知識
    發布于 :2022年11月06日 15:02:57

    單片機原理與應用: 波特率計算#單片機

    單片機波特率波特率發生器
    學習硬聲知識
    發布于 :2022年11月08日 19:07:59

    STM32+CUBE+HAL庫+CAN+無法通信

    STM32+CUBE+HAL庫+CAN+無法通信問題解決要解決這個問題最需要注意的波特率其他的跟著網上其他資料配就好了波特率波特率波特率重要的事情說三遍這個是can的配置注意這個APB
    發表于 08-19 07:21

    STC8a8k單片機串口波特率倍速后發送和接收就不對了是為什么?

    STC8a8k單片機串口波特率的倍速是干什么用的,什么時候用什么時候不用,什么作用,為什么我設置的同樣的波特率波特率倍速后串口發送和接收的就不對了,TH和TL都有更改過,而且是從isp助手上復制的,這是怎么回事,還需要設置什么
    發表于 10-27 06:48

    什么是波特率_波特率9600是什么意思_串口通信為什么要設置波特率

    波特率(Baud Rate) 單位 bps -- 每秒傳送的字節數 Byte Per Second.。
    發表于 08-23 11:54 ?46.2w次閱讀

    一文了解波特率、比特、通信速度的區別

    在信息傳輸通道中,攜帶數據信息的信號單元叫碼元,每秒鐘通過信道傳輸的碼元數稱為碼元傳輸速率,簡稱波特率波特率是傳輸通道頻寬的指標。
    的頭像 發表于 04-06 14:46 ?5690次閱讀

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

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

    什么是波特率波特率是如何影響CAN總線長度的?

    信息在通信通道中傳輸的速率被稱為波特率。通俗地說,波特率是數據在網絡上傳輸的速度/速率。這是以比特/秒表示的。因此,一秒鐘內在通信網絡上傳輸的比特數就是波特率
    的頭像 發表于 08-14 15:23 ?6718次閱讀
    什么是<b class='flag-5'>波特率</b>?<b class='flag-5'>波特率</b>是如何影響CAN總線長度的?

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

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

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

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

    為啥要轉換波特率 波特率和傳輸速率的關系

    對于串行多主 CAN 總線,如果波特率被稱為“500000波特”,則 CAN 上的該端口每秒最多可傳輸500000位。
    的頭像 發表于 03-06 17:38 ?5430次閱讀
    為啥要轉換<b class='flag-5'>波特率</b> <b class='flag-5'>波特率</b>和傳輸速率的關系
    主站蜘蛛池模板: 亚洲精品国产美女在线观看 | 在线资源网 | 免费爱做网站在线看 | 亚洲天天做日日做天天看2018 | 婷婷六月天在线 | 亚洲 欧美 丝袜 制服 在线 | 国产午夜a理论毛片在线影院 | 免费 在线观看 视频 | 成年免费大片黄在线观看免费 | 五月婷婷社区 | 国产在线美女 | 亚久久 | 六月婷婷激情综合 | 狠狠操欧美 | 狠狠干福利视频 | 我想看三级特黄 | 嫩草影院入口一二三免费 | 国产一区二区高清 | 寄宿日记免费看 | 亚洲天天做日日做天天看2018 | 天天干天天狠 | 香蕉久久精品 | 成人涩涩网站 | 免费一级欧美片在线观免看 | 视频一本大道香蕉久在线播放 | 亚洲欧美视频在线播放 | 欧美成人 一区二区三区 | 欧美人成一本免费观看视频 | 天天干天天操天天射 | 色噜噜狠狠狠色综合久 | 色偷偷偷偷 | 97射射 | 999毛片| 人人玩人人添天天爽 | 久久观看视频 | 视频一区二区不卡 | 色黄在线观看 | 美女爱爱网站 | 另类激情网 | 欧美大香a蕉免费 | 久久久午夜 |