| 类型 | 功能描述 |
| 类别 | 集成电路 (IC) |
| 接口 – I/O 扩展器 | |
| 制造商 | 微芯科技 |
| 输入/输出数量 | 8 |
| 界面 | I捕获C |
| 中断输出 | 是的 |
| 特征 | 上电复位 |
| 输出类型 | 推拉 |
| 电流 – 输出源/灌电流 | 25毫安 |
| 时钟频率 | 1.7兆赫 |
| 电压 – 电源 | 1.8V~5.5V |
| 工作温度 | -40℃~125℃ |
| 安装类型 | 通孔 |
| 包装/箱 | 18-DIP(0.300英寸,7.62毫米) |
| 供应商设备包 | 18-PDIP |
使用MCP23008端口扩展器向微控制器添加另外8个引脚 。MCP23008 使用两个I2C引脚(这些引脚可以与其它I2C器件 共享 ),作为交换,你可以使用8个通用引脚。可以将8个引脚中的每一个引脚设置为输入、输出或带上拉电阻的输入。当任何输入发生变化时,甚至可以通过外部引脚获得中断,因此你不必继续轮询芯片。
使用该芯片的电压范围为2.7-5.5V(适用于任何3.3V或5V设置),可以从任何I/O引脚吸收/拉出高达20mA的电流,因此这适用于LED等。如果需要更多功率,请将其与高功率MOSFET配合使用 。 DIP封装意味着它可以插入任何面包板或穿孔板。
此外,你可以通过将ADDR0-2引脚连接到电源或接地来设置I2C地址,最多可设置8个唯一地址。这意味着8个芯片可以共享一条I2C总线,即64个I/O引脚!
| 引脚 | 类型 | 参数 |
| 引脚#1 | SCL/SCK | 它是串行时钟输入。 |
| 引脚#2 | SDA/SI | 它是串行数据 I/O (MCP23008)/串行数据输入 (MCP23S08) 引脚。 |
| 引脚#3 | A2/SO | 它是硬件地址输入(MCP23008)/串行数据输出(MCP23S08)。它(A2)必须受到外部偏置。 |
| 引脚#4 | A1 | 它是一个硬件地址输入。必须是外部偏置。 |
| 引脚#5 | A0 | 它是一个硬件地址输入。必须是外部偏置。 |
| 引脚#6 | RESET | 这是一个外部复位输入。 |
| 引脚#7 | NC/CS | 无连接 (MCP23008)/外部片选输入 (MCP23S08)。 |
| 引脚#8 | INT | 它是一个中断输出。它可以配置为高电平有效、低电平有效或漏极开路。 |
| 引脚#9 | VSS | 它用于接地。 |
| 引脚#10 | GP0 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#11 | GP1 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#12 | GP2 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#13 | GP3 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#14 | GP4 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#15 | GP5 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#16 | GP6 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#17 | GP7 | 它是一个双向 I/O 引脚。它可以启用电平变化中断和/或内部弱上拉电阻。 |
| 引脚#18 | VDD | 电源引脚。 |
| 引脚#19 | N/C | 常闭。 |
主要组件
MCP23008 I/O端口扩展器
几个220Ω电阻
几个LED
Arduino微控制器
它是需要更多I/O端口的微控制器的理想补充。MCP23008 I/O端口扩展器的成本略高于2美元。这是一个18脚的芯片。
MCP23008由+5V供电。这样就可以将VDD连接到Arduino的5V端子。VSS接地。这完成了MCP23008的供电要求,8 个I/O端口标记为GP0-GP7。因为NC未连接,所以我们将该引脚保持未连接(或悬空)。
SCL代表串行时钟线,它连接到Arduino上的模拟时钟引脚 。模拟引脚5。串行数据线缩写为SDA。它连接到Arduino模拟引脚4上的模拟数据线。输出的中断引脚是INT。我们将此引脚保持未连接状态,因为我们不打算在此处使用中断。地址引脚为A0、A1和A2。如果你使用多个MCP23008芯片,则只需关心这些引脚。
这些引脚是外部偏置的,这意味着你可以向它们提供电压以生成不同的地址。因为有3个引脚,所以总共可以生成8个不同的地址 (23=8)。仅当你连接多个IC时才需要这样做,以便我们可以区分它们。带有Arduino微控制器的MCP23008 I/O端口扩展器电路如下图所示:
详细说明
现在让我们详细回顾一下上面项目。在此电路中,我们将一个220Ω电阻器和一个LED连接到每个输入和输出引脚。我们将+5V连接到VDD,将VSS连接到GND 以获取输入电源。
现在,将MCP23008的SCL引脚1连接到Arduino的模拟引脚5,这将同步Arduino和I/O端口扩展器芯片的时钟 。
接下来,我们连接到MCP23008的引脚2,即SDA,连接到Arduino的模拟引脚4,通过此连接可以在Arduino和I/O端口扩展器芯片之间传输数据。由于本项目中未使用中断,因此请悬空INT引脚。我们不使用RESET引脚;相反,我们将其连接到+5V。要使用它,只需将其连接到Arduino上的数字引脚即可。
接下来,我们将地址引脚A0、A1 和 A2 连接到地,它将这三个引脚的地址更改为000。这就是MCP23008 Arduino接口。
MCP23008通用输入/输出 (GPIO) 扩展器是一种简单、经济高效的方式来监视和控制多个外设信号,它们使设计人员可以轻松地在其设计中添加额外的I/O,从而释放微处理器的GPIO用于其他更重要的功能。
此外,I2C是一种数据包交换串行通信协议,每个连接仅使用2根线,允许多个主设备连接到多个从设备。它旨在将低速外围IC连接到短距离板内通信中的处理器和微控制器。


