双通道 CAN HAT(Dual-CH CAN HAT)

Ⅰ、产品介绍
双通道 CAN HAT 集成了一个 CAN 控制器和两个用于通信的 CAN 接口。它具有MCP2515和ATA6561 CAN 收发器双芯片组合。
Dual-CH CAN HAT 是专为 Raspberry Pi 开发的专业扩展板,提供具有多重保护的双通道 CAN 通信。此外,它还为 STM32、Arduino 和其他主控制板提供 SPI 杜邦线插针排。
Ⅱ、产品特点
- 采用双芯片解决方案,配备MCP2515 CAN控制器和ATA6561-GAQW-N CAN收发器。
- 板载双通道芯片解决方案,支持通过两个CAN接口进行通信。
- 在 Raspberry Pi 上进行 CAN 接收和传输测试只需要一个模块。
- 集成了SM24CANB(瞬态电压抑制二极管),提供静电放电和瞬态电压尖峰保护。
- 配备电平转换电路,允许使用滑动开关在 3.3V 和 5V 工作电平之间切换。
- 包括一个内置的 120Ω 端子电阻器,可以使用滑动开关启用或禁用该电阻器。
- 提供独立的SPI控制接口,方便与STM32/Arduino等主控板连接。
Ⅲ、产品规格
|
尺寸 |
65mm (长) × 56mm (宽) |
|
输入电压 |
5V |
|
逻辑电压 |
3.3V/5V |
|
CAN控制器芯片 |
MCP2515 |
|
CAN 收发器 |
ATA6561-GAQW-N |
Ⅳ、接口定义

①排针用于暴露SPI控制接口,方便与STM32、Arduino等主控板的连接。
②.用于选择CAN1的120Ω端子电阻的滑动开关。③.CAN1接口接线端子连接器。④.公开 CAN0 和 CAN1 接口的排针。⑤.CAN0接口接线端子连接器。⑥用于选择CAN0的120Ω端子电阻的滑动开关。 ⑦用于选择3.3V/5V逻辑电压的滑动开关。 ⑧.树莓派 40P GPIO 接口母头
Ⅴ、产品使用
5.1 硬件接口配置说明
Raspberry Pi 和 STM32 逻辑系统均在 3.3V 电平下运行。使用双CAN HAT时,用户需要将电路板上的逻辑电压控制开关S3切换到3.3V位置。
5.1.1STM32 硬件连接
| * Hardware Connection :STM32F103 -> Dual-CH CAN HAT * CAN0_H -> CAN1_H CAN0_L -> CAN1_L * 5V -> 5V PB15 -> MOSI * GND -> GND PB14 -> MISO * PB3 -> INT0 PB13 -> SCK * PB4 -> INT1 PB12 -> CE0 * PB5 -> CE1 |
5.1.2 Raspberry Pi 接口定义
将双 CAN HAT 连接到 Raspberry Pi 的引脚定义如下表 2-1 所示。
|
引脚功能 |
Raspberry Pi (BCM) |
Raspberry Pi (WPI) |
描述 |
|
5V |
5V |
5V |
+5V 电源正极 |
|
GND |
GND |
GND |
电源接地 |
|
MISO |
9(MISO) |
13(MISO) |
SPI数据输出 |
|
MOSI |
10(MOSI) |
12(MOSI) |
SPI 数据输入 |
|
SCK |
11(SCLK) |
14(SCLK) |
SPI 时钟输入 |
|
CS_0 |
8(CE0) |
10(CE0) |
CAN_0 芯片选择 |
|
INT_0 |
25 |
6 |
CAN_0 中断输出 |
|
CS_1 |
7(CE1) |
11(CE1) |
CAN_1 芯片选择 |
|
INT_1 |
23 |
4 |
CAN_1 中断输出 |
5.1.3 硬件配置
将电压滑动开关切换到3V3,将端子电阻滑动开关设置到同一位置,然后将模块插入树莓派。
5.2 环境配置
5.2.1 安装必要的库
wiringpi 库安装
|
sudo apt-get install wiringpi
Raspberry Pi
|
如果出现 2.52 版,则表示安装成功
对于 Bullseye 分支系统,请使用以下命令:
|
git clone https://github.com/WiringPi/WiringPi
|
运行“gpio -v”将显示版本 2.70。如果没有出现,则表示安装不正确
如果在运行示例程序的 Python 版本时遇到错误信息“ImportError: No module named 'wiringpi'”,请运行以下命令
对于 Python 2. x 版本
pip install wiringpi
对于Python 3. x 版本
pip3 install wiringpi
注意:如果安装失败,可以尝试以下编译安装:
git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
注意:--recursive 选项允许自动拉取子模块;否则,您需要手动下载它们。
进入下载的WiringPi-Python文件夹,输入以下命令进行编译安装:
对于 Python 2. x 版本
sudo python setup.py install
对于 Python 3. x 版本
sudo python3 setup.py install
如果发生以下错误:

