RS485-Dual-CAN-I

Ⅰ 产品原理图
树莓派隔离式RS485 CAN扩展板双通道CAN RS485
本产品包含扩展电路两个CAN和一个RS485接口,并支持用户自定义波特率通信;板载数字隔离芯片和集成隔离电源可提供稳定的隔离信号和电压,隔离端子不需要额外的电源。TVS保护,可靠性高,抗干扰性强,功耗低。该产品还提供了直流电源输入接口电路,可同时为模块和树莓派供电。我们提供树莓派演示代码。
Ⅱ 特征
- 采用CAN控制器MCP2515和CAN收发器SN65HVD230DR双芯片组合方案
- 板载双芯片方案,支持2通道CAN接口通信,树莓派上CAN收发器测试只需一个模块即可使用
- 板载数字隔离芯片,使信号隔离通信更安全、更稳定、抗干扰更强
- 板载SM24CANB(瞬态电压抑制管),防静电和瞬态峰值电压
- 载滑动开关可切换模块3.3V/5V的信号工作电平
- 每个接口均配有120Ω端子电阻,可通过滑动开关进行设置和使能
- 板载电源转换电路支持7-28V宽范围直流电压供电,可同时为树莓派主板供电
- 板载排针和端子两种接线方式,接线更方便独立引出SPI控制接口,方便连接STM32/Arduino等主控板
Ⅲ 产品参数
|
大小 |
65mm(长)*56.5mm(高) |
|
电源电压 |
5V |
|
逻辑电压 |
3.3V/5V |
|
CAN控制芯片 |
MCP2515 |
|
CAN收发 |
SN65HVD230DR |
|
RS485 收发 |
SP3485EN |
Ⅳ 用法
4.1 硬件接口配置说明
树莓派逻辑系统的电平为3.3V。使用RS485-Dual-CAN-I时,用户需要将电路板右下角的逻辑电压滑动开关拉至3.3V。树莓派主板上的示例程序使用了接线Pi号的引脚定义,树莓派主板的接线定义如下表所示:
|
功能引脚 |
树莓派接口 (BCM) |
树莓派接口 (WPI) |
描述 |
|
5V |
5V |
5V |
5V 电源正极 |
|
GND |
GND |
GND |
电源接地 |
|
MISO |
9(MISO) |
13(MISO) |
SPI_0数据输出 |
|
MOSI |
10(MOSI) |
12(MOSI) |
SPI_0数据输入 |
|
SCLK |
11(SCLK) |
14(SCLK) |
SPI_0时钟输入 |
|
MISO-1 |
19 |
24 |
SPI_1数据输出 |
|
MOSI-1 |
20 |
28 |
SPI_1数据输入 |
|
SCLK-1 |
21 |
29 |
SPI_1时钟输入 |
|
CE0 |
8 |
10(P10) |
CAN_0芯片选择 |
|
7 |
11(P11) |
||
|
INT0 |
25 |
6(P6) |
CAN_0中断输出 |
|
13 |
23(P23) |
||
|
CE1 |
17 |
0(P0) |
CAN_1芯片选择 |
|
18 |
1(P1) |
||
|
INT1 |
22 |
3(P3) |
CAN_1中断输出 |
|
24 |
5(P5) |
表 4-1 RS485-Dual-CAN-I 和 Raspberry Pi 引脚定义
模块资源配置文件如下图所示:

① 引出 2.54mm 排针控制接口
② 外部直流电源输入端子
③电源芯片TPS54331DR
④滑动开关:CAN0 120欧姆电阻选择
⑤ CAN0信号端子
⑥滑动开关:CAN1 120欧姆电阻选择
⑦ CAN1信号端子
⑧ 滑动开关:RS485 120欧姆电阻选择
⑨ RS485信号接线端子
⑩ DC5V隔离电源模块
⑪电源指示灯
⑫滑动开关:信号电平选择
⑬ 滑动开关:UART信号引脚切换
⑭ SP3485E芯片
⑮ 8位DIP开关:CAN芯片选择和中断引脚选择两组
⑯ 信号隔离芯片π163M31
⑰CAN收发器芯片SN65HVD230DR
⑱树莓派40针female插座
⑲CAN总线控制器芯片MCP2515
4.2 演示代码用法
4.2.1Wiringpi 库安装
|
sudo apt-get install wiringpi wget https://project-downloads.drogon.net/wiringpi-latest.deb # Version 4B upgrade of Raspberry Pi sudo dpkg -i wiringpi-latest.deb gpio -v # |
如果出现 2.52 版本,则安装成功
对于 Bullseye 分支系统,请使用以下命令:
|
git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v |
运行“gpio - v”将产生 2.70 版。如果没有出现,则表示安装错误
如果运行 python 版本的示例程序时出现错误提示“ImportError: No module named 'wiringpi'”,请运行以下命令
对于 Python 2. x version
|
pip install wiringpi |
对于Python 3. x version
|
pip3 install wiringpi |
注意:如果安装失败,可以尝试以下编译安装:
|
git clone --recursive https://github.com/WiringPi/WringPi-Python.git |
注意:-- 递归选项可以自动拉取子模块,否则需要手动下载。
进入刚刚下载的WiringPi Python文件夹,输入以下命令,编译安装:
对于 Python 2. x version
|
sudo python setup.py install |
对于 Python 3. x version
|
sudo python3 setup.py install |
如果出现以下错误发生:

这时,输入命令“sudo apt install swig”来安装swig。之后,编译并安装“sudo python3 setup.py install”。如果出现类似于以下内容的消息,则安装成功。

