RS485-Dual-CAN-I

产品原理图

树莓派隔离式RS485 CAN扩展板双通道CAN RS485

本产品包含扩展电路两个CAN和一个RS485接口,并支持用户自定义波特率通信;板载数字隔离芯片和集成隔离电源可提供稳定的隔离信号和电压,隔离端子不需要额外的电源。TVS保护,可靠性高,抗干扰性强,功耗低。该产品还提供了直流电源输入接口电路,可同时为模块和树莓派供电。我们提供树莓派演示代码。

特征

  • 采用CAN控制器MCP2515CAN收发器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芯片

 8DIP开关:CAN芯片选择和中断引脚选择两组

 信号隔离芯片π163M31      

CAN收发器芯片SN65HVD230DR

树莓派40female插座   

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 版本的示例程序时出现错误提示“ImportErrorNo 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

   其中,ABCDINT0INT1的实际值由8DIP开关的状态决定

如下表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可以看出,INT0INT1的值是其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(对应TXD0RXD0)和硬件串口/dev/ttyAMA1(对应TXD2RXD2),其中/dev/ttyS0性能较低,功能也很简单,波特率没有专用的时钟源而是由CPU核心时钟提供, 所以“迷你串口”的弱点在于:波特率受核心时钟的影响,如果核心智能调节功耗降低主频,就会牵连到迷你串口对应的波特率。/dev/ttyAMA1 具有单独的波特率时钟源,具有高性能和可靠性。当用户启用 /dev/ttyAMA1 时,他们需要在 /boot/config.txt 文件中的一行中添加“dtoverlay=uart2”语句。

   如果用户需要串口 0TXD0 RXD0)才能具有与串口 2 相同的性能,则需要在 /boot/config.txt 文件中的一行中添加“dtoverlay=pi3-disable-bt”语句。重新启动后,“/dev/ttyS0”被交换为“/dev/ttyAMA0”,串口0TXD0RXD0)设备符号变为/dev/ttyAMA0,与串口2具有相同的高性能。

经过测试,当串口0TXD0RXD0)使用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连接的HL信号没有单独连接,则candump命令的终端无法接收数据,在相应的终端中修改命令

 candump can1

 cansend can0 123#11.22.33.44.55.66

   检查数据是否正确发送和接收

9)USBRS485模块连接到计算机,打开计算机端的串口调试助手,选择USBRS485模块的设备编号作为串口号,并连接板上的RS485端子(2-1资源介绍图中的)与USBRS485模块的接线接线方式为

         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)向左转动时(TXD2RXD2),参数为“/dev /ttyAMA1”,当串口信号选择开关向右转动时(TXD0RXD0),则参数为“/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

 

 

 

 

 

 

 

其他信息