日常记录(85)uart设计文档整理
UART设计文档整理
来源:创造力电子开发网的pdf。
UART 工作于 OSI 模型的数据链路层,实际应用中,可以增加一层应用层,方便设备间的通信。
Modbus 协议是应用于电子控制器上的一种通用语言,其物理层一般使用 RS-485,使用 UART 发收数据。
帧格式
奇偶校验
异或结果是偶检验,取反为奇校验
物理接口
RS232
常用的 IC 有 MAX232 等,当然还有其它公司生产的 IC,如 SP232 等,常以 232 作为标识。
在通信速率低于 20kb/s 时,RS-232所直接连接的最大物理距离为 15m。
- 在 TxD 和 RxD 上:
逻辑“1”为-3V~-15V;
逻辑“0”为+3~+15V。 - 在 RTS、CTS、DSR、DTR 和 DCD 等控制线上:
信号有效(接通,ON 状态,正电压)= +3V~+15V ;
信号无效(断开,OFF 状态,负电压) = -3V~-15V 。
RS485
RS-485 在工业应用现场应用比较广泛,,使用差分信号传输数据,所以抗共模干扰能力比 RS-232 强,通信距离可以超过 1Km。
波特率发生器
这个模块用于为 UART 的收/发器提供时钟,这个时钟为 UART 的波特率的 16 倍频,即如果波特率要求为 9600bps 时,该模块输出的时钟为 9600Hz×16=153600Hz。
接收器——rxd
接收器时刻监视 UART 总线的 RXD 线的电平,当检测到起始位,接收器启动接收状态机,根据寄存器的设定,解析 RXD 线的电平,
当完成一个字节接收,输出接收到的数据和线状态。接收器的设计主要是围绕“有限状态机”而进行。
- 状态机
发送器——txd
发送器是监视总线,当检测需要发送一个字节时,发送器启动发送状态机,根据寄存器的设定,逐位往 UART 总线的 TXD 线发送数据。
当发送完成一个字节,发送器输出发送状态。和接收器相似地,发送器的设计也是围绕“有限状态机”而进行。
总线电平滤波采样
由于使用环境的干扰等,RXD 线可能出现毛刺,所示需要 RXD 的输入需经滤波处理,处理方法是
在一位数据中间取三个点的电平值,少于 2 个点为电平“1”,则把该位判为电平“0”,否则判为电平“1”,这种方法称为“多数表决法”。
对 RXD 线上的滤波适用于起始位的检测、数据位接收、校验位接收和停止位的判别。
- 停止位的处理
RXD停止位只判别1位,且在中间采样之后接收器马上重新监视RXD线电平的下降沿,开始检测下一帧的起始位。
同步时钟
由于 UART 的收/发两个设备的时钟可以存在差异,如果接收器在接收时和发送器的时钟不同步,增加了传输错误的机率,
所以,接收器需要在检测到起始位的起始边沿时,同步自身的时钟,这样将减小因双方时钟上的差异而导致数据传输错误的机率。
该功能的实现是在接收器空闲时,当检测到 RXD 线的电平从高到低的变化时,复位接收器的波特率计数器。
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!