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

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

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

UART(串口)收發(fā)模塊設(shè)計(jì)

電子工程師 ? 來源:lq ? 2019-02-04 15:40 ? 次閱讀

UART(串口)收發(fā)模塊設(shè)計(jì)- 02

整體架構(gòu)回顧

整體結(jié)構(gòu)如下圖,整個(gè)UART有兩個(gè)大模塊,一個(gè)接收模塊,一個(gè)發(fā)送模塊。具體大家可以回顧文章《UART(串口)收發(fā)模塊設(shè)計(jì)- 01》。

波特率時(shí)鐘產(chǎn)生模塊

收發(fā)模塊里面都有一個(gè)波特率時(shí)鐘產(chǎn)生模塊BuadRate_set,用于將系統(tǒng)時(shí)鐘clk進(jìn)行分頻,得到波特率時(shí)鐘Buad_clk,以控制數(shù)據(jù)的收發(fā)。

端口如下,通過CLK_Period指定當(dāng)前的clk時(shí)鐘頻率,比如50M,則為50000000。Buad_Rate為設(shè)定的波特率。

主要設(shè)計(jì)代碼如下,通過localparam DIV_PEREM指定分頻計(jì)數(shù)值。分頻計(jì)數(shù)器為cnt,當(dāng)enable為高時(shí),cnt開始循環(huán)的從0遞增到DIV_PEREM。Buad_clk在每次cnt==DIV_PEREM的時(shí)候就翻轉(zhuǎn)一次,從而得到clk時(shí)鐘的CLK_Period/Buad_Rate倍分頻。

數(shù)據(jù)接收模塊

狀態(tài)機(jī):數(shù)據(jù)接收模塊通過一個(gè)狀態(tài)機(jī)來控制。狀態(tài)機(jī)的跳轉(zhuǎn)由波特率時(shí)鐘下降沿控制。波特率時(shí)鐘Buad_clk起始為高電平。

IDLE:其中IDLE為空閑狀態(tài),只有當(dāng)檢測(cè)到起始位的時(shí)候,才進(jìn)入GET_DATA。

GET_DATA:在GET_DATA狀態(tài)下獲得8位數(shù)據(jù)位數(shù)據(jù),通過一個(gè)計(jì)數(shù)器來計(jì)數(shù)接收到的數(shù)據(jù)位數(shù)。當(dāng)cnt為‘d7時(shí)表明接收到了8位數(shù)據(jù),便跳到最后一個(gè)狀態(tài)END_BIT。

END_BIT:等待停止位的到來,然后回到IDLE狀態(tài),完成數(shù)據(jù)的接收。

起始位的檢測(cè):其實(shí)就是在IDLE狀態(tài)下,檢測(cè)uart_rx的下降沿,如下代碼所示。將uart_rx通過一個(gè)6bit的移位寄存器get_start_bit(uart_rx從低bit往高bit移動(dòng)),那么當(dāng)get_start_bit的,高3bit都為1,低3bit為0時(shí),表明uart_rx出現(xiàn)了下降沿,此時(shí)將start拉高,以便啟動(dòng)狀態(tài)機(jī)和波特率時(shí)鐘產(chǎn)生模塊BuadRate_set。

數(shù)據(jù)的接收:在GET_DATA狀態(tài)下,由波特率時(shí)鐘的下降沿控制,將uart_rx往一個(gè)8bit的移位寄存器送,uart_rx從高bit向低bit流動(dòng)(由于串口發(fā)送是先發(fā)低位數(shù)據(jù))。

數(shù)據(jù)發(fā)送模塊

狀態(tài)機(jī):數(shù)據(jù)接收模塊通過一個(gè)狀態(tài)機(jī)來控制。狀態(tài)機(jī)的跳轉(zhuǎn)由clk時(shí)鐘上升沿控制。

IDLE:IDLE為空閑狀態(tài),當(dāng)檢測(cè)到tx_en(發(fā)送使能信號(hào))為高,則進(jìn)入EN_TX模塊。

