一种基于Salvo的通用CAN/LIN网关
各任务和中断服务程序优先级的设置对系统完成正常功能影响较大。为防止CAN总线和LIN总线上数据丢失,接收任务(CAN_RXD任务和LIN_RXD任务)优先级高于发送任务优先级(CAN_TXD任务和LIN_TXD任务)。为防止大量数据在网关中来不及转换或发送而丢失,系统开辟了多个接收缓冲器(CANSDU和LINSDU数组)和发送缓冲器(LINPDU和CANPDU数组)。PIC18F4680的CAN模块是独立的硬件电路,可以不依赖于CPU独立工作,且内有3个接收缓冲器(包括MAB)和3个发送缓冲器,而LIN协议的数据处理由CPU的程序控制USART完成,为防止LIN总线数据丢失,LIN总线任务(LIN_RXD任务和LIN_TXD任务)优先级高于CAN总线任务(CAN_RXD任务和CAN_TXD任务)。系统各任务和中断服务程序的优先级参见表1。

5 结论
基于CAN/LIN总线的分级网络控制系统正逐渐从汽车电子领域推广到其它,如:工业测控、安全防护等邻域中应用,在基于CAN/LIN总线的分级网络控制系统中CAN/LIN网关是一个核心部件,它为CAN总线设备和LIN总线设备的互访提供连接桥梁。本文讨论的基于Salvo的通用CAN/LIN网关采用新型集成CAN2.0B模块和可支持LIN1.3的USART模块的PIC18F4680微处理器,软件设计采用商用RTOSDDSalvo,大大提高了系统的稳定性和可靠性,增加了系统的可移植性和可扩展性,通过系统功能的裁剪和扩充可应用于各种分级网络控制领域,是一种通用性很强的CAN/LIN网关。
本文作者创新点:采用RTOSDDSalvo设计一个通用CAN/LIN网关,传统的CAN/LIN网关主要专用于汽车电子通用性不强,采用RTOS设计的网关功能裁剪和扩充方便,可移植性和通用性大大增强。
评论