网关的软件设计采用嵌入式操作系统μC/OS-Ⅱ,它具有较小的内核结构,开发成本小,执行效率高,移植也容易。初始化文件通过JTAG下载到网关并保存在FLASH中。
该设计的关键是编写CAN驱动程序,主程序通过调用CAN驱动程序实现接口数据的收发,驱动程序包括CAN控制器的初始化、接收数据、发送数据和总线异常处理。
CAN控制器的初始化
初始化操作包括硬件使能CAN、软件复位、设备报警界限、设置总线波特率、设置中断工作方式、设置CAN验收过滤器工作方式、设置控制器的工作模式和启动CAN等。
LPC2294片内外设与引脚的连接由引脚连接模块控制。CAN控制器的硬件使能就是通过软件设备GPIO寄存器来控制多路开关,将特定的引脚与CAN控制器连接起来。
数据的接收与发送
LPC2294的每个CAN控制器中有3个发送缓冲区,发送数据时先查询CANSR寄存器是否空闲,若空闲才能写入数据,然后判断报文的类型,根据报文类型调用相应的发送函数,即对数据进行封装并写入发送缓冲区,最后调用发送命令。
为了提高效率,接收数据采用中断方式,首先在CANopen的初始化程序中要使能接收中断,当有中断发生,读取CANICR寄存器,判断接收中断标志是否置位。
异常处理
在总线发生严重故障的情况下,CAN节点脱离总线,此时下述寄存器位被置位为CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。
RM将许多CAN控制器功能复位和禁止。软件下一步必须置零RM位。发送错误计数器将递减计数总线释放条件(11个连续的隐性位)的第128个错误。
-
CAN
+关注
关注
57文章
2725浏览量
463465 -
通信软件
+关注
关注
0文章
12浏览量
6994
原文标题:西安站 | EDA365·电子硬件技术研讨会精彩回顾
文章出处:【微信号:eda365wx,微信公众号:EDA365电子论坛】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论