CAN总线是一种最有前途的现场总线,因其优异性能而在工业控制、汽车电子、安防等方面得到广泛应用。设计CAN-bus通讯接口是很重要的一个环节,设备的正确运行与其密切相关。如图 1给出了一个实际的CAN-bus通讯单元电路图,电路结构为:
LPC2119(内部集成CAN控制器的32位ARM7芯片)+隔离CAN收发器(CTM Module)。
<?xml:namespace prefix = v />
图 1 CAN-bus通讯单元原理图
LPC2119/2129/2194处理器包含2个或4个CAN模块,可同时支持多个CAN总线的操作,使器件可用作网关、开关、工业或汽车应用中多个CAN总线的路由器。PHILPIS公司的LPC2119/2192/2194 ARM7TDMI-S处理器区别于LPC2214/2124处理器的最大特点就是内建CAN控制器。如图 1.1所示,给出了一个基于LPC2119的CAN节点电路,对于LPC2119芯片,最小系统需要两组电源、复位电路、晶振电路,P0.14引脚接一个上拉电阻(一个连接到正电源的电阻),以禁止ISP功能。该电路中采用了隔离CAN收发器模块,以确保在CAN总线遭受严重干扰时控制器能够正常运行.
#include "config.h"
#include "IncludeCan.H"
INT32U statue;
int main()
{
InitCAN (CAN1);
ConfigAFReg();
CANRcvCyBufApp[CAN1].RcvBuf[0].CANRcvFS.Bits.DLC = 8;//数据长度
CANRcvCyBufApp[CAN1].RcvBuf[0].CANRcvFS.Bits.RTR = 0;//远程帧,数据帧标志(1为远程帧
CANRcvCyBufApp[CAN1].RcvBuf[0].CANRcvFS.Bits.FF = 0; //标准帧,扩展帧标志(1为扩展帧
CANRcvCyBufApp[CAN1].RcvBuf[0].RxCANID.Bits.ID = 0;//帧ID
CANRcvCyBufApp[CAN1].RcvBuf[0].RDA.Word = 0x44332211;//前四字节数据
CANRcvCyBufApp[CAN1].RcvBuf[0].RDB.Word = 0x88776655;//后四字节数据
//结束初始化
while (1)
{
statue = CANSendData(CAN1,SIG,&CANRcvCyBufApp[CAN1].RcvBuf[0]);
if (statue == 0)
CANRcvCyBufApp[CAN1].RcvBuf[0].RxCANID.Bits.ID++;
}
}
以上为LPC2119+CTM隔离CAN收发器构成的CAN节点,介绍了隔离CAN收发器的优点:简化设计,稳定可靠,能够实现CAN总线上各节点在电气、电源上完全独立和隔离。软件设计部分简单介绍基于FullCAN函数库CAN发送报文流程及部分例程。
文章评论(0条评论)
登录后参与讨论