Serial Expansion HAT

来自Waveshare Wiki
跳转至: 导航搜索
Serial Expansion HAT
Serial Expansion HAT
{{{name2}}}
{{{name3}}}
板载接口
RPi UART

说明

产品介绍

Serial Expansion HAT是一款专为树莓派设计的串口扩展板,可通过I2C扩展两路UART通道和8个可编程IO

特点

  • 基于Raspberry Pi 40pin GPIO接口,适用于Raspberry Pi系列主板
  • 板载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设备地址。

Serial-Expansion-HAT-1.jpg

接口介绍

标识 描述
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电阻选择地址,它们的对应关系如下表格:
Serial expansion hat i2caddr.png
详见datasheet:Page39

可以看到表中的列出来的地址均为8位数据,在实际操作中的I2C地址7位,所以需要往最低位移一位。 比如说第一个A1和A0接到VDD, 表格中给出来的地址是0x90(1001 000X), 但是实际使用的时候,对应的设备地址应该时,100 1000, 即0x48.
【注意】本模块默认焊接A0和A1到3.3V,默认I2C地址为:0X48
通过计算,理论上可以在一个控制器上同时控制32个设备。
购买日期早于2019年12月31日为老版本,老版本由于PCB上中断管脚已经直连了,因此无法在树莓派上堆叠,需要使用杜邦线连接;
购买日期晚于2019年12月31日为新版本,需要手动焊接更改默认的中断管脚,最大支持5个堆叠,如果需要叠加更多的,需要使用杜邦线连接
对树莓派而言,使用杜邦线连接理论上不能达到连接32个,因为扩展一块就需要一个中断引脚,树莓派没有那么多的GPIO

树莓派使用

开启I2C接口

  • 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

RPI open i2c.png
然后重启树莓派:

sudo reboot

安装库

如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用,python库可以不安装,直接运行程序即可

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

#打开树莓派终端,并运行以下指令
cd
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
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版本,如果没有出现说明安装出错

lgpio

wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install 
# 更多的可以参考官网:https://github.com/gpiozero/lg
  • 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查看一下 将会多出如下设备:

Serial expansion hat finddev.png
其中GPIOchip对应的是8个GPIO驱动(2020-02-13之前的生成的是gpiochip3,之后的系统生成的是gpiochip2),ttysc0和ttysc1为两个串口驱动
如果需要堆叠的话,第二个模块不能直接插在树莓派,由于PCB上使用的中断引脚是一样,会导致无法识别出多个设备。
此时应该使用杜邦线连接,并 保证中断引脚不一致。同时config.txt中的命令应该修改为
dtoverlay=sc16is752-i2c,int_pin=xx,addr=0x48
xx为你实际插的BCM编码引脚

测试程序

下载例程

wget http://www.waveshare.net/w/upload/b/ba/Serial_Expansion_HAT_code.tar.gz
tar zxvf Serial_Expansion_HAT_code.tar.gz
sudo chmod 777 -R Serial_Expansion_HAT_code
cd Serial_Expansion_HAT_code

测试串口

  • c语言,默认波特率115200
#默认通过串口A发送数据
cd c/uart/send
make clean 
make
sudo ./uart_send
#默认通过串口B接收数据
cd c/uart/receive/
make clean 
make
sudo ./uart_receive
  • 测试

为了方便测试,把TXDA连接至RXDB,RXDA连接至TXDB,打开两个终端,一个终端先运行接收端程序,另一个终端再运行发送端程序。
测试现象:每隔100毫秒将发送一个ascii字符到接受端,接受端接收到~字符即结束阻塞监听。
Serial expansion hat test.png
如果接外部的串口,要共地处理。

  • python,默认波特率115200
cd python/Uart/
#默认通过串口A发送数据
sudo python send.py
#默认通过串口B接收数据
sudo python receive.py

测试现象:若是接收端,会进入接收状态,终端打印接收到的程序。发送端会立即发送设置好的字符串。

测试扩展GPIO

  • c语言
cd c/gpio/
make clean 
make
sudo ./main

运行程序后,程序会翻转GPIO0的电平,如果在GPIO0上接上LED灯,会发现LED灯闪烁

  • python
cd python/GPIO
sudo python gpio.py

运行程序后,程序翻转GPIO0的电平几次,如果GPIO0上接上LED灯,会发现LED灯闪烁五次之后常亮,另外GPIO1被设置为输入模式,你可以将GPIO1分别接到3.3V和GND查看一下状态

叠加教程

如果你不仅需要一个,你需要扩展多个串口需要按照如下操作(适用于新版本)。
安装i2c-tools,方便查看I2C地址,在控制台输入:

sudo apt-get install i2c-tools

等待安装成功,执行如下命令查看I2C地址。

sudo i2cdetect -y 1

如果默认已经插入了一个Serial Expansion HAT,那么执行如下命令会得到如下的效果:
Serial expansion hat add0.png
其中0X48的设备显示成了UU,说明系统已经加载成功了。运行ls /devttySC*可以查看到已经生成了两个串口设备了。

在叠加第二块模块的之前,需要修改相应的硬件设置,将板子上的默认INT与I2C address的配置改成与默认的不一致即可,这里将需要叠加的另一块板改了:INT PIN改成P23,I2C Address的A0改到了GND:
Serial expansion hat add.png
修改完成之后,将模块叠加在之前的模块上,运行命令:
Serial expansion hat add1.png
新的模块的I2C地址为0X49,前面已经修改了中断管脚为23,那么我们就可以打开/boot/config.txt中加入如下配置:

sudo nano /boot/config.txt

在之前配置下方加入如下,保存并退出(ctrl +x,然后执行Y,并回车):

dtoverlay=sc16is752-i2c,int_pin=23,addr=0x49

Serial expansion hat add2.png
重启树莓派

sudo reboot

执行如下命令,会出现4个设备号,叠加即成功了。
Serial expansion hat add3.png
由于系统限制,目前支持最大叠加数为4个,后续会支持更多



资料


文档

程序

数据手册


FAQ

可以堆叠,需要修改板子I2C电阻和中断管脚电阻,同时config.txt中的命令需要修改对应的中断引脚


  1. 树莓派装了主流的ubuntu系统可以使用;
  2. 不可以在树莓派中直接更改config.txt文件,在树莓派打开boot文件夹里config.txt为空文件,一般是改不了;
  3. 而是将树莓派的SD卡通过读卡器在电脑下(或者其它能识别SD卡的主机)读取和更改config.txt文件。



技术支持


联系人:黄工
EMAIL:3005423122@qq.com
电话:0755-83040712
QQ:3005763927
微信:扫下方二维码添加
Hkx-wx.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证