跳转到内容

5108 CM5IO RS485-CANFD

来自Mcuzone Wiki

Change the language to English

关键词

树莓派5、树莓派4B、CM5核心板、CM4核心板、RPiOS、ISO RS485、ISO CANFD、40p-GPIO

一、简介

CM5IO_RS485-CANFD是一款基于40Pin接口进行RS485扩展和CANFD扩展的模块。具备两路带隔离的RS485,两路带隔离的CANFD。

二、硬件资源

1,采用树莓派的40Pin GPIO进行扩展;适用于树莓派3B/4B/5/CM4/CM5等平台;

2,两路带隔离的RS485,3.81mm-3Pin接口;

3,两路带隔离的CANFD,3.81mm-3Pin接口;

4,RS485和CANFD都带有120欧姆终端匹配电阻,如果传输距离太长或者电缆终端没有相应匹配电阻,建议短接跳线;

5,尺寸:56*65mm,板材通过UL和ROHS认证,防火等级94V-0。

6,模块分三个版本,分别为RS485版本,CANFD版本和RS485-CANFD版本。

5108_CM5IO_RS485-CANFD_26.jpg

RS485隔离模组特点:

本模组采用自动流控型高速RS485隔离模块,是一款采用IC集成化技术,实现了电源隔离、信号隔离、RS-485通信和总线保护于一体的RS-485协议收发模组。模组自带定压隔离电源,可实现2500VDC电气隔离耐压保护;可作为从机接入RS485总线,也可作为主机,接收处理各从机信息。

  • 最多可以连接64/128个节点;
  • 高达500Kbps传输速率;
  • 电磁辐射EMI极低;
  • 工作温度范围:-40℃ - +85℃;
  • 集成电源隔离、信号隔离和总线ESD保护功能。

CANFD隔离模组特点:

本模组自带隔离电源,可实现2500VDC的两端电气隔离,继承了隔离CAN收发器的主要特性,提升了其数据传输性能,符合ISO 11898-2物理层标准。

  • 波特率高达5Mbps;
  • 同一网络至少可支持连接110个节点;
  • 工作温度范围:-40℃ - +105℃;
  • 总线超时保护。

5108_CM5IO_RS485-CANFD_33.jpg

5108_CM5IO_RS485-CANFD_27.jpg

5108_CM5IO_RS485-CANFD_28.jpg

三、模块测试

树莓派各种版本使用本模块,对应的串口号有所不同,对比如下:

端口序号 1 2 3 4
端口类型 CANFD CANFD RS485 RS485
CM5、树莓派5 CANFD0 CANFD1 UART2 UART4
CM4、树莓派4B CANFD0 CANFD1 UART3 UART5

软件平台:树莓派OS的版本为2025-05-13-raspios-bookworm-arm64.img.xz,树莓派OS下载地址:

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

硬件平台:CM5IO_RS485-CANFD模块搭配树莓派5,如下图所示:

四个接口的示意图如下(RS485-CANFD版本,另外两个版本只包含相应接口):

3.1 测试RS485

打开终端,运行下列命令:

sudo nano /boot/firmware/config.txt

在文件末尾加入下列语句:

dtoverlay=uart2

dtoverlay=uart4

5108_CM5IO_RS485-CANFD_01.jpg

保存后重启系统。

安装串口软件CuteCom,安装命令为:

sudo apt install cutecom

安装完毕后,点击桌面左上角的树莓派图标,在“System Tools”有CuteCom的快捷方式:

如果在使用过程中有权限不足的问题,请打开树莓派OS终端,输入:

sudo cutecom

来启动CuteCom。

测试串口ttyAMA2与PC之间的数据收发:

在PC端插上一个USB转485的转换器,与模块上的RS485接口(ttyAMA2,对应UART2)相连,各自打开串口软件进行收发,结果如下:

经过实测,波特率最高可达到2.01Mbps(以传输数据不发生乱码、缺失为准)。

测试串口ttyAMA4与PC之间的数据收发:

在PC端插上一个USB转485的转换器,与模块上的RS485接口(ttyAMA4,对应UART4)相连,各自打开串口软件进行收发,结果如下:

经过实测,波特率最高可达到2.01Mbps(以传输数据不发生乱码、缺失为准)。

测试ttyAMA2与ttyAMA4之间的数据收发:

两个RS485接口相连,各自打开串口软件进行收发,结果如下:

经过实测,波特率最高可达到1.54Mbps(以传输数据不发生乱码、缺失为准)。

3.2 测试CANFD

