关于单片机串口的问题
最近有点傻了~单片机的串口都不知道怎么玩了
内心突然有了一个困惑~单片机的串口如何做到双工呢?
单片机的数据是从数据寄存器发出的,发的时候不是问题,但收的时候需要从寄存器把数据读出来,这个过程是需要程序员手动触发的
发送方也不知道你啥时候调用接受,那会不会出现这种情况,发送方发过来了,因为没有主动去接受,数据寄存器的数据被覆盖,导致数据丢失呢? 使用接收缓冲区存储数据,避免立即从寄存器读取,减少数据丢失风险。 处理溢出或丢失的数据,避免影响系统稳定性。
c17 发表于 2023-8-23 10:10
在主循环中定期检查接收,减少数据被覆盖的风险。
就是这个定期才容易被覆盖 通过中断触发接收处理,保证及时读取接收数据,无需手动触发。 应用流控制机制,确保数据发送和接收的同步,减少缓冲区溢出。 确保缓冲区足够大,处理数据拥塞情况,减少丢失。
分配适当的处理优先级,保证接收数据的及时性。
确保发送和接收速率匹配,避免速度不一致造成的数据丢失。
在主循环中定期检查接收,减少数据被覆盖的风险。
使用标志位记录接收状态,通知程序何时读取数据,避免数据冲突。
全双工使用422通讯或者收发独立的232通讯 单片机串口是异步通信接口,通过 TX/RX 线传输数据,需约定波特率、数据位等参数。硬件自动加校验位,软件处理数据帧。常用于模块通信,需处理中断接收、超时重发,注意波特率误差,避免数据丢失,可加缓冲区提升稳定性。
页:
[1]