UART总线

UART总线

  • Fang XS.
  • 1452512966@qq.com
  • 记录学习,方便复习。
  • 如果有错误,希望被指出,学习技术的路难免会磕磕绊绊。

简介

  • UART是一种双线,全双工,串行的总线协议。
  • UART即通用异步收发器(Universal Asynchronous Receiver/Transmitter)。
  • 适用于短距离,点对点的通信。
  • 硬件:
    1. RXD 用于接收信号。
    2. TXD 用于发送信号。
    3. 两设备使用串口通信时,A设备的RXD连接到B设备的TXD,B设备的RXD连接到A设备的TXD,交叉连接。
  • 波特率:
    • 波特率是衡量UART通信速度的重要标准,单位(bit/s)。
  • 由于UART没有时钟同步线,所以两设备使用各自的时钟线。
    1. 统一的波特率才能通信正确。
    2. 如果连着发送很多数据,假设第二个数据开始错,后面的数据都会出错,所以为了防止累计误差,UART数据是一帧一帧的发送。
  • MCU外设一般自带UART硬件外设,所以实际使用只需要配置寄存器,写好发送和接收函数。
  • 两设备的通信,波特率必须配置相同,实际使用中,乱码基本都是波特率不一致。

帧格式

  • UART通信一帧有起始位,数据位,奇偶校验位,停止位。
  • UART空闲位是高电平。
  • 起始位:
    • 用来启动总线。
    • 要发送数据时将信号拉低一个时钟周期。
  • 数据位:
    • 数据位可配置5-8位。
    • 数据位发送数据由低位到高位发送。
  • 奇偶校验位:
    • 奇校验:数据位中的1为奇数,校验位为1(保持为奇数)。
    • 偶校验:数据位中的1为偶数,校验位为0(保持为偶数)。
    • 无校验:可以没有校验位。
  • 停止位:
    • 要结束发送数据时将信号拉高一个时钟周期,表示本帧数据通信结束。
  • 帧格式图示:
    UART帧格式
### UART 总线原理 Universal Asynchronous Receiver/Transmitter (UART) 是一种用于嵌入式系统、计算机硬件和通信设备中的串行通信接口[^5]。其主要功能在于将并行数据转换成串行数据以便于传输,并能反向操作,即将接收到的串行数据重新组合为并行形式。 由于采用的是异步通信机制,UART并不依赖额外的时钟信号来进行位同步;相反,在每次传送前会先发出一个起始位通知接收方准备接受即将到来的信息流,随后跟随实际的数据位——通常设置为6至8比特不等,之后可能还会有一个奇偶校验位用来做简单的错误检测(这一步骤并非总是必需),最后以一或两个停止位作为该次传输过程的结束标志[^3]。 为了确保两端能够正确解读彼此发送过来的内容,双方必须事先协商好一系列重要的配置选项,例如波特率决定了每秒钟可以处理多少个二进制位;而关于帧结构的具体细节如数据宽度、是否存在校验以及停顿间隔也需达成共识[^4]。 ### 应用场景 FPGA作为一种高度灵活的可编程逻辑器件,当与UART相结合时,能够在多个领域发挥重要作用。除了基本的串口通讯外,还可以支持更复杂的网络连接或是构建物联网节点等功能[^1]。这种灵活性使得基于FPGA实现的UART解决方案非常适合那些对于实时性和定制化有较高要求的应用场合。 ```python # Python模拟简单UART数据包生成函数 def create_uart_packet(data, start_bit=0b0, stop_bits=[0b1], parity=None): packet = [] # 添加起始位 packet.append(start_bit) # 处理数据部分 for byte in data: packet.extend([int(bit) for bit in f'{byte:08b}']) # 如果启用了奇偶校验,则计算并加入校验位 if parity is not None: parity_value = sum(packet[-len(data)*8:]) % 2 if parity.lower() == 'even': packet.append(0 if parity_value else 1) elif parity.lower() == 'odd': packet.append(1 if parity_value else 0) # 结束位 packet.extend(stop_bits) return packet ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值