此时,输入命令“sudo apt install swig”来安装swig。完成后,继续“sudo python3 setup.py install”进行编译和安装。如果您看到如下类似的信息,则表示安装成功。

Python 库安装
#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install spidev
sudo pip3 install python-can
5.2.2配置 Raspberry Pi 的 SPI
在 Raspberry Pi 上启用 SPI
输入以下命令,进入树莓派的设置界面,开启SPI接口。.
sudo raspi-config
选择"Interfacing Options" -> "SPI" -> "Yes" 以启用SPI选项
将MCP2515 CAN 驱动程序加载到内核中:
输入以下命令以编辑 Raspberry Pi 的启动配置文件。
sudo nano /boot/config.txt
将以下三行代码添加到文档末尾。
|
dtparam=spi=on dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=23 |
重新启动 Raspberry Pi 以应用更改。
sudo reboot
测试配置是否成功:
树莓派重启后,查看SPI信息。
dmesg | grep spi0
如果出现类似于下图的内容,则表示初始化成功。

5.3 测试
5.3.1 命令行测试
如果您只有一个 Raspberry Pi 和 Dual-CH CAN HAT 模块,则可以连接 CAN0 和 CAN1(连接两个 CAN 接口的 H 引脚和两个 CAN 接口的 L 引脚)。
首先,从命令行安装 CAN 测试工具 can-utils:
sudo apt-get install can-utils
然后,使用以下命令启用 CAN 接口
sudo ip link set can0 up type can bitrate 1000000
sudo ip link set can1 up type can bitrate 1000000
为了测试传输和接收,您可以打开两个终端。以下测试过程演示了如何将数据从 can1 发送到 can0:
在一个终端中,输入接收CAN0数据的命令:
candump can0
在另一个终端中,输入发送CAN1数据的命令
cansend can1 123#01.23.45.67
演示效果如下图:


5.3.2 Python 示例代码
将数据从 can1 发送到 can0
首先,打开两个终端,一个终端用于运行数据接收码,另一个终端用于运行数据传输码。先运行数据接收码,再运行数据传输码。
cd /your/own/directory/dual-can/python/can0
python3 rev-can0.py

在另一个终端中,输入:
“cd /your/own/directory/dual-can/python/can1”
python3 send-can1.py

注意:
如果您在运行 Python 程序时遇到类似以下的错误:
RTNETLINK答案:设备或资源繁忙
回溯(最近一次调用最后):
文件“xxxxx.py”,第 xx 行,在
can0 = can.interface.Bus(通道 = 'can0', bustyp = 'socketcan_ctypes')
文件“....xxxx.py“,第 xxx 行,在新的
kwargs = load_config(config=kwargs, context=上下文)
文件“/usr/local/lib/python3.7/dist-packages/can/util.py”,第 192 行,load_config...
f'未知接口类型 “{config[interface]}”'
can.exceptions.CanInterfaceNotImplementError:未知接口类型“无”
解决:
在您的主目录 (~/) 中添加一个 .canrc 文件:
sudo nano ~/.canrc
在里面,写下以下内容:
|
[default] Interface=socketcan Channel=can0 |
添加此内容后,保存文件并退出。重新启动后,您可以再次运行 Python 代码。
5.3.3 C 示例代码
执行以下命令以导航到程序目录:
cd /your/own/directory/dual-can/c
然后,依次执行以下命令:
sudo make clean
sudo make
sudo ./main
程序将如下图所示运行:

5.4 使用 STM32 示例代码
使用Keil uVision5软件打开位于“demo codesstm32MCP2515-Normal-STM32USER”目录下的“main.uvprojx”项目文件。按照STM32硬件连接图将模块连接到STM32。确保程序编译无错误后,将其下载到 STM32 开发板。

在示例代码中,调试信息通过 USART1 输出。在硬件上将 PA9 连接到 Tx,将 PA10 连接到 Rx。建立连接后,打开串行终端应用程序。选择正确的串口,将波特率设置为9600,然后单击“open”。串行终端窗口将显示如下:

产品注意事项和维护
注意事项
- 在通电状态下,不要插拔模块。
- 遵循产品上提供的所有警告和指南。
- 保持产品干燥。如不小心溅水或浸入液体,立即断开电源并彻底干燥产品。
- 确保操作环境有良好的通风和散热,以避免因高温导致组件损坏。
- 不要在多尘或肮脏的环境中使用或存放产品。
- 避免在温度频繁变化的环境中使用产品,以防止组件发生冷凝损坏。
- 轻拿轻放产品,避免跌落、撞击或剧烈震动,以免损坏电路和组件。
- 不要使用有机溶剂或腐蚀性液体清洁产品。
- 请勿自行尝试维修或拆解产品。如出现任何故障,请联系我们公司进行维修。未经授权的维修可能会损坏产品,造成的损坏将不在保修范围内。
维护
地址:广西壮族自治区桂林市七星区漓江花园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
