PCF8575 IO 扩展器:原理与控制方法解析
演示视频:
【开源】STM32+PCF8575IO扩展器
一、工作原理
PCF8575 是德州仪器推出的 16 位并行 IO 扩展芯片,核心功能是通过 I2C 总线为微控制器扩展额外的输入 / 输出接口,解决单片机 IO 口数量不足的问题。
其硬件结构包含两大核心模块:一是 I2C 通信模块,支持标准(100kHz)和快速(400kHz)I2C 模式,通过 SDA(串行数据)和 SCL(串行时钟)两根线与主机通信,芯片内置 4 个可编程从机地址(通过 A0/A1 引脚电平组合设置),可实现多片级联;二是 16 位 IO 端口模块,分为 P0-P7(低 8 位)和 P8-P15(高 8 位)两组,每个端口可独立配置为输入或输出模式,无需额外配置寄存器 —— 当端口输出高电平时,内部上拉电阻(典型值 40kΩ)生效,可直接驱动外部弱拉电流负载;作为输入时,需外部提供电平信号,上拉电阻可防止引脚悬空导致的电平不稳定。
芯片供电电压范围为 2.5V-5.5V,兼容 3.3V 和 5V 系统,IO 端口支持 5V 耐压,可直接与 5V 外设连接,无需电平转换电路,适配性较强。
二、控制方法
(一)硬件连接
-
电源与地:VCC 引脚接系统电源(2.5V-5.5V),GND 引脚接系统地,建议在 VCC 与 GND 之间并联 0.1μF 陶瓷电容,滤除电源噪声。
-
I2C 总线:SDA 和 SCL 引脚分别连接主机(如单片机)的 SDA 和 SCL 引脚,且需在两根线上各串联一个 4.7kΩ-10kΩ 的上拉电阻(I2C 总线标准要求),确保总线空闲时保持高电平。
-
从机地址配置:A0 和 A1 引脚通过接 VCC、GND 或悬空(默认低电平)组合,确定芯片的 I2C 从机地址(共 4 种组合,地址范围通常为 0x20-0x23,具体需参考 datasheet)。
-
IO 端口连接:作为输出时,IO 引脚直接连接 LED、继电器等负载(注意负载电流不超过芯片最大灌拉电流,典型值 20mA);作为输入时,IO 引脚连接按键、传感器等信号源,可通过外部电阻设置上拉或下拉(若使用芯片内置上拉,需确保引脚电平匹配)。
(二)软件控制逻辑
软件控制核心是通过 I2C 总线向 PCF8575 发送 “写命令”(配置 IO 输出状态)或 “读命令”(读取 IO 输入状态),无需复杂的寄存器配置,流程如下:
-
初始化:先初始化主机的 I2C 总线(设置通信速率、引脚等),再根据 A0/A1 引脚状态确定 PCF8575 的从机地址,确保主机与芯片通信地址匹配。
-
写操作(IO 输出控制):
-
主机发送 I2C 起始信号,随后发送 “从机地址 + 写控制位”(最低位为 0),等待芯片应答(ACK);
-
芯片应答后,主机连续发送 2 字节数据(低字节对应 P0-P7,高字节对应 P8-P15),每字节的 8 位分别对应一个 IO 口的输出状态(1 为高电平,0 为低电平);
-
数据发送完成后,主机发送 I2C 停止信号,芯片接收数据并更新 IO 端口输出状态。
- 读操作(IO 输入读取):
-
主机发送 I2C 起始信号,随后发送 “从机地址 + 读控制位”(最低位为 1),等待芯片应答;
-
芯片应答后,依次向主机发送 2 字节数据(先低字节 P0-P7,后高字节 P8-P15),每字节的 8 位对应一个 IO 口的输入电平(1 为高电平,0 为低电平);
-
主机接收数据后,可根据需求解析对应 IO 口的状态,最后发送 I2C 停止信号结束通信。
需注意:PCF8575 无独立的方向控制寄存器,IO 口的输入 / 输出模式由实际使用场景决定 —— 当主机通过写操作设置 IO 为高电平时,若外部电路无强拉低信号,该端口可作为输入口使用(读取外部电平);若需稳定作为输入,建议先通过写操作将对应 IO 口置为高电平(使能内部上拉),再进行读操作。