UART转CAN的运用已广泛运用于各行各业,因而关于数据帧转化的办法要求也逐步增多,现在干流的转化办法包含通明转化、通明带标识转化以及自定义转化。详细是怎么完成?本文将为我们介绍其间的通明带标识转化。
1 . 适用场景
串口转CAN模块在什么时分需求用到呢?一是老产品面对晋级,需求用到CAN总线通讯,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU现已包含CAN总线接口,但数量上不能满意项目需求。若呈现相似以上两种情何况MCU有搁置串口,则能够选用串口转CAN模块处理。
图1 运用职业
2 . 运用办法
该类模块能够很方便地嵌入到具有UART接口的设备中,在不需改动原有硬件结构的前提下使设备获得CAN-bus通讯接口,完成具有UART设备和CAN-bus网络之间的数据通讯。工业级的转化模块内部还包含完成带阻隔的CAN和UART转化所有必要的模仿和数字器材、光电耦合器、DC/DC变换器、CAN-bus接口等。
图2 产品架构
3 . 格局阐明
CSM100系列模块供给3种协议转化办法:通明转化、通明带标识转化、自定义协议转化。上篇文章已介绍过通明转化方法的转化办法,本文将以CSM100系列的模块简述模块的通明带标识转化格局。
该转化方法串行帧中的“帧ID”主动转化成CAN报文中的帧ID。只要在装备中告知模块该“帧ID”的地址编号在串行帧的开始方位和长度,模块在转化时提取出这个“帧ID”填充在CAN报文的帧ID域里,作为该串行帧转发时的CAN报文的帧ID。在CAN报文转化成串行帧的时分也把CAN报文帧ID转化在串行帧的相应方位。
图3 转化办法
比照“通明转化”方法和“通明带标识”方法不难发现它们之间的差异:CAN
ID信息来自串口流数据中仍是来自模块自身的装备信息中。因为“通明转化”方法下的CAN
ID来自模块装备信息,装备信息由上位机软件供给,因而关于运用此方法的节点来说发送的帧ID是固定的。而“通明带标识”方法下不同,它能够一个节点发送多个帧ID
的CAN帧。
4 . 转化办法
串行帧的最大缓冲区长度为255个字节,且处于该方法时串行接纳设置有超时时刻,即在必定时刻内收不到串口数据则默许打包为一帧发送。因而,在通明带标识转化方法下,有必要确保模块获得完好的串行数据帧,否则会形成分包过错。
图4 分包办法
通明带标识转化方法下,串行帧转为CAN报文时的办法如图5。需求留意的是,串行帧中所带有的CAN报文“帧ID”在串行帧中的开始地址和长度可由装备设定。开始地址的规模是0~7,长度规模分别是1~2(规范帧)或1~4(扩展帧)。如果在装备中指定帧类型为规范帧,帧ID信息开始地址为3长度为1,则帧ID的有用位只要8位。地址3中的CAN
ID1作为规范帧ID的高8位,其他位悉数补0。
图5 串行帧到CAN帧
通明带标识转化方法下,
CAN报文转为串行帧时的办法如图6。若相同装备CAN帧信息为规范帧,帧ID信息为开始3长度1,则转化时将丢掉ID0的数据。此刻CAN帧
中的数据能正常被接纳,但必定缺失帧ID信息(ID0自身不全为0时)。为了正常转化规范帧的帧ID信息,下图的转化情形有必要将帧ID信息中的帧长度设置为2。
图6 CAN帧到串行帧
4 . 转化示例
假定CAN报文“帧ID”在串行帧中的开始地址是2,长度是3(扩展帧情况下),串行帧发送的数据分别为0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,则转化成果如图7。
图7 示例1
若装备开始地址是2,长度是3(扩展帧情况下),CAN报文的帧ID为0x00123456,数据为0x55,0x55,0x55,0x55,0x55,0x55则转化成果如图8。
图8 示例2
4 .总结
以上为串口转CAN“通明带标识”方法下的的转化办法,该方法特点是能够灵敏设定一个节点发送的CAN帧ID信息。笔者将介绍通明转化、通明带标识转化、自定义协议转化以及moudbus转化的内容,欢迎重视往期及后期文章。