RS485 CAN for Jetson Nano
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品概述
这是一款Jetson Nano 专用 RS485 CAN 扩展板
特点
- 基于 GPIO 40PIN 接口设计,方便直接插到 Jetson Nano 上
- 具备 CAN 功能,使用 SPI 接口的 CAN 控制器 MCP2515,搭配 SIT65HVD230DR 收发器
- 具备 RS485 功能,UART 控制,半双工通讯,搭配 SP3485 收发器支持自动切换收发状态,无需程序控制
- 板载 TVS (瞬态电压抑制管),RS485 通讯可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电
- 板载数字隔离芯片,信号隔离通信更安全、稳定性更好、抗干扰性更强
- 预留控制接口,方便其他控制器控制
- 提供完善的配套资料手册(提供 python 例程)
产品参数
产品连接方式
资源介绍
管脚占用
产品尺寸
使用方式
安装必要的函数库
sudo apt-get install minicom sudo apt-get install python-pip nano sudo pip install pyserial sudo pip install spidev==3.1
打开SPI
官方B01套件请直接参考官方B01套件打开SPI.
Jetson Nano B01 带emmc模组版本,也就是国产套件,无法通过jetson-io.py来直接配置40PIN引脚。这里提供直接修改设备树文件的方式来开启SPI1. 笔者目前只验证了JetPack4.6.2, 本次操作需要重装系统,请用户谨慎操作。
硬件准备
1. Ubuntu电脑主机或者虚拟机
2. Jetson Nano 主板
3. Micro USB数据线
软件设置 (Host PC)
需要在系统资源上修改设备树文件,如果你之前用SDK Manager安装过系统镜像,可以直接在上面修改。 如果没有的话,请参考以下资源下载部分先进行操作,以下资源包是Jetpack4.6.2版本的,如果你需要别的版本资源包下载,请参考资源包下载方法。
资源下载
-
在ubuntu电脑新建一个文件夹:
sudo mkdir sources_nano cd sources_nano
- 下载以下两个资源包:
https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/jetson-210_linux_r32.7.2_aarch64.tbz2 https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/tegra_linux_sample-root-filesystem_r32.7.2_aarch64.tbz2
- 将资源包移到文件夹,并解压(实际操作的时候,请尽量用tab按键自动补齐指令)
sudo mv ~/Downloads/Jetson-210_Linux_R32.7.2_aarch64.tbz2 ~/sources_nano/ sudo mv ~/Downloads/Tegra_Linux_Sample-Root-Filesystem_R32.7.2_aarch64.tbz2 ~/sources_nano/
- 解压资源
sudo tar -xjf Jetson-210_Linux_R32.7.2_aarch64.tbz2 cd Linux_for_Tegra/rootfs/ sudo tar -xjf ../../Tegra_Linux_Sample-Root-Filesystem-R32.7.2_aarch64.tbz2 cd ../ sudo ./apply_binaries.sh (若出现报错按照系统提示操作,然后再次输入该行命令)
修改设备树
- 安装dtc工具和nano工具
sudo apt-get install -y device-tree-compiler sudo apt-get install nano
- 反编译出dts文件
cd kernel/dtb sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb
- 修改dts文件
sudo cp tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00-bak.dts sudo nano tegra210-p3448-0002-p3449-0000-b00.dts
按下ctrl^w,输入spi@7000d400 (紧跟一个空格),按下回车键,找到spi@7000d400{}部分
在其中的spi@0结构和spi@1结构分别添加语句 status = "okay" ;
找到spi1的引脚设置,将其中的nvidia, function 改为spi1, nvidia,tristate改为0x0, nvidia,enable-input改为0x1. 如图, 五个引脚都要操作。
- Ctrl+Y,按下回车保存文件,并重新编译为dtb. 注意,如果你还需要修改SD卡等操作,请一起操作。主要不要修改错位置,否则容易导致系统无法正常启动。
sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts
重新烧录系统
-
将nano设置为recovery烧录模式,接入ubuntu电脑。注意,这里不支持只更新dtb分区,因此需要重新烧录整个系统,烧录系统后需要重新做开机配置,因此,请提前将HDMI屏幕和键盘连接到nano上。
cd ../../ sudo ./flash.sh jetson-nano-emmc mmcblk0p1
测试SPI
-
系统烧录成功后,完成开机配置,nano自动重启
加载spidev:sudo modprobe spidev git clone https://github.com/rm-hull/spidev-test cd spidev-test/ gcc spidev_test.c -o spidev_test
- 用一根排线将nano 40PIN的19和21号引脚短接,运行程序测试:
./spidev_test -v -D /dev/spidev0.0 -p "Test"
官方B01套件打开SPI
-
在如下文件中添加:
sudo nano /etc/modules-load.d/modules.conf
添加一行
spidev
按ctrl+x 然后按Y,回车保存退出,然后打开硬件SPI:
sudo /opt/nvidia/jetson-io/jetson-io.py
如下图所示所示
选择配置40PIN管脚
键盘下选,配置管脚
键盘下选,移动到SPI1,并回车确定,有*号出现
键盘下选,保存并选择重启(一直回车即重启)。
重启后,ls /dev/spidev*即可看到设备号
测试SPI
下载示例程序
在用户主目录下,执行如下命令:
wget https://www.waveshare.net/w/upload/7/78/RS485_CAN_for_JetsonNano_Code.zip sudo unzip ./RS485_CAN_for_JetsonNano_Code.zip -d ./RS485_CAN_for_JetsonNano_Code/
CAN
请先连接好硬件连线,然后再运行程序,由于是SPI转CAN,且默认晶振为8M。所以暂时的波特率为500Kbps.
本产品提供的为PYhton驱动程序,目前支持最高波特率为500Kbps,默认为125Kbps,注意选择通信另外一端的波特率:
cd RS485_CAN_for_JetsonNano_Code sudo python cantest.py
测试例程将会在接收到信息时发送1-8;
485
请先连接好硬件连线,然后再运行程序,RS485是由UART转出来的,请不要占用UART.
sudo python rs485test.py
FAQ