Serial Expansion HAT
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
|
目录
产品介绍
Serial Expansion HAT是一款专为树莓派设计的串口扩展板,可通过I2C扩展两路UART通道和8个可编程IO
特点
- 基于树莓派接口设计,适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+
- 板载SC16IS752,可通过I2C扩展两路UART通道和8个可编程IO,不需要占用额外管脚
- 通过改变地址跳线可同时接入多达16个模块,相当于扩展出32个串口
- 板载多个指示灯,方便查看UART扩展接口的工作状态
- 预留I2C控制接口,方便接入其他主控板
- 提供完善的配套资料手册(提供C与python例程)
产品参数
- 工作电压:3.3V
- 扩展芯片:SC16IS752
- 控制接口:I2C
- 产品尺寸:65mm × 30mm
- 过孔直径:3.0mm
资源介绍
SC16IS752是双通道高性能的UART扩展芯片,还能额外提供8个可编程IO口,支持SPI和I2C两种接口通信,本模块默认使用I2C接口,并可更改A0与A1的连线方式来改变I2C设备地址。
接口介绍
标识 | 描述 |
3V3 | 3.3V电源 |
GND | 电源地 |
TXDA | 通道A数据输出端 |
RXDA | 通道A数据输入端 |
RTSA | 通道A请求发送 |
CTSA | 通道A允许发送 |
TXDB | 通道B数据输出端 |
RXDB | 通道B数据输入端 |
RTSB | 通道B请求发送 |
CTSB | 通道B允许发送 |
LED灯介绍
PWR:电源指示灯
TXDA: 通道A数据发送指示灯
RXDA: 通道A数据接收指示灯
TXDB: 通道B数据发送指示灯
RXDB: 通道B数据接收指示灯
I2C设备地址设置说明
A0, A1列为控制I2C硬件地址,通过焊接0R电阻选择地址,它们的对应关系如下表格:
详见datasheet:Page39
可以看到表中的列出来的地址均为8位数据,在实际操作中的I2C地址7位,所以需要往最低位移一位。 比如说第一个A1和A0接到VDD, 表格中给出来的地址是0x90(1001 000X), 但是实际使用的时候,对应的设备地址应该时,100 1000, 即0x48.
【注意】本模块默认焊接A0和A1到3.3V,默认I2C地址为:0X48
通过计算,理论上可以在一个控制器上同时控制32个设备。
由于PCB上已经直连了,所以无法在树莓派上堆叠,需要使用杜邦线连接
对树莓派而言,使用杜邦线连接理论上不能达到连接32个,因为扩展一块就需要一个中断引脚,树莓派没有那么多的GPIO
树莓派使用
打开I2C接口
在终端执行:
sudo raspi-config 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
sudo reboot
安装库
- 安装BCM2835, 打开树莓派终端,并运行一下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz tar zxvf bcm2835-1.60.tar.gz cd bcm2835-1.60/ sudo ./configure sudo make sudo make check sudo make install # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
- 安装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版本,如果没有出现说明安装出错 #Bullseye分支系统使用如下命令: git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build gpio -v # 运行gpio -v会出现2.70版本,如果没有出现说明安装出错
- python库
sudo apt-get install python-dev sudo apt-get install python-rpi.gpio sudo apt-get install python-smbus
生成设备
- 在/boot/config.txt中加入如下
sudo nano /boot/config.txt # addr根据A0A1实际焊接方式设置,默认是0X48 dtoverlay=sc16is752-i2c,int_pin=24,addr=0x48 # 重启设备 sudo reboot
- 重启后,SC16IS752的驱动会加载到系统内核中,此时可以运行ls /dev查看一下 将会多出如下设备:
如果需要堆叠的话,第二个模块不能直接插在树莓派,由于PCB上使用的中断引脚是一样,会导致无法识别出多个设备。
此时应该使用杜邦线连接,并 保证中断引脚不一致。同时config.txt中的命令应该修改为
dtoverlay=sc16is752-i2c,int_pin=xx,addr=0x48
xx为你实际插的BCM编码引脚
测试程序
下载例程
sudo apt-get install p7zip wget http://wiki.diustou.com/w/upload/d/db/Serial_Expansion_HAT_code.7z 7zr x Serial_Expansion_HAT_code.7z -r -o./Serial_Expansion_HAT_code sudo chmod 777 -R Serial_Expansion_HAT_code cd Serial_Expansion_HAT_code
测试串口
- c语言
#发送数据 cd c/uart/send make clean make sudo ./uart_send
#接收数据 cd c/uart/receive/ make clean make sudo ./uart_receive
测试现象:若是接收端,会进入接收状态,终端打印接收到的程序。发送端会立即发送设置好的字符串。
- python
cd python/Uart/ #发送数据 sudo python send.py #接收数据 sudo python receive.py
测试现象:若是接收端,会进入接收状态,终端打印接收到的程序。发送端会立即发送设置好的字符串。
测试扩展GPIO
- c语言
cd c/gpio/ make clean make sudo ./main
运行程序后,程序会依次翻转GPIO的电平,如果8个GPIO上接上LED灯,会发现依次点亮、熄灭8个LED灯
- python
cd python/GPIO sudo python gpio.py
运行程序后,程序会依次翻转GPIO的电平,如果8个GPIO上接上LED灯,会发现依次点亮、熄灭8个LED灯
FAQ
|
|