1前言
CAN是国际上应用很广泛的一种现场总线,MCS96系列单片机是目前在产业界推广应用较广泛的嵌进式控制器,其87C196CA单片机内核本身带有CAN控制器,支持标准和扩展的信息帧,即遵循CAN2.0A和CAN2.0B协议。由此而构成的CAN总线支持分布式控制和实时控制,其串行通讯方式灵活可靠,传输间隔较远。由于CAN总线具有通讯速率高、工作可靠性高、现场抗干扰能力强、网络连接方便和性能价格比高等优点,在汽车发动机控制部件、汽车抗滑系统、产业自动化、机床、电梯控制等领域得到了较为广泛的应用。
2硬件构成
2.1CAN总线连接
基于CAN总线的两个87C196单片机网络联接时,分别将单片机的CAN接收、发送两根线通过PCA82C250CAN总线收发器联接到CAN总线上,构成多微控制器CAN总线连接。通讯介质可以是双绞线、同轴电缆或光纤,其总线连接如图1所示。
图1CAN总线连接
该网络最高通讯速率为1Mbit/s,当传输速率为5Kbit/s时,最大通讯间隔可达10Km。在其CAN总线上可挂接多达110个网络节点,而网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息。其数据传输和接收可以是点对点、一点对多点或全局广播等方式进行。
2.287C196CA单片机
87C196CA是集成CAN2.0B总线控制器的高性能16位微处理器,特别适用于现场实时势件控制和分布式控制。片内的CAN控制器与Intel82527独立CAN控制器在软件上是兼容的,每个CAN控制器的输进、输出引脚由二根双绞线联接到CAN总线上。CAN控制器由一个输进引脚(RXCAN)、一个输出引脚(TXCAN)、控制和状态寄存器,错误探测和治理逻辑组成。图2为CAN控制器方框图。
图2CAN控制器方框图
2.3CAN总线收发器
PCA82C250是CAN协议控制器和物理传输线路之间的接口,是影响网络性能的关键因素。它对总线提供差动发送能力,并对CAN控制器提供差动接收能力,其最高传输速率可达1Mbit/s。其主要特点是芯片内部具有限流电路,可以防止输出级对电源、地或负载短路;由于采用差动接收发方式,因此有较强的抗电磁干扰能力;具有低电流节电待机工作模式;该CAN总线收发器至少可以连接110个节点。利用PCA82C250还可以方便地在CAN控制器与驱动器之间建立光电隔离,以实现总线上各节点间的电气隔离。
3通讯软件
对于通过CAN总线连接的单片机之间的通讯软件编程需要定义一系列的控制字,并在两个单片机上进行配置。即首先进行上电初始化,定义CAN控制寄存器,定义位定时寄存器选择CAN的通讯速率,定义信息体屏蔽寄存器选择接收对象。其次对信息体进行初始化,分别定义两个信息体工作模式、发送字节数、选择CAN2.0A或CAN2.0B方式。其程序代码:
/*CAN控制器初始化*/
can_con=0x41;/*CAN控制器CCE位置1,
则可以定义CAN定器*/
can_btime0=0x41;/*定义CAN定时器为
250Kb/s*/
can_btime1=0x67;
can_con=01;/*答应对CAN控制器进行软
件初始化*/
can_sgmsk=0x0;/*定义标准CAN通讯格
式的屏蔽控制字,所有位都不滤纸*/
can_msg1con0=0x55;/*信息体1控制器0
初始化*/
can_msg1con1=0x55;/*信息体1控制器1
初始化*/
can_msg1cfg=0x88;/*定义信息体1为发
送,发送8字节,标准CAN格式*/
can_msg1id=0xc8c8c8c8;/*信息体1标识
寄存器初始化标识符为c8c8c8c8;
can_msg1con0=ox95;/*信息体1控制器
0MSGVAL位置1,标明信息体1有效*/
can_msg2con0=0x55;/*信息体2控制器0
初始化*/
can_msg2con1=0x55;/*信息体2控制器1
初始化*/
can_msg2cfg=0x80;/*定义信息体2为接
收,接收8字节,标准CAN格式*/
can_msg2id=0xc8c8c8c8;/*信息体2标识
寄存器初始化标识符为c8c8c8c8*/
can_msg2con0=ox95;/*信息体2控制器
0MSGVAL位置1,标明信息体2有效*/
can_con=0x02;/*CAN控制器软件初始化
完成*/
/*发送8字节数据:*/
can_msg1con1=0x5a;/*CPUUPD置1,使
软件刷新数据,NEWDAT置1使信息置1使信息
体有效*/
can_msg1data0=0x00;/*给信息体1第1个
数据赋值*/
can_msg1data1=0x11;/*给信息体1第2个
数据赋值3*/
can_msg1data2=0x22;/*给信息体1第3个
数据赋值*/
can_msg1data3=ox33;/*给信息体1第4个
数据赋值*/
can_msg1data4=0x44;/*给信息体1第5个
数据赋值*/
can_msg1data5=0x55;/*给信息体1第6个
数据赋值*/
can_msg1data6=0x66;/*给信息体1第7个
数据赋值*/
can_msg1data7=ox77;/*给信息体1第8个
数据赋值*/
/*接收8字节数据:*/
can_msg2cfg=0x80;
can_msg2id=oxc8c8c8c8;
can_msg2con1=0x55;
can_msg2con0=0x99;
4结束语
基于CAN总线的16位87C196CA单片机串行通讯,由于运用CAN总线技术,使电路设计简化、紧凑、极大地进步了系统的可靠性、实时性,系统抗干扰性能强,本钱较低,性能安装比高、安装维护简洁方便,更适于车辆控制、工厂自动化控制、电梯控制、医疗设备等,具有非常广阔的应用远景。