在传统的工业控制领域中,大部分的通信采用RS232和RS485来实现,但 RS232总线采用负逻辑电平方式,有着通信距离近,抗干扰性能差等缺点;而R S485总线虽然采用差分方式传输,但其通讯速度慢,组网一般采用主从方式, 在实时的多主网络间通过高速光耦6N137隔离后再与SJA1050相连,这样就很好的 实现了总线上各CAN节点之间的电气隔离。特别说明的是,电路中MCU系统 的电源必须与CAN通信电源各自独立,这样可以有效的抑制来自网络中干扰信 号影响单片机,否则,光耦在电路中就会失去作用。电源可采用小功率的开关电 源模块,这样虽然增加了电路中的接口电路的复杂性,但提高了整个节点的稳定 性和可靠性。
〜。在C AN收发器的入口处,总线终端电阻R5可解决CAN网络中线路中阻抗的匹配问 题。加入TVS,可以有效的抑制来自网络上的静电等干扰,保护通信及收发器 的正常。磁珠L1,L2可以吸收网络上的高频信号,电阻R6及R7在网络中起到 限流保护作用,保护SJA1050芯片免受过流的冲击。
5iD 关:
E •海
表Gt淑
图3提高EMI性能的CAN总线接口电路
在复杂的现场环境中,为提高CAN总线在通信过程中的高可靠性,可考虑 如图3所示的电路方式进行设计。在电路中加入PTC热敏电阻,可有效的抑制 电路中的电流过大而造成对CAN总线的影响,在CANL与CANH两根总线的 输入端与地之间分别接入了一个放电管,当整个CAN网络或部分CAN网络被 裸露于户外的时候,加入放电管尤为重要。当输入端与地之间出现瞬变干扰时, 通过放电管的放电可起到一定的保护最用,最有效的避免雷电对CAN网络总线 的破坏。雷击浪涌波由于持续时间短,脉冲幅度高,能量大,会给CAN网络的 正常运行造成极大的威胁。
二、CAN网络节点的软件设计
为实现CAN总线上数据的收发功能,CAN总线的智能节点电路设计的软件 部分主要包括以下三个部分的子程序:CAN控制器的初始化子程序,发送中断
程序,接收中断程序。如果要应用于在复杂的通信系统中,还需要加入一些总线 错误处理程序,接收滤波处理,总线关闭处理,波特率设置与自动检测等等。
由于AT90CAN32芯片内置了 CAN控制器,初始化的任务主要包括设定波 特率,接收屏蔽寄存器,CAN邮箱的配置等等。在初始化过程结束之后,AT90 CAN32芯片内部的CAN总线控制器就可以进行正常的CAN通信,但在程序中 还需要完成CAN通信的接收中断和发送中断程序。下面给出GCC环境下的C 语言编写的初始化程序:
void Canlnit(void)
unsigned char i,j;
CANGCON |= 0x01;
//reset CAN interface
for( i = 0;i < 15;i++)
//reset all Mobs
CANPAGE = (i << 4);
//select Mob
CANCDMOB = 0;
//disable Mob
CANSTMOB = 0;
//clear status
CANIDT1 = 0;
//clear ID
CANIDT2 = 0;
can总线的一些知识 来自淘豆网m.daumloan.com转载请标明出处.