2-CH RS485 HAT
| ||||||||||||||||
| ||||||||||||||||
说明
产品概述
2-CH RS485 HAT 是微雪电子专为树莓派设计的双通道隔离型RS485扩展板,采用SC16IS752+SP3485方案,内置电源隔离、ADI磁耦隔离和TVS等保护电路。
特点
- 基于Raspberry Pi 40pin GPIO接口,适用于Raspberry Pi系列主板
- 采用SC16IS752与SP3485双芯片组合方案,可实现SPI转RS485,通信速率高达921600bps
- 支持手动或自动收发数据,可通过拨码开关设置
- 板载TVS(瞬态电压抑制管),可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电
- 板载自恢复保险丝和保护二极管,可确保电流和电压稳定输出,防过流过压,提高抗冲击能力
- 板载电源和串口收发指示灯,方便查看模块电源和通信状态
- 引出SPI控制接口,方便接入Arduino等主控板
- 提供完善的配套资料手册(C与python示例程序和用户手册等)
产品参数
- 串口扩展芯片: SC16IS752
- RS485收发器: SP3485
- 通信接口: SPI
- 通信速率: 300~921600 bps
- 工作电压: 3.3/5V
- 产品尺寸: 65mm×56.5mm
- 过孔直径: 3.0mm
接口说明
- 引脚功能
引脚号 | 标识 | 管脚描述 |
1 | VCC | 3.3V/5V电源正 |
2 | GND | 电源地 |
3 | SCLK | SPI时钟输入 |
4 | MOSI | SPI数据输入 |
5 | MISO | SPI数据输出 |
6 | CS | SPI片选信号 |
7 | IRQ | 中断输出 |
8 | EN1 | 通道1输出使能 |
9 | EN2 | 通道2输出使能 |
硬件说明
控制器
本产品采用SC16IS752作为控制芯片,SC16IS752是双通道高性能的UART扩展芯片,支持SPI和I2C两种接口通信,本模块使用SPI接口。板载电源隔离、ADI磁耦隔离、板载TVS(瞬态电压抑制管)、自恢复保险丝和保护二极管和自动收发转换电路。可有效抑制电路中的浪涌电压和瞬态尖峰电压,防雷防静电,防过流过压,提高抗冲击能力,可进行信号隔离,具有靠性高、抗干扰强、功耗低等优点。
通信协议
CS:从机片选,当CS为低电平的时候,芯片使能
SCLK: SPI通信时钟
MOSI/SI:SPI通信主机发送,从机接收
MIS0/SO:SPI通信主机接收,从机发送
时序:CPHL=0, CPOL=0 (SPI0)
【备注】具体关于SPI通信的相关信息,可以自行网上搜索资料了解
树莓派使用
硬件连接
详细连接: C和python例程运行需要一个额外的RS485转串口模块连接通道1才可以看到效果。Python中test.py需要通道1和通道2连接。
功能引脚 | 树莓派接口(BCM) | 描述 |
VCC | 5V | 3.3V/5V电源正 |
GND | GND | 电源地 |
SCLK | P21(SPI1 SCLK) | SPI时钟输入 |
MOSI | P20(SPI1 MOSI) | SPI数据输入 |
MISO | P19(SPI1 MISO) | SPI数据输出 |
CS | P18(SPI1 CS) | SPI片选信号 |
IRQ | P24 | 中断输出 |
EN1 | P27 | 通道1(Channel 1)收发使能: 高电平发送使能,低电平接收使能 |
EN2 | P22 | 通道2(Channel 2)收发使能: 高电平发送使能,低电平接收使能 |
添加驱动
- 在终端执行:
sudo nano /boot/config.txt #在config文件末位加入如下指令,int_pin根据实际焊接方式设置: dtoverlay=sc16is752-spi1,int_pin=24 #重启设备 sudo reboot
重启后,SC16IS752的驱动会加载到系统内核中,此时可以运行ls /dev查看一下,将会多出如下设备:
在2020-05-27的树莓派系统中gpiochip3没有了变成了gpiochip2
安装库
- 安装wiringPi
sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级; cd /tmp wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb gpio -v # 运行 gpio -v 会出现2.52版本,如果没有出现说明安装出错
- 安装python2库
sudo apt-get update sudo apt-get install python-pip sudo pip install RPi.GPIO sudo apt-get install python-serial
- 安装python3库
sudo apt-get update sudo apt-get install python3-pip sudo pip3 install RPi.GPIO sudo apt-get install python3-serial
测试
- 下载并运行测试例程
sudo apt-get install p7zip-full wget http://www.waveshare.net/w/upload/4/44/2-CH_RS485_HAT_code.7z 7z x 2-CH_RS485_HAT_code.7z sudo chmod 777 -R 2-CH_RS485_HAT cd 2-CH_RS485_HAT/
- 另外也可以下载我们Github上面的工程:
sudo git clone https://github.com/waveshare/2-CH-RS485-HAT cd 2-CH-RS485-HAT/
*注意目录稍微有些不一样
- C 程序
cd c make clean make sudo ./main
- PYTHON 程序
cd python cd examples sudo python3 main.py #或者 sudo python3 test.py
- 此处演示的为:2-CH RS485 HAT的通道1与USB TO RS232/485/TTL的A.B连接如下图:
将USB TO RS232/485/TTL连接到电脑,打开串口助手,选择对应的串口,设置波特率115200。
- 执行C程序,电脑发送任何数据,模块将数据返回执行C程序,如下图:
(注意: 需要加回车换行才可以,不然数据不会返回;示例的程序目录以实际为主。)
- 执行main.py,电脑发送任何数据,模块将数据返回执行C程序,如下图:
(注意: 需要加回车换行才可以,不然数据不会返回;示例的程序目录以实际为主。)
- 如果没有其他的RS485设备,可以选择如下的测试方式,将通道1的A,B与通道2的A,B连接:
- 运行test.py,可以得到如下效果:
FAQ
- 确定485的A,B是否与控制的485设备A,B一一对应;
- 可以先使用USB to 485设备与模块通信,保证树莓派的设置没有问题;
- 检察串口通信参数的奇数偶数位校验的设置。
- 树莓派装了主流的ubuntu系统可以使用;
- Ubuntu 的config.txt文件通常在/boot/firmware 文件夹
- 树莓派版本的ubuntu 系统一般是64位的,可以用以下指令安装wringpi 库
下载64位Arm wiringpi wget https://gitee.com/LJYSCIENTIST/raspberry-pi-software-storage/raw/master/wiringpi-2.60-1_arm64.deb 安装64 位Arm wiringpi sudo dpkg -i wiringpi-2.60-1_arm64.deb
传感器那边发送过来的可能是hex数据(有时候还需要先发送hex数据给传感器请求数据),按照以下步骤收发hex数据:
wget https://www.waveshare.net/w/upload/0/00/RS485-CAN-HAT-For-Hex.zip unzip RS485-CAN-HAT-For-Hex.zip sudo chmod 777 RS485-CAN-HAT-For-Hex.zip cd RS485-CAN-HAT-For-Hex sudo python3 RS485-CAN-HAT-send-hex.py