目录
该隔离串口通信电路设计注意事项是针对板内芯片间的串口通信,而非RS232或RS422等设备间的串口通信。
1.串口通信简介
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
1.1波特率
波特率是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。一般调制速率大于波特率,比如曼彻斯特编码)。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
1.2数据位
数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
1.3停止位
停止位用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
14奇偶校验位
奇偶校验在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
2.隔离串口通信电路
当高压电路模块与低压电路模块通信时,通常会用到隔离方案。最简单的隔离方案便是光耦隔离,往往就是这个简单,会出现让人意想不到问题。如下图是一个典型的PC817光耦隔离串口通信电路。
串口通信的成功于否关键在于两个芯片的波特率要一致,这样便不会形成误码。因此在采用低速光耦时,通信波特率不能设计过高。比如上面的电路,若将波特率设置为9600bit/s时,就有可能会出现通信故障。
我们可以查看一下PC817的数据手册,在发光二极管端输入的信号,经过转变成光信号再转变成电信号的过程中,输出信号波形产生了比较明显的上升和下降沿。当负载为10kΩ时,上升和下降沿基本在120us以上。而9600bit/s的波特率对应的单个位的时钟频率便是9.6kHz,高电平脉宽时间104us。因此经过光耦隔离后,在三极管端的输出信号会使芯片无法接收到正确的高电平报通信故障。
2.1优化方案
针对这种低速隔离光耦,最简单的优化方案便是降低通信波特率。若将9600bit/s降为1200bit/s,那么其脉宽持续时间由104us增加至833us。从信号完整性角度来分析,上升和下降沿时间通常为脉宽10%,也就是说9600bit/s和1200bit/s允许的上升和下降沿时间分别为10.4us和83.3us。
只是降低波特率还不足以解决以上电路的问题,还是会出现通信故障。根据光耦数据手册的响应曲线图,将负载电阻由10kΩ改为1kΩ时其上升和下降沿时间可以缩短至20us。
因此将波特率降低至1200bit/s同时将负载电阻改为1kΩ可以保证串口通信正常。
若板内的串口通信的数据量比较大,波特率大于9600bit/s及以上时,必须采用高速光耦。
2.2PCB设计注意事项
隔离电路最重要的一点是电气安全距离要足够。因此在光耦下方尽量不要走线,一旦走线便要做开槽处理。开槽宽度必须>1.5mm,否则达不到增加爬电距离的效果。
再者对于串口走线最好能采用差分对走线方式,RX和TX用地线与其它信号线隔开,走线满足3W原则。信号环路面积尽量小,过大的环路面积会带来较大的寄生电容,寄生电容的增加会导致信号的上升和下降的增加,进而加大了出现通信故障的概率。
若转载请私信,并贴上原文链接。