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

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

3天内不再提示

UART串口通信实验及工作原理

星星科技指导员 来源:网络整理 作者:网络整理 2024-03-21 17:10 次阅读

UART(Universal Asynchronous Receiver/Transmitter)是一种异步收发传输器,是设备间进行异步通信的关键模块。该设备通过信号线将需要发送的数据以二进制的形式一位一位地发送出去,在传输的过程中高电平表示发送的数据为“1”,低电平表示数据为“0”。异步通信的发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。

UART具有双向通信能力,可以实现全双工传输和接收。全双工数据通信允许数据同时在两个方向上传输,这提高了数据传输的效率。此外,UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。

UART通信过程需要设置波特率、数据长度、开始/停止位等参数。波特率决定了发送数据的速度,而数据长度和开始/停止位则用于确保数据的正确传输和接收。

在UART通信中,两个UART直接相互通信。发送UART将控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART。只需要两条线即可在两个UART之间传输数据,数据从发送UART的Tx引脚流到接收UART的Rx引脚。

UART属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。

当接收UART检测到起始位时,它将以特定波特率的频率读取。波特率是数据传输速度的度量,以每秒比特数(bps)表示。两个UART必须以大约相同的波特率工作,发送和接收UART之间的波特率只能相差约10%。

UART串口通信实验

数据位:8bit,停止位1位,无校验位,波特率115200bps

uart_rxd:数据线

clk_cont:循环时钟计数器0-433

115200bps,1bit耗时1/115200s=8680.5ns

系统时钟50MHZ,1时钟周期20ns

8680.5/20=434.025,

可认为每434个时钟周期发送1bit位数据

rx_cnt:接收数据位数计数器。Clk_cnt每计数434,rx_cnt+1.记录接收了多少位(包括起始位和结束位)。为0是起始位,为9是结束位。

start_flag:检测到uart_rxd下降沿拉高

rx_flag:检测到start_flag拉高,它也拉高。检测到停止位拉低。

uart_data(寄存器):在rx_cnt为1时将数据bit0存入寄存器第0位… …

uart_done:传输完成标志位,rx_cnt为9时拉高

工作原理

发送UART从数据总线获取并行数据后,它会添加一个起始位,一个奇偶校验位和一个停止位来组成数据包并从Tx引脚上逐位串行输出,接收UART在其Rx引脚上逐位读取数据包。

UART数据包含有1个起始位,5至9个数据位(取决于UART),一个可选的奇偶校验位以及1个或2个停止位:

在实际应用中,UART广泛应用于各种设备和系统中,以实现数据的有效传输和通信。例如,在计算机硬件中,UART用于连接计算机的内部和外部设备,如调制解调器、打印机等。在嵌入式系统中,UART也扮演着重要角色,用于实现设备之间的数据交换和通信。

审核编辑:黄飞

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

    关注

    32

    文章

    2121

    浏览量

    92976
  • 数据通信
    +关注

    关注

    2

    文章

    395

    浏览量

    33521
  • 异步通信
    +关注

    关注

    1

    文章

    45

    浏览量

    10046
  • 时钟信号
    +关注

    关注

    4

    文章

    372

    浏览量

    28062
  • 并行数据
    +关注

    关注

    0

    文章

    11

    浏览量

    7543
收藏 人收藏

    评论

    相关推荐

    基于LABVIEW的串口通信实验

    本帖最后由 eehome 于 2013-1-5 09:55 编辑 基于LABVIEW的串口通信实验
    发表于 09-04 12:40

    串口通信实验程序不能执行

    刚接触Arduino按教程写了个串口通信实验程序执行不了,哪位高手指点一下
    发表于 04-21 05:55

    【Runber FPGA开发板】配套视频教程——UART串口通信实验

    串口助手发送一组字符串:“===HELLO WORD===”,通过串口助手向板子以十六进制形式发送数字,用LED以十六进制显示亮起。通过UART串口
    发表于 04-13 11:53

    如何对STM32串口进行通信实验

    如何对STM32串口进行通信实验呢?STM32串口是怎样进行通信的?
    发表于 11-05 06:38

    分享一个不错的STM32串口通信实验

    分享一个不错的STM32串口通信实验
    发表于 12-07 06:42

    串口通信实验分享

    实验四、串口通信实验​ 自律学习坚强 ,拒绝迷茫。作者:行走的皮卡丘时间:2021/4/4喜欢就去追,这个红灯等不到,说不定下一个红灯等到了,嘻嘻!!!!!!!文章目录实验四、
    发表于 01-14 09:08

    如何在F103环境下进行UART通信实验和RS232通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口
    发表于 02-17 07:17

    RS232串口通信实验

    RS232串口通信实验 一. 实验目的利用单片机的TXD、RXD 口
    发表于 09-22 16:42 1.1w次阅读
    RS232<b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    串行通信实验

    串行通信实验 实验目的: 1、掌握TMS320LF2407串行通信模块的工作原理 2、掌握TMS320LF2407串行通信
    发表于 10-17 22:34 2491次阅读

    STM32 串口通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口
    发表于 12-20 19:26 14次下载
    STM32 <b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    【STM32】(3) 串口通信实验

    串口通信实验( 1 )定义函数uart_init用来调用HAL_UART_Init初始化串口参数配置:U
    发表于 12-20 19:35 9次下载
    【STM32】(3) <b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    实验四、串口通信实验

    实验四、串口通信实验​ 自律 学习
    发表于 01-14 10:09 2次下载
    <b class='flag-5'>实验</b>四、<b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    串口通信实验

    串口通信实验串口通信实验代码图像串口通信实验晶振12MHz,波特率1200, 程序启动后单片机主
    发表于 01-14 10:12 6次下载
    <b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    串口通信实验资料分享

    串口通信实验资料分享
    发表于 06-29 15:03 5次下载

    stc32G12k128使用旧清翔51实验板学习UART通信实验

    stc32G12k128使用旧清翔51实验板学习UART通信实验程序,利用旧版,学习32位单片机的串口通信例程
    发表于 11-21 10:21 2次下载