0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UART(串口)收发模块设计

电子工程师 来源:lq 2019-02-04 15:40 次阅读

UART(串口)收发模块设计- 02

整体架构回顾

整体结构如下图,整个UART有两个大模块,一个接收模块,一个发送模块。具体大家可以回顾文章《UART(串口)收发模块设计- 01》。

波特率时钟产生模块

收发模块里面都有一个波特率时钟产生模块BuadRate_set,用于将系统时钟clk进行分频,得到波特率时钟Buad_clk,以控制数据的收发。

端口如下,通过CLK_Period指定当前的clk时钟频率,比如50M,则为50000000。Buad_Rate为设定的波特率。

主要设计代码如下,通过localparam DIV_PEREM指定分频计数值。分频计数器为cnt,当enable为高时,cnt开始循环的从0递增到DIV_PEREM。Buad_clk在每次cnt==DIV_PEREM的时候就翻转一次,从而得到clk时钟的CLK_Period/Buad_Rate倍分频。

数据接收模块

状态机:数据接收模块通过一个状态机来控制。状态机的跳转由波特率时钟下降沿控制。波特率时钟Buad_clk起始为高电平。

IDLE:其中IDLE为空闲状态,只有当检测到起始位的时候,才进入GET_DATA。

GET_DATA:在GET_DATA状态下获得8位数据位数据,通过一个计数器来计数接收到的数据位数。当cnt为‘d7时表明接收到了8位数据,便跳到最后一个状态END_BIT。

END_BIT:等待停止位的到来,然后回到IDLE状态,完成数据的接收。

起始位的检测:其实就是在IDLE状态下,检测uart_rx的下降沿,如下代码所示。将uart_rx通过一个6bit的移位寄存器get_start_bit(uart_rx从低bit往高bit移动),那么当get_start_bit的,高3bit都为1,低3bit为0时,表明uart_rx出现了下降沿,此时将start拉高,以便启动状态机和波特率时钟产生模块BuadRate_set。

数据的接收:在GET_DATA状态下,由波特率时钟的下降沿控制,将uart_rx往一个8bit的移位寄存器送,uart_rx从高bit向低bit流动(由于串口发送是先发低位数据)。

数据发送模块

状态机:数据接收模块通过一个状态机来控制。状态机的跳转由clk时钟上升沿控制。

IDLE:IDLE为空闲状态,当检测到tx_en(发送使能信号)为高,则进入EN_TX模块。

EN_TX:在EN_TX模块发送10bit数据(起始位,数据位,停止位)。数据的发送由波特率时钟Buad_clk上升沿控制。如下代码,在cnt为0时将tx_data(待发送的数据位)与起始位(0),装载到data_to_send中,然后对data_to_send做从高位向低位的移位操作,高位填1。将data_to_send的最低位接uart_tx,发送出去。利用cnt计数发送的位数。

上板实测

这里设计了一个实测设计(UART_TEST),功能如下:

上电复位后,通过串口向上位机发送数据8'h34,然后只要收到上位机发送过来的数据,就将其返回给上位机。

大家可以把源码下下来,自己新建工程,结合开发板上板测试一下。

文件里面提供了一个PC端串口调试上位机SSCOM。大家在上板测试时,需要一个USB转串口器(有的开发板上集成了这个),使得板子的串口可以通过USB端口与PC上位机通信

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120260
  • 计数器
    +关注

    关注

    32

    文章

    2256

    浏览量

    94485
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131461

原文标题:UART(串口)收发模块设计- 02