4.2.2 配置串口
|
sudo raspi-config |
串行配置启用
|
Interface Options -< Serial Port -< Yes |
运行更新
|
sudo apt-get update |
停止并禁用串口的控制台功能
|
sudo systemctl stop serial-getty@ttyAMA0.service sudo systemctl disable serial-getty@ttyAMA0.service |
系统默认将 serial0 作为控制台登录模式下的串口。这时,我们需要取消控制台登录功能,以避免冲突。使用命令“sudo nano /boot/cmdline.txt”打开.txt文件,删除或注释打开的文件中的以下句子
|
console=serial0,115200 |
编程命令是
|
sudo nano /boot/cmdline.txt |
最后将内容修改为
|
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait |
4.2.3开放式 SPI 接口
|
sudo raspi-config |
启用 SPI 接口:
|
Interfacing Interfacing Options -> SPI -> Yes |
要查看已启用的 SPI 设备:
|
Is /dev/spi* # |
将打印以下内容:“/dev/spidev0.0”和“/dev/spidev0.1”
4.2.4安装 Python 库
演示代码使用 python 3 环境。要运行 python 演示代码,您需要安装 spiderv 库。输入以下命令以安装:
|
sudo apt-get install python3-pip sudo pip3 install spidev |
4.2.5 系统配置说明
/boot/config.txt 中 mcp2515 的系统配置语句格式为:
dtoverlay=mcp2515,spiA-B,oscillator=16000000,interrupt=INT0
dtoverlay=mcp2515,spiC-D,oscillator=16000000,interrupt=INT1
其中,A、B、C、D、INT0、INT1的实际值由8位DIP开关的状态决定
如下表4-2所示:
|
端口 |
CAN0 |
CAN1 |
配置值 |
|||||||||||
|
|
CE0 |
INT0 |
CE1 |
INT1 |
CAN0 |
CAN1 |
||||||||
|
引脚 |
P10 |
P11 |
P6 |
P23 |
P0 |
P1 |
P3 |
P5 |
A |
B |
INT0 |
C |
D |
INT1 |
|
状态 |
ON |
OFF |
ON |
OFF |
OFF |
ON |
ON |
OFF |
0 |
0 |
25 |
1 |
0 |
22 |
|
|
ON |
OFF |
ON |
OFF |
OFF |
ON |
OFF |
ON |
0 |
0 |
25 |
1 |
0 |
24 |
|
|
ON |
OFF |
ON |
OFF |
ON |
OFF |
ON |
OFF |
0 |
0 |
25 |
1 |
1 |
22 |
|
|
ON |
OFF |
ON |
OFF |
ON |
OFF |
OFF |
ON |
0 |
0 |
25 |
1 |
1 |
24 |
|
|
ON |
OFF |
OFF |
ON |
OFF |
ON |
ON |
OFF |
0 |
0 |
13 |
1 |
0 |
22 |
|
|
ON |
OFF |
OFF |
ON |
OFF |
ON |
OFF |
ON |
0 |
0 |
13 |
1 |
0 |
24 |
|
|
ON |
OFF |
OFF |
ON |
ON |
OFF |
ON |
OFF |
0 |
0 |
13 |
1 |
1 |
22 |
|
|
ON |
OFF |
OFF |
ON |
ON |
OFF |
OFF |
ON |
0 |
0 |
13 |
1 |
1 |
24 |
|
|
OFF |
ON |
ON |
OFF |
ON |
OFF |
ON |
OFF |
0 |
1 |
25 |
1 |
1 |
22 |
|
|
OFF |
ON |
ON |
OFF |
ON |
OFF |
OFF |
ON |
0 |
1 |
25 |
1 |
1 |
24 |
|
|
OFF |
ON |
ON |
OFF |
OFF |
ON |
ON |
OFF |
0 |
1 |
25 |
1 |
0 |
22 |
|
|
OFF |
ON |
ON |
OFF |
OFF |
ON |
OFF |
ON |
0 |
1 |
25 |
1 |
0 |
24 |
|
|
OFF |
ON |
OFF |
ON |
OFF |
ON |
ON |
OFF |
0 |
1 |
13 |
1 |
0 |
22 |
|
|
OFF |
ON |
OFF |
ON |
OFF |
ON |
OFF |
ON |
0 |
1 |
13 |
1 |
0 |
24 |
|
|
OFF |
ON |
OFF |
ON |
ON |
OFF |
ON |
OFF |
0 |
1 |
13 |
1 |
1 |
22 |
|
|
OFF |
ON |
OFF |
ON |
ON |
OFF |
OFF |
ON |
0 |
1 |
13 |
1 |
1 |
24 |
表4-2
从表2-2可以看出,INT0和INT1的值是其GPIO对应的BCM的值。当CAN功能正常使用时,每个功能引脚对应的两个GPIO的状态相反。这是为了确保只有一个功能引脚同时连接到树莓派的GPIO,例如ample,当DIP开关的状态如下表4-3所示时:
|
GPIO |
P10 |
P11 |
P6 |
P23 |
P0 |
P1 |
P3 |
P5 |
|
State |
OFF |
ON |
ON |
OFF |
ON |
OFF |
OFF |
ON |
表 4-3
与表4-2对比后,此时在/boot/config.txt中配置的语句
dtoverlay=mcp2515,spi0-1,oscillator=16000000,interrupt=25
dtoverlay=mcp2515,spi1-1,oscillator=16000000,interrupt=24
RS485总线使用两组UART供用户切换,分别是“迷你串口”/dev/ttyS0(对应TXD0和RXD0)和硬件串口/dev/ttyAMA1(对应TXD2和RXD2),其中/dev/ttyS0性能较低,功能也很简单,波特率没有专用的时钟源而是由CPU核心时钟提供, 所以“迷你串口”的弱点在于:波特率受核心时钟的影响,如果核心智能调节功耗降低主频,就会牵连到迷你串口对应的波特率。/dev/ttyAMA1 具有单独的波特率时钟源,具有高性能和可靠性。当用户启用 /dev/ttyAMA1 时,他们需要在 /boot/config.txt 文件中的一行中添加“dtoverlay=uart2”语句。
如果用户需要串口 0(TXD0 和 RXD0)才能具有与串口 2 相同的性能,则需要在 /boot/config.txt 文件中的一行中添加“dtoverlay=pi3-disable-bt”语句。重新启动后,“/dev/ttyS0”被交换为“/dev/ttyAMA0”,串口0(TXD0和RXD0)设备符号变为/dev/ttyAMA0,与串口2具有相同的高性能。
经过测试,当串口0(TXD0和RXD0)使用ttyS0时,波特率范围只能达到1200~921600bps,而使用ttyAMA0时,波特率范围可以达到200~921600bps。
4.2.6 演示代码
1) 模块出厂时,拨码开关的状态设置如下:
|
GPIO |
P10 |
P11 |
P6 |
P23 |
P0 |
P1 |
P3 |
P5 |
|
State |
OFF |
ON |
ON |
OFF |
ON |
OFF |
OFF |
ON |
运行命令“sudo nano /boot/config.txt”打开.txt文件,并添加以下内容(如需切换到其他状态,请参考《4.2.5章 系统配置说明》中的表2-2):
|
dtoverlay=spi1-3cs dtoverlay=mcp2515,spi0-1,oscillator=16000000,interrupt=25 dtoverlay=mcp2515,spi1-1,oscillator=16000000,interrupt=24 dtoverlay=uart2 |
2) 运行演示代码以重新启动树莓派
|
sudo reboot |
3) 运行演示代码
|
dmesg | grep spi |
如果出现以下信息,则表示初始化成功:

