微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RS485-CAN总线转换器设计

RS485-CAN总线转换器设计

时间:12-16 来源:互联网 点击:

中断

VICIntEnable |=(119)|(1(20+ CanNum))|(1(26+ CanNum));

CANIER(CanNum).Word= USE_INT_CAN[CanNum]; while (SetTPMMOD(CanNum,USE_TPM_CAN[CanNum]));//设置发送优先模式寄存器

while (SetLOMMOD(CanNum,USE_LOM_CAN[CanNum]));//设置只听模式寄存器

CANRcvCyBufApp[CanNum].FullFlag = 0; //初始化接收环形缓冲区

CANRcvCyBufApp[CanNum].ReadPoint = 0;

CANRcvCyBufApp[CanNum].WritePoint = 0;

SoftEnCAN(CanNum); //软件启动CAN

}

3.2 RS485-CAN总线转换器数据转换原理

CAN的帧格式中,有一个标识符域。CAN控制器的全局滤波器会检测这个标识域,决定是否接收本帧数据。由于RS485网络上,所有节点都会同时收到数据,因此可以为所有的RS485从设备设定同一个标识符。一个CAN节点若要发送数据给RS485设备,只需在该帧把标识符域设定为相应的标识符即可。

RS485本质上仅仅是一个物理层标准,以字节为单位进行数据通讯,其帧格式完全由用户自己定义。然而最终,在RS485总线中最终信息的传输还是以帧为单位,其中包含了地址信息。RS485设备会自动根据接收到的帧,自动判断该帧是否发往本节点,然后做出相应处理。因此,在RS485设备要发送数据时,RS485-CAN总线转换器只需把RS485总线的数据帧打包入CAN的数据帧中,然后发送到CAN网络上;而RS485设备在接收数据时,RS485-CAN总线转换器则把RS485总线的数据帧从接收到的CAN数据帧中提取出来,发往RS485设备即可。

3.3 RS485设备数据接收中断程序

当RS485-CAN总线转换器收到CAN网络上发往RS485设备的数据帧时,即会触发CAN中断,进入数据接收中断服务程序,其流程图如图4(源程序略):

3.4 RS485设备数据发送中断程序

当RS485-CAN总线转换器串口收到RS485设备发送的数据,即会触发串口中断,进入RS485设备数据发送中断程序。其流程图如图5(源程序略):

图4: 数据接收中断程序流程图

图5: 数据发送中断程序流程图

4.结束语

本文设计的RS485-CAN总线转换器的电路简单可靠,操作方便。通过它,任何RS485设备都可以无需做任何修改就可以直接放到CAN网络中使用。在总线转换器的软件设计中一般应该遵守的一条原则是:不要将其功能设计的过于复杂。因为它的主要任务是将数据以最快的速度转发。至于流量和差错控制应由通信双方的应用层来完成。而本总线转换器的软件设计,很好地达到了这一要求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top