文章出处:【微信号:LF-FPGA,微信公众号:小鱼FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    niosii的UART串口通信

    niosii的UART串口通信niosii的UART串口通信。
    发表于 04-06 17:03 1次下载

    Iot物联网UART串口WiFi模块及智能插座wifi模块解决方案

    Iot物联网 UART串口WiFi模块及智能插座wifi模块解决方案,本文档介绍了一个以UART串口
    发表于 10-14 15:30 18次下载

    物联网UART串口WiFi模块及智能插座方案app界面介绍

    物联网UART串口WiFi模块及智能插座方案app界面介绍,本文档介绍了一个以UART串口WiFi模块
    发表于 10-14 16:10 21次下载

    uart是什么意思?认识uart串口

    设备没有显示屏,无法获得嵌入式设备实时数据信息,通过UART串口和超级终端相连,打印嵌入式设备输出信息。并且在对嵌入式系统进行跟踪和调试时,UART串口了是必要的通信手段。比如:网络路
    发表于 12-06 14:51 11w次阅读
    <b class='flag-5'>uart</b>是什么意思?认识<b class='flag-5'>uart</b><b class='flag-5'>串口</b>

    ESP8266方案小尺寸、UART串口WiFi模块规格书下载.pdf

    文档介绍了ESP8266方案小尺寸、UART串口WiFi模块的结构、功能和应用设计,其包括GPIO接口、UART串口设计等等,做
    发表于 05-16 10:37 21次下载

    UART串口WiFi模块的工作原理及应用

    随着物联网智能家居应用的日渐丰富,越来越多的WiFi工程师开始更多的关注UART串口WiFi模块,为让新手工程师更快的将UART串口WiFi
    的头像 发表于 01-14 09:27 1.1w次阅读
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>WiFi<b class='flag-5'>模块</b>的工作原理及应用

    UART串口WiFi模块的工作原理及应用

    随着物联网智能家居应用的日渐丰富,越来越多的 WiFi 工程师开始更多的关注 UART 串口 WiFi 模块,为让新手工程师更快的将 UART 串口
    发表于 01-08 08:00 23次下载
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>WiFi<b class='flag-5'>模块</b>的工作原理及应用

    串口、COM口、UART口, TTL、RS-232、RS-485区别详解

    Receiver/Transmitter),UART串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、P
    发表于 03-13 09:20 1.3w次阅读
    <b class='flag-5'>串口</b>、COM口、<b class='flag-5'>UART</b>口, TTL、RS-232、RS-485区别详解

    SKYLAB UART串口WiFi模块改进无线控制设计—简化设计

    夫的。本篇WiFi模块研发涨价SKYLAB君为大家介绍一款能够简化无线控制方案设计,缩短智能空调研发周期的UART串口WiFi模块UART
    的头像 发表于 09-11 16:05 1849次阅读

    【CubeIDE】STM32 HAL库史上最详细教程(一):UART串口收发

    博主能力有限,有错误望大佬指出  0x00 文章内容:UART阻塞方式收发UART中断方式收发UART中断回调函数
    发表于 11-23 17:51 12次下载
    【CubeIDE】STM32 HAL库史上最详细教程(一):<b class='flag-5'>UART</b><b class='flag-5'>串口</b><b class='flag-5'>收发</b>

    TMC2225模块UART调试

    TMC2225模块UART调试TMC2225模块UART调试硬件连线串口调测TMC2225模块
    发表于 12-04 16:36 46次下载
    TMC2225<b class='flag-5'>模块</b><b class='flag-5'>UART</b>调试

    UART串口通讯

    UART串口通讯总结前言串口的基本概念串口配置的基本属性串口(Serial port)和RS-232串口
    发表于 12-20 19:31 24次下载
    <b class='flag-5'>UART</b><b class='flag-5'>串口</b>通讯

    Grove UART WizFi360串行收发模块

    电子发烧友网站提供《Grove UART WizFi360串行收发模块.zip》资料免费下载
    发表于 10-18 09:17 0次下载
    Grove <b class='flag-5'>UART</b> WizFi360串行<b class='flag-5'>收发</b><b class='flag-5'>模块</b>

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

    UART接口:通用异步收发器(Universal Asynchronous Receiver/Transmitter),UART串口收发
    发表于 08-22 09:46 2098次阅读
    <b class='flag-5'>串口</b>、COM口、<b class='flag-5'>UART</b>口和TTL、RS-232、RS-485介绍

    UART通用异步收发器原理是什么

    UART通用异步收发器(串口通信) 一般来说,开发过程中我们通常使用串口进行DEBUG调试。 原理 通用异步收发传输器(Universal
    的头像 发表于 11-09 17:32 750次阅读
    <b class='flag-5'>UART</b>通用异步<b class='flag-5'>收发</b>器原理是什么