如果没有出现上述信息,则需要检查模块的DIP开关设置是否与/boot/config.txt文件中添加的内容相符。
4)输入以下命令启动 CAN(控制器局域网)s
|
sudo ip link set can0 up type can bitrate 1000000 sudo ip link set can1 up type can bitrate 1000000 |
5) 输入ifconfig命令查看:
can0:flags=193<UP,RUNNING,NOARP> mtu 16
...........................
can1:flags=193<UP,RUNNING,NOARP> mtu 16
6)连接H---->H;板上两个 CAN 接口的 L---->L
7)安装 can-utils 工具:
|
sudo apt-get install can-utils |
8) CAN测试:
打开两个终端窗口,在一个端口输入以下命令以接收来自 can0 的数据:
|
candump can0 |
另一个终端输入以下命令发送数据:
|
cansend can1 123#00.11.22.33.44.55.66 |
如果板上两个CAN连接的H和L信号没有单独连接,则candump命令的终端无法接收数据,在相应的终端中修改命令:
|
candump can1 cansend can0 123#11.22.33.44.55.66 |
检查数据是否正确发送和接收。
9)将USB到RS485模块连接到计算机,打开计算机端的串口调试助手,选择USB到RS485模块的设备编号作为串口号,并连接板上的RS485端子(见2-1资源介绍图中的⑨)与USB到RS485模块的接线,接线方式为:
A-->A
B-->B
GND-->GND
在树莓派上用Thonny Python IDE打开/rs485_can/485/路径中的 send.py 和 receive.py 文件,根据不同的波特率和串行设备修改以下语句的内容: ser = serial.Serial(“/dev/ttyAMA0”,921600,timeout=0.2)
上述串口函数中的第一个参数是所选串口设备的标识。当串口信号选择开关(见 2-1 资源配置文件图中的13)向左转动时(TXD2,RXD2),参数为“/dev /ttyAMA1”,当串口信号选择开关向右转动时(TXD0,RXD0),则参数为“/dev/ttyS0”或“/dev/ttyAMA0”,对应的设置可以参考上面 4.2.4 系统配置描述 chap 的内容
Ⅴ 附录
5.1、产品的注意事项和维护
5.1.1、预防措施
- 在通电状态下,不要插拔模块。
- 遵循产品上提供的所有警告和指南。
- 保持产品干燥。如不小心溅水或浸入液体,立即断开电源并彻底干燥产品。
- 确保操作环境有良好的通风和散热,以避免因高温导致组件损坏。
- 不要在多尘或肮脏的环境中使用或存放产品。
- 避免在温度频繁变化的环境中使用产品,以防止组件发生冷凝损坏。
- 轻拿轻放产品,避免跌落、撞击或剧烈震动,以免损坏电路和组件。
- 不要使用有机溶剂或腐蚀性液体清洁产品。
- 请勿自行尝试维修或拆解产品。如出现任何故障,请联系我们公司进行维修。未经授权的维修可能会损坏产品,造成的损坏将不在保修范围内。
5.1.2、保养
- 地址:广西壮族自治区桂林市七星区漓江花园19栋
- 联系人:售后维修部
技术支持
技术支持时间(工作日):香港时间:上午9:30 - 上午11:30,
下午1:30 - 下午5:30电话:0773-7799838 传真:gxshengui@163.com
感谢您选择深桂科技的产品。如果您有创意产品或想法,请随时给我们发送电子邮件,也许我们可以进一步合作。我们的电子邮件地址是:gxshengui@163.com
- 2025-12-02
- 2025-12-02
- 2025-12-02
- 2025-12-01
