串口通信知识详解与示例实践
1. 串口通信中断
在串口通信中,有两个重要的中断:发送中断(TI,Transmit Interrupt)和接收中断(RI,Receive Interrupt)。当 SBUF 中的一个字节成功发送时,UART 会设置发送中断标志;当接收到一个字节时,UART 会设置接收中断标志。如果 ES(Enable Serial)被设置,那么当 TI 或 RI 被置位时,会自动调用一个特殊的中断处理函数。程序需要负责处理这些中断并重置标志。
2. 握手协议
2.1 8051 缓冲器问题
8051 只有一个单字节的缓冲区 SBUF,而典型的带有 16550 UART 的 PC 串口有 16 字节的缓冲区。如果 SBUF 不能被“快速”处理,传入的字节可能会覆盖尚未读取和处理的字节。为了解决这个问题,可以使用握手协议。
2.2 握手协议类型
握手协议有软件和硬件两种形式:
- 软件握手 :也称为 XON/XOFF,使用字节流中的控制字符来信号数据传输的暂停和恢复。Control - S(ASCII 19)信号通知其他设备停止发送数据,Control - Q(ASCII 17)信号通知其他设备恢复发送数据。这种方法的缺点是响应时间较慢,并且 ASCII 字符集中的两个字符必须保留用于握手。
- 硬件握手 :使用额外的 I/O 线。最常见的硬件握手形式是使用两条额外的控制线:RTS(Ready to Send)和 CTS(Clear to Send)。每个设备控制一条线。当可以接收字节时,相应的线(RTS
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



