历史上的今天
今天是:2024年09月25日(星期三)
2019年09月25日 | 技术文章—MCU如何扩展CAN或者CAN FD接口?
2019-09-25 来源:EEWORLD
摘要:在嵌入式产品开发过程中,可能会面临CAN路数不够的问题。如何选择合适的转换模块解决这个问题呢?以下将为您讲解几款模块的选型方法。
应用场景
CAN总线是优秀的现场总线之一,已由当初的汽车电子扩散到各行各业。从工业自动化到新能源,从轨道交通再到航空航天,CAN总线技术在中国不断的应用和沉淀。

图1 CAN总线数据帧结构
当应用CAN总线时,我们可能会面临以下问题:主控制器没有支持CAN控制器或者CAN路数不够。具体问题表现:早期产品通信使用的是RS485或RS232通信,现阶段需要将产品升级到能支持到CAN通信;受制于成本限制,主控MCU必须选择低端处理器,本身不带CAN控制器;开发的产品中需要的CAN路数远远大于2路,能支持两路以上CAN的MCU型号有限或成本过高。

图2 LPC系列间CAN路数对比

图3 多路CAN应用场景
当MCU内部没有支持CAN控制器或者所需的CAN路数不能满足要求时,可以选择使用其他通信接口拓展CAN接口出来。常见的转换方法有串口转CAN、以太网转CAN、WIFI转CAN以及光纤转CAN,本文主要为大家介绍串口转CAN的思路和方法。

图4 CAN转换器产品
如何选型
串口扩CAN的模块大体分为两种形式,一种是单纯的协议控制器芯片实现,如MCP2515和MCP2517;另一种是通过高性能的MCU实现。相比于单纯的协议控制器芯片,MCU方案的协议转换模块拥有以下优势:配置简便,配合上位机或串口指令集,几个简单的串口数据发送即可完成配置;缓存较大,在高速或数据吞吐量大时杜绝丢帧现象发生;性能优异,将复杂的协议转换及帧缓存完全集成于用户MCU之外,可减少用户MCU负担。
ZLG立功科技·致远电子推出的串口转CAN模块主要有CANFDSM、CSM300两个系列,选型工作如何入手,我们从他们之间的区别入手。CANFDSM是最新一代的串口转CANFD模块,在能匹配当前热门的CANFD基础上,还能完全兼容传统的CAN2.0协议。因此,如果您的产品选定的是CANFD协议,则只能使用新一代的CANFDSM模块。

图5 链路层协议区别
如果产品中使用的是CAN2.0A或者CAN2.0B协议,我们继续对比选择。CANFDSM不带CAN或者CANFD收发器,用户需自行增加隔离或者不隔离的收发器模块。而CSM300内部集成有CAN隔离收发器、CAN控制器,因此可以直接连接MCU与CAN总线。

图6 CSM300与CANFDSM内部器件情况
以上讨论的情况是针对板载需求的应用,对于需要直接应用在设备中的场合又该如何选择呢?CANCOM或者CANFDCOM绝对是您的首选。CANFDCOM接口卡的1~2通道CAN FD接口均自带2500VDC电气隔离,静电等级为接触放电±8KV,浪涌±1KV,可有效避免因为不同节点地电位不同导致的回流损坏,特别适合于电动汽车与列车的测试。

图7 串口转CAN设备
应用电路
以CANFDSM-100为例 ,该类模块通用应用方式如下下。协议转换模块直接与MCU通过UART的TX、RX交叉连接通信,PIN3、PIN4通过CAN隔离收发器CTM3FD连接到外部CAN总线上。需要注意的是,模块在使用前需要进行参数配置,使用PIN7使模块进入配置状态后再配合MCU的AT指令即可完整参数配置。此外,配合上位机软件亦可快速完成参数配置。

图8 应用电路

图9 CANFDSM-100管脚定义
协议转换格式
串口转CAN模块提供透明转换、透明带标识、自定义协议等转换形式.
上一篇:CAN总线抗干扰的六种解决方案
史海拾趣
|
大家学习labview都在哪些网站和论坛上混啊? 本人常去的有两个,www.ni.com这是NI的网站,学习labview怎么能不上呢! 其次是www.gsdzone.net 这是我常去的Labview论坛,里面有资深NI工程师潜伏哦!… 查看全部问答> |
|
最近在看汇编,但是很是困惑: 1.我们一般在高级语言里碰到的int\\float,与我们在讲解二进制加法时用的8位有什么关系? 2.若汇编老师在讲解完计算机内的数字存储后,发问7+251=?那到底怎么做呢? 251=11111011已经八位了啊!!? ...… 查看全部问答> |
|
wince writefile 总是发送不了数据,但不报错! 问题如下: 我现在接手别人的工作,驱动别人是用evc4.2写dll,驱动经测试可用。 我现在用C#开发应用程序。 现在的问题是,驱动writefile第二个参数他传的是 ...… 查看全部问答> |
|
在C51中,char xdata doc[19]=\"AT+CMGF=0\"; 我想请教一下各位大虾,在ATmega128中,这个语句应该怎样写呢? … 查看全部问答> |
|
我在mobile5下使用ras函数RasDial拨号连接没有问题 同样的程序以及拨号配置在mobile 6下却无法拨号成功 不知道5跟6在这方面有什么不一样吗 有经验的大虾帮忙看看,谢谢!!!… 查看全部问答> |
|
今天,用protues搭了一个电路,写了一个相应的程序,调试运行了一下,竟然无效, 于是乎,我就把原本庞大的电路删减一部分剩下基本的显示数码管,可是竟然还是不 对,那么,我首先怀疑是不是我的程序有问题 ...… 查看全部问答> |




