SG IO E017

概述
本产品采用I2C接口,实现16个I/O端口扩展。支持树莓派、零/零、W/零、WH/2B/3B/3B+/4B 等型号,以及 Arduino 和 STM32。我们提供树莓派的C和Python演示代码,以及Arduino和STM32演示代码,可以实现输入测试、输出测试和中断测试。
产品参数
|
类型 |
SG IO E017 |
SG IO E017 A |
|
尺寸 |
45mm(长)x 25mm(宽) |
35mm(长)x 25mm(宽) |
|
控制芯片 |
MCP23017 |
MCP23017 |
|
通信接口 |
I2C |
I2C |
|
电源电压 |
3.3V/5V |
3.3V/5V |
|
扩展 I/O |
16 |
16 |
|
中断引脚 |
INTA、INTB |
INTA、INTB |
产品特点
- I²C接口,引脚占用更少
- 兼容3.3V/5V工作电平
- 预留 PH2.0 接口和 2.54mm 间距垫,方便访问其他开发板
- 板载3位DIP开关方便用户设置I²C地址
- 可用于 Raspberry Pi、Arduino 和 STM32 开发板的开源演示代码
尺寸

资源定义

① PH2.0 连接器引出控制引脚
②MCP23017芯片
③扩展 PA 和 PB 端口
④拨码开关,设置I2C地址
⑤预留2.54mm节距控制引脚
用法
该模块演示代码将 PA 端口 (PA0~PA7) 设置为输出,并以 1 秒的间隔循环高低电平。PB端口(PB0~PB7)设置为输入。此外,还配置了当PB端口任意引脚的电平发生变化时,通过INTB引脚产生中断。此时,读取PB端口的电平。
Raspberry Pi 演示代码用法
由于bookworn系统不再支持wiringpi库,因此该系统的示例程序使用lgpio库,靶心系统可以使用示例程序的wiringpi库版本。
硬件接口配置说明

树莓派主板中的演示码采用接线Pi的引脚定义号,bokkworn系统采用BCM号的引脚定义。
下表定义了带有 Raspberry Pi 主板接线的模块:
|
PIN |
引脚功能 |
树莓派 |
|
VCC |
电源正极(3.3V/5V) |
3.3V |
|
GND |
电源接地 |
接地 |
|
SDA |
I2C 数据线 |
SDA1 |
|
SCL |
I2C 时钟线 |
SCL1 |
|
INTA |
PA端口中断引脚 |
P0(接线pi数) |
|
INTB |
PB端口中断引脚 |
P1(接线pi数) |
演示代码用法
Wiringpi 库安装
首先,在终端上使用“gpio -v”命令检查是否安装了 wiringpi 库。如果出现2.52的信息,则表示安装成功。可以跳过这部分内容,否则需要按如下方式安装:
sudo apt-get install wiringpi
#For 2019 年 5 月之后的 Raspberry Pi 系统(更早的不需要执行),可能需要升级:
WGET https://project-downloads.drogon.net/wiringpi-latest.deb
#Version 树莓派4B升级,如果你的下载失败或者 #speed 很慢,可以通过以下链接下载然后 #and 复制到树莓派主板上:
#https://github.com/seengreat/wiringpi-library
树莓派4B版升级
sudo dpkg -i wiringpi-latest.deb
gpio -v
如果出现 2.52 版本,则安装成功
#For Bullseye 分支系统,使用以下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
#Running GPIO - V 将产生 2.70 版。如果没有出现,则表示安装错误
如果运行 python 版本的示例程序时出现错误提示“ImportError: No module named 'wiringpi'”,请运行以下命令
#对于 Python 2。X版
pip install wiringpi
#对于 Python3。X版
pip3 install wiringpi
注意:如果安装失败,可以尝试以下编译安装:
git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
注意:-- 递归选项可以自动拉取子模块,否则需要手动下载。
进入刚刚下载的WiringPi Python文件夹,输入以下命令,编译安装:
#对于 Python 2。X版
sudo python setup.py install
#对于 Python 3。X版
sudo python3 setup.py install
如果发生以下错误:

这时,输入命令sudo apt install swig来安装swig。之后,编译并安装 sudo python3 setup.py 安装。如果出现类似于以下内容的消息,则安装成功。

Lgpio 库安装
对于书虫系统,示例程序使用 lgpio 库。以下是库的安装命令:
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zipcd lg-master
make
sudo make install
开放式 I2C 接口
sudo raspi-config
启用 I2C 接口:
Interface Options -> I2C -> Yes




重新启动设备。
sudo reboot
运行命令检查I2C是否启动。
lsmod
如果显示i2c_bcm2835,则表示 I2C 模块已启动。

