首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于CAN/LIN息线的混合网关设计
来源:本站整理  作者:佚名  2009-07-08 11:14:19



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

3.4 数据的处理
    网关的数据处理是指协议的转换和数据在缓冲区的存储与转发。每当接收到一组数据时,首先进行协议转换,然后再将其存入到相应的缓存区。高低速CAN的协议相同,并不需要转换,因此主要是进行CAN协议和LIN协议之间的转换。
    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]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:106,851.60000 毫秒