双通道 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


wget https://project-downloads.drogon.net/wiringpi-latest.deb #Version 4B upgrade of 

 

Raspberry Pi


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 版本

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

 

 

 

 

其他信息