安装 i2c-tools 工具以确认
sudo apt-get install i2c-tools
查看连接的 I2C 设备
i2cdetect -y 1
检查地址,如图所示 图中,表示I/O扩展板成功 连接到树莓派,DIP 开关连接到高电平 级别,显示地址为0X27;

安装 Python 库
演示代码使用 python 3 环境。要运行 python 示例程序,您需要安装 smbus:
sudo apt-get install -y python-smbus
C 演示代码
打开demo codes/raspberry_pi/c目录
sudo make clean
sudo make
sudo ./main
根据演示代码说明连接扩展板。运行程序后,树莓派终端的输出结果如下:;“端口B:ff”表示模块PB端口的所有输入引脚默认为高电平(0xff:1111111);“A口”是指PA0~PA7引脚,“A口输出高电平”是指所有输出高电平的PA口引脚,“A口输出低电平”是指所有输出低电平的PA口引脚,模块PA口输出引脚以1秒的间隔循环切换高低电平。用户还可以将PA0~PA7连接到LED,可以观察到LED不断闪烁。此时输出测试正常;
用跳线将PB0端口连接到GND,然后触发INTB引脚上的中断。树莓派终端输出“portB:fe”,即PB端口的输入电平从原来的0xff(11111111)变为0xfe(11111110)。

Python 演示代码
打开演示代码\raspberry_pi\python目录
python3 mcp23017.py
Python版本的演示代码与C语言的演示代码类似。运行结果如下图所示:演示

Arduino 演示代码用法
接线说明
|
SG-IO-E017 |
引脚功能 |
Arduino |
|
VCC |
电源正极(3.3V/5V) |
5V |
|
GND |
电源接地 |
接地 |
|
SDA |
I2C 数据线 |
SDA |
|
SCL |
I2C 时钟线 |
SCL |
|
INTA |
PA端口中断引脚 |
D2 |
|
INTB |
PB端口中断引脚 |
D3 |
演示代码用法
使用 Arduino IDE 打开项目文件 demo codes\Arduino\mcp23017\mcp23017.ino,单击 Verify,验证后上传到开发板。

点击工具,打开串口监视器,将波特率设置为115200,观察数据变化。

打开串口监视器,显示如下。将波特率设置为115200(如下图“1”所示)。程序运行结果如下图所示:

STM32 演示代码用法
接线说明
|
SG-IO-E017 |
引脚功能 |
STM32 |
|
VCC |
电源正极(3.3V/5V) |
3.3V |
|
GND |
电源接地 |
接地 |
|
SDA |
I2C 数据线 |
PB11 |
|
SCL |
I2C 时钟线 |
PB10 |
|
INTN |
PA端口中断引脚 |
PB3 |
|
INTB |
PB端口中断引脚 |
PB4 |
演示代码用法
用Keil_Vision5软件打开main.Uvprojx项目文件在目录demo codes\STM32\USER中,并按照上表将模块与STM32连接;程序编译后下载到STM32开发板上,无误;

演示代码中的调试信息输出串口为USART1,其中PA9为Tx,PA10为Rx;连接好电缆后,打开串口调试助手,选择串口号,将波特率调整为115200,点击“打开”,串口调试助手窗口如下图:


点击工具,打开串口监视器,将波特率设置为115200,观察数据变化。
预防措施
- 在通电状态下,不要插拔模块。
- 遵循产品上提供的所有警告和指南。
- 保持产品干燥。如不小心溅水或浸入液体,立即断开电源并彻底干燥产品。
- 确保操作环境有良好的通风和散热,以避免因高温导致组件损坏。
- 不要在多尘或肮脏的环境中使用或存放产品。
- 避免在温度频繁变化的环境中使用产品,以防止组件发生冷凝损坏。
- 轻拿轻放产品,避免跌落、撞击或剧烈震动,以免损坏电路和组件。
- 不要使用有机溶剂或腐蚀性液体清洁产品。
- 请勿自行尝试维修或拆解产品。如出现任何故障,请联系我们公司进行维修。未经授权的维修可能会损坏产品,造成的损坏将不在保修范围内。
保养
地址:广西壮族自治区桂林市七星区漓江花园19栋
联系人:售后维修部
技术支持
技术支持时间(工作日):香港时间:上午9:30 - 上午11:30,
下午1:30 - 下午5:30电话:0773-7799838 传真:gxshengui@163.com
感谢您选择深桂科技的产品。如果您有创意产品或想法,请随时给我们发送电子邮件,也许我们可以进一步合作。我们的电子邮件地址是:gxshengui@163.com
- 2025-12-02
- 2025-12-02
- 2025-12-02
- 2025-12-01