EN_TX:在EN_TX模塊發(fā)送10bit數(shù)據(jù)(起始位,數(shù)據(jù)位,停止位)。數(shù)據(jù)的發(fā)送由波特率時(shí)鐘Buad_clk上升沿控制。如下代碼,在cnt為0時(shí)將tx_data(待發(fā)送的數(shù)據(jù)位)與起始位(0),裝載到data_to_send中,然后對(duì)data_to_send做從高位向低位的移位操作,高位填1。將data_to_send的最低位接uart_tx,發(fā)送出去。利用cnt計(jì)數(shù)發(fā)送的位數(shù)。

上板實(shí)測(cè)

這里設(shè)計(jì)了一個(gè)實(shí)測(cè)設(shè)計(jì)(UART_TEST),功能如下:

上電復(fù)位后,通過串口向上位機(jī)發(fā)送數(shù)據(jù)8'h34,然后只要收到上位機(jī)發(fā)送過來的數(shù)據(jù),就將其返回給上位機(jī)。

大家可以把源碼下下來,自己新建工程,結(jié)合開發(fā)板上板測(cè)試一下。

文件里面提供了一個(gè)PC端串口調(diào)試上位機(jī)SSCOM。大家在上板測(cè)試時(shí),需要一個(gè)USB轉(zhuǎn)串口器(有的開發(fā)板上集成了這個(gè)),使得板子的串口可以通過USB端口與PC上位機(jī)通信。

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

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121006
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2261

    瀏覽量

    94906
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1746

    瀏覽量

    131719

原文標(biāo)題:UART(串口)收發(fā)模塊設(shè)計(jì)- 02

