MCU输入IO扩展:多片74HC165级联的高效采集方案

在嵌入式系统开发中,我们常常面临一个现实问题:MCU的GPIO资源有限。当项目需要采集大量开关、按键、传感器状态等数字输入信号时,仅靠MCU自身的IO引脚往往捉襟见肘。此时,IO扩展方案就显得尤为重要。

如果说 74HC595 是输出扩展的“明星芯片”,那么它的“孪生兄弟”——74HC165,就是输入扩展的不二之选。本文将详细介绍如何通过 多片74HC165级联,高效扩展MCU的输入能力,实现对数十甚至上百路数字信号的稳定采集。

一、应用场景与优势

典型应用场景:

  • 工业控制面板的多按键/开关状态采集
  • 多路限位开关或安全门状态监控
  • 拨码开关配置读取(替代EEPROM)
  • 低成本DI(数字输入)模块设计
    方案优势:
  • 成本极低:74HC165单价1元左右
  • 节省MCU资源:N×8输入仅需3~4个IO
  • 抗干扰强:并行锁存避免读取过程中信号变化
  • 易于扩展:理论上可无限级联(受限于时序和噪声)

二、74HC165芯片简介

74HC165 是一款 8位并行输入、串行输出移位寄存器,主要特性如下:

  • 8路并行数据输入(D0~D7)
  • 支持异步并行加载(通过 PL 引脚)
  • 串行数据输出(Q7)
  • 时钟输入(CP)和时钟使能(CE)
  • 支持级联扩展(通过 Q7’ 输出连接下一级的 DS)
    其工作流程如下:
  • PL(Parallel Load)拉低:将8路并行输入数据锁存到内部寄存器;
  • PL拉高:进入移位模式;
  • 在CP时钟驱动下,数据从 Q7 逐位串行输出;
  • 若多片级联,前一级的 Q7’ 连接到下一级的 DS,实现数据链式读取。
    并转串74HC165功能框图

三、硬件连接方案

以 3片74HC165级联为例,可扩展 24路输入。所需MCU引脚仅需 3~4个:

  • PL(Load):并行加载控制(所有芯片共用)
  • CP(Clock):移位时钟(所有芯片共用)
  • Q7(Data):串行数据输入(仅连接第一片的 Q7)
  • CE(Clock Enable):时钟使能控制引脚,低电平有效(所有芯片共用/或者分组)
    在简单应用中,CE 可接地;在复杂或高可靠性系统中,建议由 MCU 主动控制
    注:部分设计会额外使用 CE(Clock Enable)引脚,但通常可直接接地使能。
    为什么有时要使用 CE 引脚?
    虽然很多基础应用中会将 CE 直接接地(常使能),但在以下场景中,主动控制 CE 非常有用:
    1. 多组165独立控制
      若系统中有两组165分别采集不同信号,可通过 CE 分别使能,避免干扰。
    1. 与SPI或其他高速总线共享时钟
      当 CP 连接到系统主时钟(如SPI SCK),但你不想在非采集时段移位,可用 CE 屏蔽无效时钟。
    1. 防止噪声误触发
      在 PL 拉高后、准备读取前,若 CP 线路上有毛刺,可能导致数据错位。此时可先保持 CE = HIGH,待系统稳定后再拉低 CE 开始移位。
    1. 实现“暂停移位”功能
      在调试或低功耗模式下,可临时冻结移位过程。
      74HC165真值表
      74HC165时序图
四、硬件设计要点
  • ARM芯片可利用SPI接口(SPI 的 SCK 和 MISO 分别接 CP 和 Q7)接收串行数据,可以提高速率(如搭配FPGA则连接普通IO即可);
  • 所有芯片共用 PL̅、CP、CE̅ 信号(同步操作);<特殊应用可分别控制CE>
  • 未使用的并行输入引脚:接上拉或下拉电阻(典型值 10kΩ),防止浮空导致功耗增加或误触发。
  • PL̅、CE̅:若 MCU 默认输出高阻态,建议外部上拉电阻(4.7–10kΩ),确保默认为非加载/非使能状态。
  • DS(首片):若不使用外部串入,可接地或上拉,避免噪声干扰。
  • 时钟线(CP)与 PL̅ 线 是关键同步信号,可加 串联小电阻(22–100Ω) 在驱动端,抑制反射(适用于较长PCB走线);
  • 机械开关输入,建议软件消抖 + 硬件 RC 滤波;
  • 若输入通道极多(>64位)或要求高速:
    • 考虑专用GPIO扩展芯片(如 MCP23S17,SPI接口,16位I/O);
    • 或使用 CPLD/FPGA 实现自定义并转串逻辑。
  • 第一片的 Q7 --> 第二片的 DS --> 第三片的 D7 --> 第N片级联数据。。。
    级联接线示例图(3片级联):

级联电路示意图
与ARM配套使用时是否必须用 SPI?

方式 优点 缺点 适用场景
GPIO 软件模拟 灵活,任意引脚可用;无需配置 SPI;适合少量芯片 速度慢;占用 CPU 时间;代码略繁琐 少量 74HC165(1~2 片),低速应用(如按键扫描)
SPI + GPIO 控制 PL/CE 速度快;DMA 支持;CPU 占用低 需要占用 SPI 外设和特定引脚;需注意时序匹配 多片级联(>2 片)、高速采集(如传感器阵列)

五、常规I/O扩展方案对比

方案 接口类型 通道数 优点 缺点 典型应用
74HC595 串入 → 并出 8位/片,可级联 成本极低(<¥1),节省IO;驱动能力强(可直驱LED) 仅输出;无状态反馈;需软件管理时序 LED矩阵、数码管、继电器控制
74HC165 并入 → 串出 8位/片,可级联 成本低;扩展输入简单 仅输入;无中断;需主动读取 按键扫描、开关量采集
MCP23017/MCP23S17 I²C(23017)或SPI(23S17) 16位(8 in + 8 out 可配) 支持中断(INTA/B);双向IO;地址可配置(I²C最多8最多8片) 成本较高(¥8~15);速度受限于I²C(≤400kHz) 工控面板、HMI、多外设控制
PCF8574 I²C 8位(仅输出或准双向) 超小封装;接线少(仅2线) 无输入锁存;驱动能力弱;无中断 LCD1602控制、简单IO扩展
TCA9555 TI I²C 16位,带中断、极性反转 工业级温度范围;寄存器丰富;支持输入滤波 成本高(¥15+);需配置寄存器 工业传感器接口、高可靠输入
CPLD/FPGA 自定义逻辑 逻辑 数十至上百位 高速、并行、灵活;可实现复杂状态机 开发门槛高;成本高;需额外编程 高速数据采集、协议转换

六、结语

在资源受限的嵌入式系统中,74HC165级联方案为数字输入扩展提供了一种高性价比、高可靠性的解决方案。它与74HC595输出扩展相辅相成,共同构成了基于标准逻辑芯片的“IO扩展黄金组合”。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