uart原理

2.2.2 UART 工作原理
UART 接收数据时,电路首先处于空闲状态,保持高电平;当检测到一个稳定的下降沿(字 符的起始位为 0)时说明开始有数据传输,按照约定的波特率,从低位到高位(通常情况下) 依次接收数据位、奇偶校验位和停止位,比较校验位和停止位是否正确,如果正确则将数据存 入缓存[28]。
由于 UART 是异步传输,为了能保证数据传输的正确性,UART 采用频率为波特率时钟频 率的一定倍数(至少为 2 倍,一般取 16 倍)的时钟进行采样。以 16 倍采样时钟为例,每个数 据位用 16 个时钟采样,取中间的采样值,以保证接收到的数据为数据稳定时的值而不是误码。 采用这种方法,即使每个数据有一两个采样时钟的偏移误差,接收端也能正确地接收到数据。 其基本步骤为:
(1)在接收端设计一个基于采样时钟的模 16 计数器,计数器初始值为 0,当检测到起始 位下降沿时,开始计数,即每经过一个采样时钟,计数器加 1。
(2)当计数器计到中间值(7 或 8)时,此时采样到的是数据中间位置的值,若采样值为 0,说明是稳定的起始位,执行接收操作;若采样值不为 0,则说明一开始检测到的下降沿不是 稳定的起始位,可能是一次噪声干扰,则此次检测无效,计数器清零,重复上述过程;
(3)完成第二个步骤后,计数器此时为零,之后每计到中间值时,采样信号波形,将采样 的数值存在移位寄存器中,计满 16 后计数器清零,重新计数,直到采样到最后的停止位。
(4)若奇偶校验位和停止位皆正确,则接收字符正确,将移位寄存器中的值按顺序放入接 收 FIFO;反之则说明传输有问题,此次采样的数据无效。
UART 发送数据时,电路首先处于空闲状态,电路保持高电平;当发送使能后,按波特率 时钟发送一位逻辑“0”的起始位,然后将数据位按低位到高位依次发送,数据位发送完毕,根 据配置发送奇偶校验位和停止位,一个字符数据发送完毕。
图 2.4 为一个标准的 10 位 UART 收发(未设置奇偶校验位)的时序图。
uart数据传输
2.2.3 UART 设计中的几个问题
UART 为异步串行数据传输,每一个有效数据要加上额外的起始位、停止位和奇偶校验位 等信息,并且收发的时序需要严格匹配,所以在 UART 通信中有几个问题需要非常的注意,设 计 UART 模块也要仔细考虑。
(1)波特率
波特率物理意定义为数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次 数来表示,其单位是波特(Baud),波特率是传输通道频宽的指标。在电子通信领域,波特率 即调制速率,指的是信号被调制以后在单位时间内的波特数,即单位时间内传输的码元个数, 其中一个码元可以包含多个 bit,它是对信号传输速率的一种度量[29]。比特率是一个与波特率比 较相似的概念,比特率主要描述信息传输速率(传信率),在单位为每秒比特数 bit/s(bps),UART 收发数据时是根据波特率时钟按 bit 发送,所以很容易将波特率和比特率混淆。在设计 UART 波特率产生模块时,需要将波特率根据定义的码元符号中包含的比特数,转换成比特率,这样 不但在设计收发数据的波特率时钟时更方便,而且保证了波特率的准确。
(2)数据传输方向
UART 数据传输在传送格式上可以从最低有效位(LSB)开始,有些 UART 也允许选择优 先发送最低有效位或者最高有效位。在传输方向上,因为数据是在发送端和接收端两个站之间 传送,不同的情形下,接收端和发送端的角色可能会转换。这里的通讯方式分为半双工和全双 工两种。半双工的工作方式为收发送两个终端,在某一时刻只能有一个端发送或者接收,不能 两个端同时进行发送和接收操作。全双工则可以两端同时进行接收或者发送操作。在设计 UART 时,整体功能设计时就需要对数据的传输方向以及数据的发送优先位进行定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值