datasheet

技术文章—详解串口转换CAN模块“透明带标识转换”

2019-01-09来源: 互联网关键字:CAN模块

UART转CAN的应用已广泛应用于各行各业,因此对于数据帧转换的形式要求也逐渐增多,目前主流的转换形式包括透明转换、透明带标识转换以及自定义转换。具体是如何实现?本文将为大家介绍其中的透明带标识转换。

 

1 . 适用场景

 

串口转CAN模块在什么时候需要用到呢?一是老产品面临升级,需要用到CAN总线通信,但硬件平台中的MCU没有集成CAN总线的控制器。二是选用的MCU已经包含CAN总线接口,但数量上不能满足项目需求。若出现类似以上两种情况且MCU有闲置串口,则可以选用串口转CAN模块解决。

 

https://inews.gtimg.com/newsapp_bt/0/7048141613/1000

 

图1  应用行业

 

2 . 使用方法

 

该类模块可以很方便地嵌入到具有UART接口的设备中,在不需改变原有硬件结构的前提下使设备获得CAN-bus通讯接口,实现具有UART设备和CAN-bus网络之间的数据通讯。工业级的转换模块内部还包括实现带隔离的CAN和UART转换所必须的模拟和数字器件、光电耦合器、DC/DC变换器、CAN-bus接口等。

 

新建 Microsoft Visio 绘图

 

图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个字节,且处于该模式时串行接收设置有超时时间,即在一定时间内收不到串口数据则默认打包为一帧发送。因此,在透明带标识转换模式下,必须保证模块取得完整的串行数据帧,否则会造成分包错误。

 

绘图72

 

图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。

 

绘图135

 

图7  示例1

 

若配置起始地址是2,长度是3(扩展帧情况下),CAN报文的帧ID为0x00123456,数据为0x55,0x55,0x55,0x55,0x55,0x55则转换结果如图8。

 

绘图143

 

图8  示例2

 

4 .总结

 

以上为串口转CAN“透明带标识”模式下的的转换方式,该模式特点是可以灵活设定一个节点发送的CAN帧ID信息。笔者将介绍透明转换、透明带标识转换、自定义协议转换以及moudbus转换的内容,欢迎关注往期及后期文章。

 


关键字:CAN模块

编辑:muyan 引用地址:http://www.eeworld.com.cn/qcdz/2019/ic-news010924715.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:盘点安森美在车载网络中的布局
下一篇:东芝扩大其汽车以太网桥接IC产品线,推出TC9562系列

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

调试STM32F107的CAN模块

花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessage.DLC都是对的,包括数据。不知道为什么,网上查了一下,有位仁兄和我遇到的问题一样,如果有人看到此贴,还望不吝赐教。所以我最后都是只用标准格式。2、CAN2的CAN_FilterNumber必须设置为14,CAN_FilterFIFOAssignment=CAN_FIFO0;也不知为什么,呵呵,还要好好看书啊。3、对于中断,代码如下:void
发表于 2017-01-19

XC164单片机TwinCAN模块调试心得

} //  End of function CAN_viSRN0 // USER CODE BEGIN (CAN_General,10)// 发送数据后重新对CAN模块初始化,主要是仲裁寄存器和屏蔽寄存器void CAN_vSetARMR(void){      ///  General Configuration of the Node A:             ///  - set INIT and CCE 
发表于 2017-01-10

usb转can模块“一颗强劲的芯”

电源接口,可以在工业现场给离线CAN中继和脱机模式供电;同时我们也对硬件品质再一次做了升级。
发表于 2016-09-05

用PIC18F458的CAN模块实现CAN总线通讯

=000,使CAN 模块进入正常工作方式;   判断CANSTAT 寄存器中的操作方式状态位是否为000,即OPMODE 是否为000,如OPMODE=000 则进入下一步;   寄存器配置和邮箱初始化完成后,进入正常工作方式。        初始化流程图如图2 所示。 2.2 信息的发送   PIC18F458 有3 个发送邮箱缓冲器,每一个发送缓冲器的数据长度可以设置为1 ~ 8 个字节长度, 信息发送的具体步骤如下:   ① 初始化发送邮箱;   ② 设置相应的发送请求位为1 ,即TXBxCON bits.TXREQ=1(x=1,2,3);   ③ 若CAN 总线允许发送, 则启动最高
发表于 2016-04-06
用PIC18F458的CAN模块实现CAN总线通讯

(八)STM32的CAN模块实验

的2个接收FIFO *****; 14个位宽可变的过滤器组-由整个CAN共享 *****; 标识符列表 *****;FIFO溢出处理方式可配置 *****; 记录接收SOF时刻的时间戳   可支持时间触发通信模式 *****; 禁止自动重传模式 *****; 16位自由运行定时器 *****; 定时器分辨率可配置 *****; 可在最后2个数据字节发送时间戳   管理 *****; 中断可屏蔽 *****; 邮箱占用单独1块地址空间,便于提高软件效率     看完这些特点后,疑问一个一个地出现, 1.        
发表于 2016-02-25

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved