CAN总线控制器的初始化过程主要包括相应的引脚功能设置、工作方式设置、波特率参数设置以及出错警告界限设置等,下面是对CAN1的初始化代码(CAN2与之类似):
上面所述是对CAN控制器初始化的主要步骤,另外,还可以根据具体情况对其它CAN寄存器的值进行设置。
LPC2292中有个全局验收滤波器,该模块可为所有CAN控制器提供接收标识符的查询功能(即验收滤波)。另外,验收滤波器还可为选择的标准标识符提供fullCAN-style自动接收功能。在上面对CAN控制器的初始化中,为了简化程序,设计时将验收滤波器设置为旁路。但在实际应用中,应根据需要对它进行设置。事实上,让它参与接收滤波的工作有助于改善节点接收信息的选择性。CAN控制器初始化完成后,即可开始发送和接收信息。
3.3 发送过程
发送子程序主要负责节点报文的发送。发送时,用户只需要将待发送的数据按特定的格式组合成一帧报文送入CAN控制器的发送缓存区,然后启动发送即可。当然,在向发送缓冲区送报文之前,必须先做一些判断。发送程序分为发送远程帧和数据帧两种,其中远程帧无数据场。图2是发送过程流程图。
3.4 接收过程
接收子程序主要负责节点报文的接收以及其它情况的处理。接收子程序相对要复杂一些。因为在处理接收报文的过程中,同时也要对总线关闭、错误报警、接收溢出等情况进行处理。CAN控制器报文的接收主要有两种方式:中断接收方式和查询接收方式。如果对通信的实时性要求不是很强,建议采用查询接收方式。两种接收方式的编程思想基本相同。图3给出了用查询方式接收报文的流程图。
4 结束语
该智能节点可利用EasyJTAG仿真器进行调试仿真,并可在实验环境下完成通讯功能。该方法与51系列单片机相比,其通信速度较高。因此,在此基础上构建CAN控制系统具有实际意义,但对于不同系统,其软件和硬件需要作相应的改动。