CAN总线与以太网互连的嵌入式网关设计
2 通信模块软件设计
2.1 SJA1000(图3)
图3 RTL8019AS 的初始化流程图
SJA1000驱动程序是由初始化、发送接收部分组成。
2.1.1 初始化
SJA1000在系统上电、硬件复位或主控制器发出复位命令后需要进行初始化,CAN初始化子程序通过对CAN控制器中相应的寄存器写入配置控制字来确定CAN控制器的波特率、发送通道、接收通道、标识符码和标识符屏蔽码等相关信息。进入初始化程序时必须初始化的寄存器有:通用控制寄存器CANGCON、位定时寄存器CANBT 143、以及15个报文对象邮箱中的报文对象控制寄存器CANc0NCH、报文对象状态寄存器CANST CH、标识符寄存器
CANIDT1~4、标识符屏蔽寄存器CANIDMl~4和报文数据寄存器CANMSG等。要注意的是,位定时寄存器CANBTI~3仅能在复位期间访问,因此,在对这些寄存器初始化前,必须确保系统进入复位状态。
2.1.2 发送与接收
本设计采用中断方式发送和接收数据,SJA1000芯片有一个报文发送缓冲区和两个报文接收缓冲区用于CAN报文传送,接收子程序负责节点报文的接收,在接收中断处理程序中,先从接收缓冲区读取要接收的报文,然后发送一个请求信号以启动协议转换和发送。发送子程序负责将以太网传输过来的CAN 协议格式的数据发送到CAN 总线上,发送数据程序把数据存储区中待发送的数据取出,组成信息帧送入发送缓冲区,然后启动发送命令。
2.2 RTL8019AS 驱动
RTL8019AS的驱动程序包含三部分:初始化、接收数据、发送数据。
RTL8019AS的初始化主要包括设置网卡的物理地址、设置相关工作模式的寄存器、接收缓冲区和发送缓冲区的各自起始地址以及大小、是否开中断等参数等,其流程图见图3所示。
在本设计中RTL8019AS采用查询方式接收和发送数据包,通过判断对应的标志位来确定是否发送和接收新的数据包。在数据包的发送过程中,单片机只要通过远程DMA写操作,将待发送的数据包写至发送缓冲区,并启动发送过程。在数据包的接收过程中,单片机只要通过远程DMA读操作,从接收缓冲区读取数据即可。
3 结语
本文提出了一种低成本、高可靠性、适用于工业控制现场的的CAN总线与以太网互连网关的实现方案,该网关可以与工业现场的仪器、仪表等设备相连接在一起,使工业现场的设备具有网络通讯的能力,大大提高了设备的性价比,从而提供生产效率。
评论