在串口(UART/USART)通信协议中,我们会经常遇到停止位(Stop Bit)的概念,也就是串口初始化代码配置或者串口助手配置时,一般都需要对停止位进行设置,我们可能很少关注这个参数,一般情况下配置为1个停止位就可以。 那这个停止位到底有什么作用呢?怎么配置比较合理呢?本文给大家解释一下。 说到底,停止位的主要作用其实就是标志一个串口数据帧的结束,并为接收方提供时间同步的缓冲时间,并且停止位的不同设置(通常为0.5、1、1.5或者2位,如下图为某个MCU的串口外设库定义)也会影响串口通信的可靠性和兼容性,下面从六个方面展开说下。 1. 时钟同步与帧界定 作用: 停止位帮助接收方明确当前数据帧的结束位置; 由于异步串口通信(UART)没有独立的时钟信号,接收方依赖起始位和停止位来同步时钟。 选择影响: 较长的停止位(如2位): 提供更多时间让接收方调整时钟同步,适合高波特率或长距离传输(可能因线路噪声导致信号失真); 较短的停止位(如1位): 节省带宽,适合高吞吐量场景(如短距离、低噪声环境)。 2. 抗干扰能力 作用: 停止位的长度可以抵消信号传输中的延迟或抖动(如线路电容、电磁干扰)。 选择影响: 在噪声较大的环境中,1.5或2位停止位能降低接收方误判下一帧起始位的概率; 在稳定环境中,0.5或1位停止位足以满足需求。 3. 效率与吞吐量 计算示例(假设8数据位+1校验位): 1位停止位:每帧10位(8+1+1),效率90%。 2位停止位:每帧11位(8+1+2),效率81.8%。 影响: 停止位越长,有效数据占比越低,但对低速通信影响较小。 4. 历史与设备兼容性 早期设备: 某些老式设备可能要求1.5或2位停止位,以匹配其机械响应速度; 现代标准: 大多数现代设备默认使用1位停止位,但需根据对接设备的协议要求调整(例如某些工业设备可能固定使用2位)。 5. 常见应用场景 0.5位停止位: 目前来说,应用较少吧; 1位停止位: 最常用,适用于大多数场景(如PC串口、单片机通信)。 1.5/2位停止位: 用于特定设备或高噪声环境(如工业RS-485网络)。 6. 配置建议 默认选择:优先使用1位停止位,除非协议或设备明确要求其他值; 调试技巧:若通信出现误码,可尝试增加停止位长度或降低波特率; 标准匹配:确保发送方和接收方的停止位设置完全一致,否则会导致帧错误。
综上所述,停止位的选择本质是可靠性与效率的权衡:较长的停止位增强容错性,较短的停止位提升传输速率,需根据实际场景和硬件要求决定。
|