首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM处理器的CAN-Ethernet通信模块实现(5)

ARM处理器的CAN-Ethernet通信模块实现(5)

3. 3  通信程序的实现

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


图6  通信模块软件流程图

  在调试过程中发现,如果转发过程被特定的中断程序打断,可能发生报文计数错误;如果向RTL8019AS写入待发送报文的过程被以太网接收中断打断,就无法恢复写入过程了。因此在转发过程中应屏蔽相应的中断。

4  结束语

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