基于ARM处理器的CAN-Ethernet通信模块实现

技术分类: 汽车电子  嵌入式系统  | 2007-07-24
来源:电子设计信息网 | 作者:夏继强 袁骏 满庆丰

  3. 3  通信程序的实现

  处理器对SJA1000T和RTL8019AS 的操作都使用了中断方式,通信模块的软件程序可以分成SJA1000T 中断服务程序、RTL8019AS中断服务程序和主程序3 个部分,是典型的前、后台处理结构。在中断服务程序中,将收到的CAN 总线报文和以太网报文读入内存中的缓冲区,并累加缓冲区内还未处理的报文计数。在主程序循环中,轮流处理两个缓冲区中的报文,并减小报文计数值。图6 是SJA1000T的中断服务流程、RTL8019AS中断服务流程、主程序的流程。由于SJA1000T内部的接收缓冲区只有64B ,所以在程序中定义了容纳32个Frame结构体数组can- rbuf [ ]并组成环形缓冲区。同时也定义了相同大小的数组eth- rbuf [ ]组成以太网接收的环形缓冲区。

通信模块软件流程图

图6  通信模块软件流程图

  在调试过程中发现,如果转发过程被特定的中断程序打断,可能发生报文计数错误;如果向RTL80

19AS写入待发送报文的过程被以太网接收中断打断,就无法恢复写入过程了。因此在转发过程中应屏蔽相应的中断。

  4  结束语

  采用上述方法实现的CAN-Ethernet 通信模块,解决了以太网和现场总线CAN 总线之间互联问题,可以根据应用的需求,进行灵活的配置和改进,提高系统的性能和可靠性。实际证明,在局域网环境下模块工作可靠,在以太网负载适中时,只有很小的通信延迟。它为CAN-Ethernet 的互联提供了低成本、高性能及灵活的解决方案。

0
0
(请您对文章做出评价)
1】【2】【3】【4
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会