文章出處:【微信號(hào):LF-FPGA,微信公眾號(hào):小魚FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    niosii的UART串口通信

    niosii的UART串口通信niosii的UART串口通信。
    發(fā)表于 04-06 17:03 ?1次下載

    Iot物聯(lián)網(wǎng)UART串口WiFi模塊及智能插座wifi模塊解決方案

    Iot物聯(lián)網(wǎng) UART串口WiFi模塊及智能插座wifi模塊解決方案,本文檔介紹了一個(gè)以UART串口
    發(fā)表于 10-14 15:30 ?18次下載

    物聯(lián)網(wǎng)UART串口WiFi模塊及智能插座方案app界面介紹

    物聯(lián)網(wǎng)UART串口WiFi模塊及智能插座方案app界面介紹,本文檔介紹了一個(gè)以UART串口WiFi模塊
    發(fā)表于 10-14 16:10 ?21次下載

    uart是什么意思?認(rèn)識(shí)uart串口

    設(shè)備沒有顯示屏,無法獲得嵌入式設(shè)備實(shí)時(shí)數(shù)據(jù)信息,通過UART串口和超級(jí)終端相連,打印嵌入式設(shè)備輸出信息。并且在對(duì)嵌入式系統(tǒng)進(jìn)行跟蹤和調(diào)試時(shí),UART串口了是必要的通信手段。比如:網(wǎng)絡(luò)路
    發(fā)表于 12-06 14:51 ?11w次閱讀
    <b class='flag-5'>uart</b>是什么意思?認(rèn)識(shí)<b class='flag-5'>uart</b><b class='flag-5'>串口</b>

    ESP8266方案小尺寸、UART串口WiFi模塊規(guī)格書下載.pdf

    文檔介紹了ESP8266方案小尺寸、UART串口WiFi模塊的結(jié)構(gòu)、功能和應(yīng)用設(shè)計(jì),其包括GPIO接口、UART串口設(shè)計(jì)等等,做
    發(fā)表于 05-16 10:37 ?21次下載

    UART串口WiFi模塊的工作原理及應(yīng)用

    隨著物聯(lián)網(wǎng)智能家居應(yīng)用的日漸豐富,越來越多的WiFi工程師開始更多的關(guān)注UART串口WiFi模塊,為讓新手工程師更快的將UART串口WiFi
    的頭像 發(fā)表于 01-14 09:27 ?1.1w次閱讀
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>WiFi<b class='flag-5'>模塊</b>的工作原理及應(yīng)用

    UART串口WiFi模塊的工作原理及應(yīng)用

    隨著物聯(lián)網(wǎng)智能家居應(yīng)用的日漸豐富,越來越多的 WiFi 工程師開始更多的關(guān)注 UART 串口 WiFi 模塊,為讓新手工程師更快的將 UART 串口
    發(fā)表于 01-08 08:00 ?23次下載
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>WiFi<b class='flag-5'>模塊</b>的工作原理及應(yīng)用

    串口、COM口、UART口, TTL、RS-232、RS-485區(qū)別詳解

    Receiver/Transmitter),UART串口收發(fā)的邏輯電路,這部分可以獨(dú)立成芯片,也可以作為模塊嵌入到其他芯片里,單片機(jī)、SOC、P
    發(fā)表于 03-13 09:20 ?1.3w次閱讀
    <b class='flag-5'>串口</b>、COM口、<b class='flag-5'>UART</b>口, TTL、RS-232、RS-485區(qū)別詳解

    SKYLAB UART串口WiFi模塊改進(jìn)無線控制設(shè)計(jì)—簡(jiǎn)化設(shè)計(jì)

    夫的。本篇WiFi模塊研發(fā)漲價(jià)SKYLAB君為大家介紹一款能夠簡(jiǎn)化無線控制方案設(shè)計(jì),縮短智能空調(diào)研發(fā)周期的UART串口WiFi模塊UART
    的頭像 發(fā)表于 09-11 16:05 ?1876次閱讀

    【CubeIDE】STM32 HAL庫(kù)史上最詳細(xì)教程(一):UART串口收發(fā)

    博主能力有限,有錯(cuò)誤望大佬指出  0x00 文章內(nèi)容:UART阻塞方式收發(fā)UART中斷方式收發(fā)UART中斷回調(diào)函數(shù)
    發(fā)表于 11-23 17:51 ?12次下載
    【CubeIDE】STM32 HAL庫(kù)史上最詳細(xì)教程(一):<b class='flag-5'>UART</b><b class='flag-5'>串口</b><b class='flag-5'>收發(fā)</b>

    TMC2225模塊UART調(diào)試

    TMC2225模塊UART調(diào)試TMC2225模塊UART調(diào)試硬件連線串口調(diào)測(cè)TMC2225模塊
    發(fā)表于 12-04 16:36 ?46次下載
    TMC2225<b class='flag-5'>模塊</b><b class='flag-5'>UART</b>調(diào)試

    UART串口通訊

    UART串口通訊總結(jié)前言串口的基本概念串口配置的基本屬性串口(Serial port)和RS-232串口
    發(fā)表于 12-20 19:31 ?24次下載
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>通訊

    Grove UART WizFi360串行收發(fā)模塊

    電子發(fā)燒友網(wǎng)站提供《Grove UART WizFi360串行收發(fā)模塊.zip》資料免費(fèi)下載
    發(fā)表于 10-18 09:17 ?0次下載
    Grove <b class='flag-5'>UART</b> WizFi360串行<b class='flag-5'>收發(fā)</b><b class='flag-5'>模塊</b>

    串口、COM口、UART口和TTL、RS-232、RS-485介紹

    UART接口:通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter),UART串口收發(fā)
    發(fā)表于 08-22 09:46 ?2219次閱讀
    <b class='flag-5'>串口</b>、COM口、<b class='flag-5'>UART</b>口和TTL、RS-232、RS-485介紹

    UART通用異步收發(fā)器原理是什么

    UART通用異步收發(fā)器(串口通信) 一般來說,開發(fā)過程中我們通常使用串口進(jìn)行DEBUG調(diào)試。 原理 通用異步收發(fā)傳輸器(Universal
    的頭像 發(fā)表于 11-09 17:32 ?810次閱讀
    <b class='flag-5'>UART</b>通用異步<b class='flag-5'>收發(fā)</b>器原理是什么