UART的数据结构以及需要配置的参数

非常好的问题。10位和11位的UART数据帧是最常见的配置。让我详细解释这两种数据帧结构:

10位UART数据帧结构(通常称为"8-N-1"):

  1. 起始位:1位(总是低电平)
  2. 数据位:8位(D0到D7,D0为最低有效位)
  3. 停止位:1位(高电平)

数据帧顺序:
[起始位] [D0] [D1] [D2] [D3] [D4] [D5] [D6] [D7] [停止位]

特点:

  • 最常用的配置
  • 无奇偶校验位
  • 每8位数据有2位开销(起始位和停止位)

11位UART数据帧结构(通常为"8-E-1"或"8-O-1"):

  1. 起始位:1位(总是低电平)
  2. 数据位:8位(D0到D7,D0为最低有效位)
  3. 奇偶校验位:1位
  4. 停止位:1位(高电平)

数据帧顺序:
[起始位] [D0] [D1] [D2] [D3] [D4] [D5] [D6] [D7] [奇偶校验位] [停止位]

特点:

  • 增加了奇偶校验位以提高错误检测能力
  • 每8位数据有3位开销(起始位、奇偶校验位和停止位)
  • "8-E-1"表示偶校验,"8-O-1"表示奇校验

关键点:

  1. 起始位:

    • 总是低电平(逻辑0)
    • 用于同步接收端的时钟
  2. 数据位:

    • 最低有效位(LSB)首先发送
    • 8位数据允许传输完整的ASCII字符或其他字节数据
  3. 奇偶校验位(仅在11位帧中):

    • 用于简单的错误检测
    • 偶校验:使总的1的个数为偶数
    • 奇校验:使总的1的个数为奇数
  4. 停止位:

    • 总是高电平(逻辑1)
    • 提供字符间的间隔
    • 允许接收器重新同步
  5. 空闲状态:

    • 当没有数据传输时,线路保持在高电平(与停止位相同)
  6. 比特时序:

    • 每个比特的持续时间由波特率决定
    • 例如,9600 baud 时,每比特约104微秒
  7. 数据效率:

    • 10位帧:80%的数据效率(8/10)
    • 11位帧:约72.7%的数据效率(8/11)

这两种帧结构在不同的应用场景中都很常见。10位帧(8-N-1)简单高效,适用于大多数现代应用。11位帧(8-E-1或8-O-1)提供了额外的错误检测能力,适用于需要更高可靠性的场景,尤其是在有噪声的环境中。

选择哪种帧结构取决于具体的应用需求、系统可靠性要求和通信环境。在设计系统时,确保通信双方使用相同的帧结构配置是至关重要的。

UART (通用异步收发传输器) 配置涉及多个参数,以确保正确和高效的通信。以下是UART需要配置的主要项目:

  1. 波特率 (Baud Rate):

    • 定义数据传输速度
    • 常见值:9600, 19200, 38400, 57600, 115200 bps 等
    • 发送和接收设备必须使用相同的波特率
  2. 数据位数 (Data Bits):

    • 定义每个字符的位数
    • 通常选项:5, 6, 7, 或 8 位
    • 最常用的是 8 位数据
  3. 停止位 (Stop Bits):

    • 标志字符传输结束
    • 选项:1, 1.5, 或 2 位
    • 最常用的是 1 位停止位
  4. 奇偶校验 (Parity):

    • 用于简单的错误检测
    • 选项:无校验 (None), 偶校验 (Even), 奇校验 (Odd), 标记 (Mark), 或 空格 (Space)
    • 现代系统常用"无校验"
  5. 流控制 (Flow Control):

    • 管理数据流,防止缓冲区溢出
    • 选项:无、硬件流控(RTS/CTS)、软件流控(XON/XOFF)
  6. 数据方向 (Data Direction):

    • 全双工、半双工或单工
    • 大多数UART实现支持全双工
  7. FIFO 缓冲区设置:

    • 如果硬件支持,配置发送和接收FIFO的大小和触发级别
  8. 中断设置:

    • 配置哪些事件触发中断(如接收完成、发送完成、错误等)
  9. 时钟源 (Clock Source):

    • 选择UART模块的时钟源(通常由系统时钟派生)
  10. 过采样率 (Oversampling Rate):

    • 某些UART允许配置过采样率(如16倍或8倍)
  11. 错误检测设置:

    • 配置如何处理帧错误、奇偶校验错误、溢出错误等
  12. 地址识别模式 (如果支持):

    • 用于多处理器通信系统
  13. 自动波特率检测 (如果支持):

    • 启用或禁用自动波特率检测功能
  14. 回环模式 (Loopback Mode):

    • 用于诊断和测试
  15. 低功耗模式设置:

    • 配置UART在不活动时如何进入低功耗状态
  16. 引脚复用 (Pin Multiplexing):

    • 在多功能芯片上,选择哪些引脚用于UART功能
  17. DMA 设置 (如果支持):

    • 配置UART与DMA控制器的交互

实际配置:

  • 最基本的配置通常被简称为"8-N-1",表示8位数据、无校验、1位停止位
  • 完整配置例子:115200 bps, 8 数据位, 无校验, 1 停止位, 无流控制

注意事项:

  • 不是所有UART硬件都支持所有这些配置选项
  • 具体配置取决于硬件能力和应用需求
  • 通信双方必须使用兼容的配置

在实际应用中,正确配置这些参数对于确保可靠的UART通信至关重要。

补充:奇偶校验的基本原理:

定义:

奇校验:数据位加上校验位中"1"的总数为奇数
偶校验:数据位加上校验位中"1"的总数为偶数

校验位的计算:

发送端计算数据位中"1"的数量
根据奇偶校验类型,设置校验位使总的"1"数量符合要求

接收端验证:

接收端计算接收到的数据位和校验位中"1"的总数
检查总数是否符合预定的奇数或偶数要求

具体实现过程:

发送端:
a. 计算数据位中"1"的数量:

可以使用位操作或查找表方法
例如:对8位数据,可以使用异或操作累加每一位

b. 确定校验位:

奇校验:如果"1"的数量为偶数,校验位设为1;否则设为0
偶校验:如果"1"的数量为奇数,校验位设为1;否则设为0

c. 构造数据帧:

将计算出的校验位插入到数据位之后,停止位之前

接收端:
a. 接收整个数据帧(包括数据位和校验位)
b. 计算接收到的所有位(数据位+校验位)中"1"的总数
c. 验证:

奇校验:总数应为奇数
偶校验:总数应为偶数

d. 错误处理:

如果校验失败,通常会标记一个错误或请求重传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值