I/O Expander Shield是基于MCP23017的一款I/O扩展Shield,本Shield采用IIC通讯,扩展了GPIOA和GPIOB这2组共16个I/O,板载2个LED、2个按键可供用户使用,并且用户可通过拨码开关来选择是否使用板载LED和按键。
一、产品特性:
- 16位远程双向I/O端口、I/O引脚默认为输入引脚
- 高速IIC接口(MCP23017):100kHz、400kHz、1.7MHz
- 三个硬件地址引脚,最多可允许总线上连接8个器件
- 可配置的中断输出引脚:可配置为高电平有效(输出)、低电平有效(输出)或开漏(输出)
- INTA和INTB可配置为独立或联合工作
- 可配置的中断源:根据已配置寄存器默认值或引脚电平变化而发生电平变化中断
- 用于配置输入端口数据极性的“极性反转”寄存器
- 外部复位输入
- 待机电流低:1µA(最大值)
- 工作电压:
1.8V至5.5V(-40°C至+85°C) 2.7V至5.5V(-40°C至+85°C) 4.5V至5.5V(-40°C至+125°C)
二、硬件清单:
pcDuino V2 x1 I/O Expander Shield x1
三、测试代码:
#include <core.h>
#include "Wire.h"
byte mcp_address=0x20; // I2C Address of MCP23017 Chip
byte GPIOA=0x12; // Register Address of Port A
byte GPIOB=0x13; // Register Address of Port B
byte IODIRA=0x00; // IODIRA register
byte IODIRB=0x01; // IODIRB register
void setup()
{
//Send settings to MCP device
Wire.begin(); // join i2c bus (address optional for master)
Wire.beginTransmission(mcp_address);
Wire.write(IODIRA); // IODIRA register
Wire.write(0x03); // set GPIOA-0/GPIOA-1 to inputs
Wire.endTransmission();
}
void loop()
{
Wire.beginTransmission(mcp_address);
Wire.write(GPIOA); // set MCP23017 memory pointer to GPIOB address
Wire.endTransmission();
Wire.requestFrom(0x20, 1); // request one byte of data from MCP20317
int inputs=Wire.read(); // store the incoming byte into "inputs"
if((inputs&0x01)==0)
{
Wire.beginTransmission(mcp_address);
Wire.write(GPIOA); // address bank A
Wire.write(0x04); // value to send GPIOA-2 HIGH
Wire.endTransmission();
printf("the s1 press\n-------------\n");
}
else if((inputs&0x02)==0)
{
Wire.beginTransmission(mcp_address);
Wire.write(GPIOA); // address bank A
Wire.write(0x08); // value to send GPIOA-3 HIGH
Wire.endTransmission();
printf("the s2 press\n-------------\n");
}
else
{
Wire.beginTransmission(mcp_address);
Wire.write(GPIOA); // address bank A
Wire.write((byte)0x00); // value to send GPIOA LOW
Wire.endTransmission();
}
delay(100);
}
四、测试运行:
(1)将I/O Expander Shield 插在pcDuino板子上:
(2)打开Arduino IDE输入测试代码,编译运行:
(3)将Shield上的Jumper,全部拨动到ON端,分别按下按键S1和S2: 按下S1,L1(RED)会点亮:
按下S2,L2(GREEN)会点亮:
五、原理图:
io-expander-shield-SCH1.pdf
(37.25 KB, 下载次数: 9)
|