Altium Designer, 电路设计技巧

如何保证用于串行通信协议的PCB设计中的信号完整性

在我上学的时候,我沉迷于流行的FIFA PC游戏系列。我可以花上几个小时与最好的虚拟足球队作战。当妈妈叫我出门买东西时,我非常全身贯注玩这个游戏,以至于没有听见妈妈的声音。可想而知,我受到了妈妈的责骂,并且在3个月内禁止玩PC游戏。这个例子很好的说明,外部来源可能会导致我们错过或误读发送给我们的重要信息。在嵌入式系统领域,沟通不畅也是一个大问题。特别是当微控制器(MCU)的信号完整性受损时。丢失数据包或不正确传送的数据包可能会导致您受到的处罚远远比3个月没有FIFA更加严重。我们来探讨如何确保嵌入式系统之间在串行通信接口进行正确的传输和接收信息。

 

串行通信协议在嵌入式系统中的用法

通信在嵌入式系统中很重要。您可能知道,串行通信是嵌入式系统中数据传输最流行的方法之一。它在MCU之间以顺序方式逐位传输数据包。我们来看两种不同类型的串行通信。

串行通信可分为同步和异步。同步串行通信,如串行外设接口(SPI)和内部集成电路(I2C)协议,使用时钟信号来同步数据传输。存储器芯片,如静态随机存取存储器(SRAM)、闪存和电可擦除可编程只读存储器(EEPROM),是常见的使用同步通信的器件。

另一方面,异步串行通信(如RS232和RS485)没有时钟信号。相反,它们依赖于唯一的起始和停止位来分隔数据字节。这些通常用于在不同的嵌入式系统之间或嵌入式系统与数据采集计算机之间进行通信。标准如RS232和RS485没有定义的上层协议、错误处理和恢复机制。这些通常由系统开发人员指定。

异步串行通信在停车缴费机、数据监控系统以及依赖于常规有线通信技术的安全系统等应用中非常普遍。如支付交易、周期性参数变量、报警和故障事件等重要信息被传送到数据采集PC以进行审计和备份。

 

为什么通信信号完整性是非常重要的,以及它如何可能会受到影响?

从嵌入式系统到数据采集终端数据包的准确传输是非常重要的。当发生传输故障时,可能会产生财务影响。例如,在支付系统中,如果有效的支付交易偶然在传输中丢失,那么就会没有它们的记录。当收到的钱与记录的交易不相符,这可能会导致严重的问题。

除了在传输中数据包会丢失,信号完整性还可以影响数据包的内容。虽然串行通信是数字处理,但是每个字节的电压电平的性质仍然是模拟的。理论上,数字通信是1和0的逻辑,并且由不同的电压电平表示。在现实生活中,这些电压并不是平滑的直线,因为它们偶尔会受到电气干扰而失真。特别是在数千英尺长的通信电缆中。与数据包丢失相比,更难找到已经发生错误的数据。例如,具有损坏的日期信息的事务可能仍然出现在数据库中的某个位置。

除了会受到安装嵌入式系统的地方外部因素的不可避免的电气干扰之外,交易数据包中的损坏可能是由于不符合最佳设计规范的PCB设计造成的。遇到已损坏或丢失数据包的问题的嵌入式系统,也可能是因为没有合适的错误检查处理和恢复系统。这可能是由于程序员缺乏经验,或仅仅因为程序员没有意识到合适的错误检查系统的重要性。

 

如何为专用串行通信协议设计信号完整性

精心设计的嵌入式系统可以减少发生影响信号完整性的问题,通过第一时间防止它们和/或通过备份恢复措施。以下是我在嵌入式系统设计中亲自使用的一些方法。

1.   在数据包中使用校验和

在数据包的所有字节上使用循环冗余校验(CRC)校验和,而不是简单使用按位操作(ADD或XOR),能够使得接收器准确检测数据包是否已损坏。接收机可以比较传输数据包中的校验值和和手动计算结果。如果两个校验和不匹配,然后它可以丢弃数据包。

2.    握手和应答

除非是广播消息,否则每个传输数据分组必须由接收机使用肯定应答(ACK)或否定应答(NACK)进行回复。这允许发送方知道传输是否已成功,或者是否需要重传相同的数据包。

3.    降低传输速度

在串行协议(如RS485)中,传输速度通常以波特率表示,即每秒传输的位数。理论上,RS485在最大长度为4000英尺时支持100 kbps的传输速率,但在实际应用中,由于电缆的质量、电气噪声以及MCU在管理其他任务的同时处理信号的能力,这些值可能会大大降低。在设备彼此分开数千英尺的应用中,数据包在较高的波特率下可能损坏。在这种情况下,切换到较低的传输速度是明智的。

4.    在PCB中加入最佳设计实践

您的固件的处理数据损坏的能力可能仅限于PCB的基本设计。始终坚持最佳设计实践,如保持通信信号之间的合理间隙,并使用正确的接地,以确保数字信号稳定。最好的电子设计软件,如Altium Designer,拥有合适的工具来支持您最佳的PCB设计实践。

Tagged , , ,

About Simon Wang

发表评论

电子邮件地址不会被公开。 必填项已用*标注