CAN是SPI接口,mcp251xfd为CAN控制器,spi0-0和spi0-1为同一路SPI接口不同片选,interrupt为MP2518FD的中断号,都要和硬件相对应。

注意:必须在收发两端的至少一端开启120欧姆终端匹配电阻。如果需要在模块一端开启,请将相应的端口的120欧姆终端匹配电阻的插针,用短路帽短接。

首先更新系统,在树莓派终端中执行:

sudo apt update

sudo apt upgrade

需要在config.txt中加入CAN接口的配置,运行下列命令:

sudo nano /boot/firmware/config.txt

在文件末尾加入下列语句:

dtoverlay=spi1-3cs

dtoverlay=mcp251xfd,spi0-0,interrupt=25

dtoverlay=mcp251xfd,spi0-1,interrupt=24

5108_CM5IO_RS485-CANFD_07.jpg

然后在图形界面中,依次选择如下图项目后,确保SPI已开启:

最后重启系统。在终端中输入dmesg | grep spi,查看 SPI 的信息,红框中的信息显示can0和can1识别成功:

安装CAN软件:

sudo apt-get install can-utils

2006_CM4_UART_CAN_36.jpg

输入以下命令开启CANFD(我们将波特率设置为bitrate:500000,dbitrate:2000000):

sudo ip link set can0 up type can bitrate 500000 dbitrate 2000000 restart-ms 1000 berr-reporting on fd on

sudo ip link set can1 up type can bitrate 500000 dbitrate 2000000 restart-ms 1000 berr-reporting on fd on

sudo ifconfig can0 txqueuelen 65536

sudo ifconfig can1 txqueuelen 65536

注:bitrate设置为1000000(1M),dbitrate设置为5000000(5M)也可以正常使用。

设置完成后输入ifconfig,查看CAN连接,可看到can0和can1:

在模块与PC之间连接好USB CANFD收发器,使用cangaroo软件在PC端进行接收,cangaroo下载地址:

http://www.mcuzone.com/wiki/5108_CM5IO_RS485-CANFD/cangaroo-win32-ccdcb64.zip

cangaroo设置如下(Measurement - Setup...):

其中COM85为USB CANFD收发器在PC上的监听端口(依系统配置不同而不同)。Bitrate和CanFD Bitrate应与上面开启CANFD的命令中的比特率设置相对应。

测试CAN0发送数据:

USB CANFD收发器接在模块的CAN0接口上,让cangaroo在PC的COM85上开始监听(Measurement - Start Measurement),在树莓派终端中运行:

cansend can0 123#0123456789ABCDEF

(注意:“#”之前是CAN设备的ID;“#”之后是发送内容,为16进制数字,可以自定义。)

可以运行多次:

cangaroo输出如下,说明收发正常:

测试CAN0接收数据:

在树莓派终端中运行:

candump can0 -a

注意:-a参数表示显示接收结果时同时显示相应的16进制数字的ASCII码,如果不加此参数,则不显示ASCII码。

在cangaroo主界面的Transmit View里面,设置好Address和DLC,以及后面需要的发送数据,下图显示的是发送“MCUZONE!”的16进制ASCII码数据:

然后按下Send键(或Send Repeat键重复发送),即可在树莓派终端中看到从cangaroo发来的数据:

测试CAN1发送数据:

USB CANFD收发器接在模块的CAN1接口上,让cangaroo在PC的COM85上开始监听(Measurement - Start Measurement),在树莓派终端中运行:

cansend can1 123#0123456789ABCDEF

(注意:“#”之前是CAN设备的ID;“#”之后是发送内容,为16进制数字,可以自定义。)

可以运行多次:

cangaroo输出如下,说明收发正常:

测试CAN1接收数据:

在树莓派终端中运行:

candump can0 -a

注意:-a参数表示显示接收结果时同时显示相应的16进制数字的ASCII码,如果不加此参数,则不显示ASCII码。

在cangaroo主界面的Transmit View里面,设置好Address和DLC,以及后面需要的发送数据,下图显示的是发送“MCUZONE!”的16进制ASCII码数据:

然后按下Send键(或Send Repeat键重复发送),即可在树莓派终端中看到从cangaroo发来的数据:

联系我们

4f7e81daf8791971.jpg 79c020da7ad0af9b.jpg 2851e01a0549e6f7.gif 0003_bb.jpg 0005_qq.jpg QQ:8204136

邮件:mcuzone@vip.qq.com

电话:13957118045

如本页面有任何疏漏、错误或者侵权,请通过上述途径联系我们,谢谢!

Copyright 2004-2025 野芯科技