Serial Expansion HAT

来自丢石头百科
Serial Expansion HAT
Serial Expansion HAT
{{{name2}}}
{{{name3}}}
基本信息
分类: 树莓派扩展板
功能: UART
{{{userDefinedInfo1}}}: {{{userdefinedvalue1}}}
{{{userDefinedInfo2}}}: {{{userdefinedvalue2}}}
{{{userDefinedInfo3}}}: {{{userdefinedvalue3}}}
{{{userDefinedInfo4}}}: {{{userdefinedvalue4}}}
{{{userDefinedInfo5}}}: {{{userdefinedvalue5}}}
{{{userDefinedInfo6}}}: {{{userdefinedvalue6}}}
品牌: Waveshare
板载接口
RPi UART
相关产品
♦ {{{Product1}}}
♦ {{{Product2}}}
♦ {{{Product3}}}
♦ {{{Product4}}}
套餐模块

产品介绍

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设备地址。

Serial-Expansion-HAT-intro.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个设备。
由于PCB上已经直连了,所以无法在树莓派上堆叠,需要使用杜邦线连接
对树莓派而言,使用杜邦线连接理论上不能达到连接32个,因为扩展一块就需要一个中断引脚,树莓派没有那么多的GPIO

树莓派使用

打开I2C接口

在终端执行:

sudo raspi-config 
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

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

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查看一下 将会多出如下设备:

Serial expansion hat finddev.png

如果需要堆叠的话,第二个模块不能直接插在树莓派,由于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

问题:
能否堆叠
答复:

不可以堆叠,需要使用杜邦线来连接,同时config.txt中的命令需要修改对应的中断引脚




Icon-mail.png 联系 丢石头

我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)