“主控的 UART 就两路,接了传感器就接不了显示屏””SPI 片选不够,外设只能轮着用””GPIO 全用完了,新功能加不进来”——这些接口不够用的烦恼,做嵌入式的基本都遇到过。换主控吧,重新画板、重写驱动、重新验证,成本高到离谱;不加吧,产品功能又做不全。

其实有一个成熟且低成本的解法,很多团队都在用:用一颗小 CPLD 做接口扩展,不动主控,把不够用的接口”变”出来。
CPLD 接口扩展到底能做什么
GPIO 扩展。 主控引脚不够,用 CPLD 做并行转串、状态保持,一个口变多个口。
通信接口复用。 多路 UART、SPI、I2C 在一颗 CPLD 里做选择与桥接,主控只保留少量接口,其余由 CPLD 接管。
译码与片选。 CPLD 做地址译码,把有限的片选信号扩展成可控的多个外设片选。
协议转换。 在 CPLD 里实现简单协议转换、电平转换、信号整形,把主控从繁重的底层细节里解放出来。
为什么是 CPLD,而不是再买一颗 MCU
同样是解决接口问题,多加一颗 MCU 意味着要多一套电源、晶振、配置、固件和调试,板面积和 BOM 成本都涨;而 CPLD 体积小、外围简单、上电即用,用最小的代价把接口和逻辑问题解决掉,省下的往往不止一块主控的钱,还有画板和调试的工期。
接口扩展怎么落地:实现要点与成本账
落地这类扩展,思路并不复杂。以片选译码为例:把主控的地址线和控制信号送进 CPLD,CPLD 里写一小段译码逻辑,根据地址输出对应的外设片选,就能把一个有限的片选口扩展成可控的多个外设。再比如多路 UART,可以在 CPLD 里做收发切换和路由,让主控的单路串口按需接管多路设备。逻辑量通常不大,开发周期以天计。
成本账也很好算:多加一颗 MCU,等于多一套电源、晶振、固件和维护,BOM 和人力都涨;而加一颗 CPLD,外围极简、不用写固件、几乎不占板面积,把”接口不够用”的问题用最小代价解决。对绝大多数产品,后者都更划算。
真实场景:多路传感器接入不再”打架”
某环境监测产品,一个主控要同时接温湿度、气体、光照等多路传感器,I2C 地址冲突、片选不够、GPIO 紧张,一度卡住了整机开发。团队加了一颗中低密度 CPLD,在 CPLD 里做片选译码和 I2C 地址路由,让多路传感器共享主控的同一组接口,轮流采样互不干扰。主控接口压力骤减,板子和固件几乎没大改,整机按时量产。
接口不够用、又不想换主控的时候,先别急着重画板。算一笔账:重画板 vs 加一颗 CPLD,多数情况下后者省时又省钱。把你的接口需求和主控型号发来,我们帮你评估怎么扩展最划算。