新闻中心

EEPW首页>手机与无线通信>设计应用> 基于CAN/LIN息线的混合网关设计

基于CAN/LIN息线的混合网关设计

作者: 时间:2009-07-08 来源:网络 收藏

3.3 数据的接收
数据接收是从总线上接收数据,进行必要的协议转换,再将转换后的数据存人相应的缓冲区。中有3个接收子程序,分别对应两路控制器及一路发送器。数据接收采用中断方式,由于不同网络有不同的实时性要求,因此为3个接收程序设定了不同的中断级别。高速的实时性要求最高,中断级别也设为最高;而总线的实时性在三者中最低,故中断级别也最低。当一个接收中断发生后,进入接收中断子程序,判断相应的缓冲区是否已满(低速的接收程序在接收到数据后需要根据数据的目的网络确定缓存区为BUF2还是BUF3)。如果缓冲区已满,则产生一个溢出错误标志;如果没有满,则将数据进行相应的协议转换,并将转换后的数据存入相应的缓存区,退出中断并完成接收。图6所示为低速CAN数据接收过程的简要流程。

3.4 数据的处理
的数据处理是指协议的转换和数据在缓冲区的存储与转发。每当接收到一组数据时,首先进行协议转换,然后再将其存入到相应的缓存区。高低速CAN的协议相同,并不需要转换,因此主要是进行CAN协议和协议之间的转换。
CAN协议和LIN协议都是以帧(frame)为数据单位进行通信的。在进行LIN协议到CAN协议的转换时,首先是将LIN帧分解,从标识符场 (identfield)提取出其中的ID标识符,从数据场(data field)提取出有效数据,然后根据这些信息封装成符合要求的CAN帧格式。CAN协议到LIN协议的转换过程亦是如此。先将CAN帧分解,从仲裁域 (arbitration field)和数据域(data field)中提取出有用信息,然后封装成符合要求的LIN帧格式。
数据的4个缓冲区BUF1~BUF4为FIFO(First InFirst Out)缓冲区,本文采用循环队列(circular queue)来实现数据的先进先出。两个指针Read和Write分别指示队头元素和队尾元素在缓冲区空间中的位置,它们的初值在队列初始化时均应置为 0,每读取或写入一次数据,都要对缓冲区的参数进行调整。写数据时,将新元素插入Write所指的位置,然后将Write加1;读数据时,删去Read所指的元素,然后将Read加1并返回被删元素。

4通信测试
将网关的高速CAN接口和低速CAN接口分别与单独的CAN节点电路相连,LIN接口与单独的LIN从节点相连,组成测试网络。测试的主要内容为高速 CAN和低速CAN之间的通信,低速CAN和LIN网络之间的通信。高速CAN网络采用速率为500 kb/s,低速CAN网络采用的速率为100kb/s,LIN网络采用的速率为10 kb/s。利用PC机的串口发送测试数据,同时在另一个串口终端上进行数据的监测。测试结果表明,发送数据内容与监测到的数据内容一致。

5 总 结
以AT91SAM7A3为核心的一款CAN/LIN网关,实现了汽车网络中高速CAN总线、容错CAN总线及LIN总线三类网络之间的通信,使汽车中的各类网络的信息能够有效共享,实现了不同性质网络的互联。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