这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 使用MCP23017模块时要注意的问题

共3条 1/1 1 跳转至

使用MCP23017模块时要注意的问题

专家
2026-08-09 18:06:29     打赏

MCP23017模块是一个I2C扩展IO口的模块,

image.png

image.png

查了下,在Arduino环境下有库支持,就用ESP8266模块进行了简单的测试。连接到ESP8266只需要四根线:

MCP23017模块     ESP8266模块

=============================

VCC                3.3V

GND               GND

SCL                D1(GPIO5)

SDA                D1(GPIO4)

=============================

看着电路中,和I2C设置有关的地址引脚A0、A1、A2都已经接地了,就以为没有问题,直接上程序测试。

#include <Wire.h>
#include <MCP23017.h>
 
#define MCP23017_ADDR 0x20
MCP23017 mcp = MCP23017(MCP23017_ADDR);
 
void setup() {
    Wire.begin();
    Serial.begin(115200);
    
    mcp.init();
    mcp.portMode(MCP23017Port::A, 0);          //Port A as output
    mcp.portMode(MCP23017Port::B, 0);          //Port B as output
 
    mcp.writeRegister(MCP23017Register::GPIO_A, 0x00);  //Reset port A
    mcp.writeRegister(MCP23017Register::GPIO_B, 0x00);  //Reset port B
}
 
void loop() {
 
    mcp.writePort(MCP23017Port::A, 0x00);
    mcp.writePort(MCP23017Port::B, 0x00);
    delay(500);
    mcp.writePort(MCP23017Port::A, 0xFF);
    mcp.writePort(MCP23017Port::B, 0xFF);
    delay(500);
}

结果程序上传后,预想中的控制输出口点评交替变化没有出现,相连的LED也没闪烁。于是重新改用I2C扫描程序,确认I2C地址是否存在,结果显示没有任何I2C设备。于是用杜邦线连接MCP23017模块的A0、A1、A2到ESP8266模块的GND,重新写回测试程序。

终于看到LED闪烁了。







关键词: MCP23017     I2C地址问题    

院士
2026-08-10 20:04:29     打赏
2楼

谢谢分享,学习了。


工程师
2026-08-11 11:08:15     打赏
3楼

拿Arduino来验证一下硬件模块,也是一个不错的办法啊


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]