设备上 I²C 器件一多就会碰到两件事:地址不够用,以及总线电容超标。常见的坑是 PCF8574、PCF8575 和 MCP23017 三个型号共用同一段 0x20~0x27,混用也只能挂 8 颗。更要紧的是 PCF8574 与 PCF8574A 在原厂已标停产、PCF8575 已停止生产,新设计不该再从这几颗起步。本文说明地址怎么排、什么时候该上 8 路复用器,以及复用器解决不了什么。
第一,I²C 挂不下不外乎两个原因:地址撞了,或者总线电容超了。这两件事的解法完全不同,先分清楚再选料。第二,很多老图纸上的 PCF8574、PCF8574A、PCF8575 已经不适合进新设计了——前两颗在恩智浦官网上标的是 End of Life,第三颗标的是 No Longer Manufactured。
典型是三类:一是多传感器的采集箱或机柜,同型号的温湿度、电流传感器要装好几只,地址天生就重;二是带多块子板的设备,每块子板上都有一颗同样的 I/O 扩展或 EEPROM;三是走线比较长的设备,主板到面板、到背板的 I²C 拉了几十厘米,电容上去之后波形爬不起来。前两类是地址问题,第三类是电容问题。
把常用的几颗排在一起看就很清楚。PCF8574 的固定高位是 0100,加三根地址脚,7 位地址落在 0x20~0x27;PCF8575 是同样的固定高位,也是 0x20~0x27;MCP23017 固定高位同样是 0100,还是 0x20~0x27。三个型号完全重叠——混着用,这 8 个地址要在三个型号之间分,总数还是 8 颗,不是 24 颗。
唯一错开的是 PCF8574A,它的固定高位是 0111,独占 0x38~0x3F。恩智浦在数据手册里写得很明白:PCF8574 和 PCF8574A 除了从机地址的固定部分不同之外完全相同,三根硬件地址脚让每一种可以挂 8 颗,所以同一条总线上可以有多达 16 颗这两种 I/O 扩展器,支持 128 个 I/O。
这里有个很常见的记法错误:PCF8574A 的「地址字节」是 70h~7Eh,但那是 8 位写字节,7 位地址是 0x38~0x3F。写成 0x70 会让人误以为它和复用器撞车,实际上不撞。
| 型号 | 厂家 | 功能 | 7 位地址段 | 最多挂 | 温度与生命周期 |
|---|---|---|---|---|---|
| MCP23017-E/SP | 微芯 | 16 位 I/O 扩展(GPA7、GPB7 仅输出) | 0x20~0x27 | 8 颗 | −40~+125℃,只有这一个温档 |
| PCF8574T | 恩智浦 | 8 位 I/O 扩展,100kHz | 0x20~0x27 | 8 颗 | −40~+85℃,原厂标 End of Life |
| PCF8574AT | 恩智浦 | 8 位 I/O 扩展,100kHz | 0x38~0x3F | 8 颗 | −40~+85℃,原厂标 End of Life |
| PCF8575TS | 恩智浦 | 16 位 I/O 扩展,400kHz | 0x20~0x27 | 8 颗 | −40~+85℃,已停止生产 |
| 24LC256-I/P | 微芯 | 256kb I²C EEPROM,400kHz | 0x50~0x57 | 8 颗 | −40~+85℃ |
| PCA9548APW | 恩智浦 | 8 路 I²C 复用,带复位 | 0x70~0x77 | 8 颗 | −40~+85℃,在产 |
| TCA9548APWR | 德州仪器 | 8 路 I²C 复用,带复位 | 0x70~0x77 | 8 颗 | −40~+85℃,在产 |
同型号器件超过 8 只,或者几个型号抢同一段地址且换不掉,就该上 8 路复用器了。PCA9548A 和 TCA9548A 的从机地址都是 0x70~0x77,一条主总线上各能挂 8 颗,单层就是 64 个通道。上电时所有通道都是断开的,靠一个 8 位控制寄存器逐位打开,B0 对应通道 0,一直到 B7。
这两颗在 24 脚 TSSOP 上引脚定义、从机地址、控制寄存器位定义、复位行为都是一致的,3.3V 系统里实际可以互换。但两家手册都没有任何一句声明和对方交叉兼容,而且确实有差别:电源下限一个是 2.3V、一个是 1.65V,I/O 耐压一个是 6V、一个是 5V,封装阵容也不完全一样。要当替代用,这几项要逐条确认,不要因为型号像就直接换。
| 项目 | PCA9548APW(恩智浦) | TCA9548APWR(德州仪器) |
|---|---|---|
| 24 脚 TSSOP 引脚 | A0/A1/A2、复位、SD0~SD7、SC0~SC7 | 定义相同 |
| 从机地址 | 0x70~0x77 | 0x70~0x77 |
| 控制寄存器 | 8 位,B0 对应通道 0 | 定义相同 |
| 复位与中断 | 有低有效复位,无中断引脚 | 有低有效复位,无中断引脚 |
| 电源范围 | 2.3~5.5V | 1.65~5.5V |
| I/O 耐压 | 6V | 5V |
| 电平转换下限 | 供电最低 2.3V,配不到 1.8V 总线 | 供电可到 1.65V,能配 1.8V 总线 |
一是中断。8 路的 PCA9548A 和 TCA9548A 都没有中断引脚,从器件的中断线只能绕过复用器自己接回主控。恩智浦在应用笔记里介绍的“中断跟着通道走、而且能读控制寄存器判断是哪一路来的中断”,对应的是 2 路和 4 路的型号,不是 8 路这两颗。如果设备确实需要按通道区分中断,这是一个 8 路换 4 路的真实取舍。
二是总线电容。复用器是开关,不是缓冲器。恩智浦在应用笔记里写明:这一族器件在通道之间提供很好的隔离,但不提供额外的驱动能力,所以选上拉电阻时上游和下游的负载都要算进去。德州仪器的手册说的是同一件事——同时打开多个通道时,各通道上的从器件都会累加到总线电容里。也就是说,只有分时只开一路,复用器才等于把总线分段;同时开多路并不能解决电容超标。
电容的上限本身是有明确规定的:I²C 规范里,标准模式和快速模式的每根总线电容上限都是 400pF,快速模式加强版是 550pF。上拉电阻没有单一推荐值,规范给的是两条边界——上限由上升时间和总线电容决定,下限由器件的最小灌电流决定(标准模式和快速模式是 3mA,快速模式加强版是 20mA)。德州仪器和微芯的手册里都把这两条写成了明文公式,取值范围算出来之后,在范围内偏大一点可以省电流,偏小一点边沿更快。
新设计要 I/O 扩展,先看还在产的型号。MCP23017 是 16 位、带两根中断输出和一根硬件复位脚,支持到 1.7MHz(那一档要求 4.5~5.5V 供电且总线电容不超过 100pF),温度是 −40 至 +125℃ 的单一档位。要注意它的 GPA7 和 GPB7 只能做输出,真正可当输入用的是 14 位。另外它的地址脚和复位脚都没有内部偏置,必须外部接死。
老板子上还在用 PCF8574、PCF8574A 或 PCF8575 的,续产阶段照常采购没问题,但新项目立项时建议换掉。恩智浦在 PCF8574 的数据手册里给了官方迁移方向:PCA8574/74A 把速率提到 400kHz、总灌电流从 80mA 提到 200mA;PCA9674/74A 与 PCA9670、PCA9672 支持到 1MHz,且可用地址数量更多。具体选哪一颗要按手册逐项比。
要做电平转换就看最低那条总线的电压。两家的规则一致:复用器的通过电压要等于或低于总线里最低的那个电压。3.3V 主侧配 1.8V 从侧这种组合,PCA9548A 做不到——它供电最低只能到 2.3V,此时通过电压的最坏值已经高于 1.8V;TCA9548A 供电可以到 1.65V,把供电设到 1.8V 一档就能满足。
第一处是把停产件当成通用件。PCF8574、PCF8574A 在恩智浦官网的状态是 End of Life,按官方定义是正在停产、可以下单到最后订购日为止;PCF8575 的状态是 No Longer Manufactured,官方定义是不再接单也不再生产。这两种状态对续产和新项目的意义完全不同,报价前要先确认。
第二处是料号后缀。MCP23017 只有 E 这一个温度档位,−40 至 +125℃,原厂在数据手册里专门注明这一系列只提供 E 档,所以不存在 -I 版本,拿 -I/-E 去比这颗是比不出来的。而 24LC256 的 -I 是 −40 至 +85℃、-E 是 −40 至 +125℃,两个系列的后缀含义不能互相套用。
以上料号都在晟雅泰在售清单内。如果你手上有一张 I²C 器件清单不知道地址够不够排,或者图纸上的 PCF857x 需要找还在产的替代,把型号和数量发给我们,可以直接给出地址分配方案和对应的在售料号。工作日 24 小时内给报价。
本文出自 SUNTEC 晟雅泰(苏州晟雅泰电子有限公司)技术团队。
8 颗。它有三根硬件地址脚,7 位地址落在 0x20~0x27。如果再加上 PCF8574A,因为后者的固定高位不同、独占 0x38~0x3F,两种合起来可以挂 16 颗、支持 128 个 I/O,这是恩智浦数据手册里的原话。要注意 PCF8575 和 MCP23017 也占 0x20~0x27,和 PCF8574 完全重叠。
不建议。恩智浦官网上 PCF8574 与 PCF8574A 的状态是 End of Life,按官方定义是正在停产、可以下单到最后订购日;PCF8575 的状态是 No Longer Manufactured,即不再接单也不再生产。老板子续产可以照常采购,新项目建议按原厂给的迁移方向换到 PCA8574/74A 或 PCA9674 这类还在产的型号。
只有分时只开一路时才算解决。复用器是开关不是缓冲器,恩智浦在应用笔记里写明它不提供额外驱动能力,选上拉电阻时上下游负载都要算进去;德州仪器的手册也写了同时打开多个通道时各通道的从器件都会累加到总线电容。规范给的电容上限是标准模式和快速模式各 400pF、快速模式加强版 550pF。
在 24 脚 TSSOP、3.3V 系统里,引脚定义、从机地址(都是 0x70~0x77)、控制寄存器位定义和复位行为都一致,实际可以换。但两家手册都没有声明和对方交叉兼容,而且电源下限(2.3V 对 1.65V)、I/O 耐压(6V 对 5V)和封装阵容确实不同。要配 1.8V 的总线只能用 TCA9548A,PCA9548A 供电下不到那么低。
RS-485 收发器怎么选?本文对比 MAX485、SP3485、THVD1450、SN65HVD3082E 等主流型号的电压、速率、ESD 与节点数差异,并总结终端电阻、偏置、隔离三大抗干扰设计要点。
阅读全文 Read more →小型 PLC、仪表和工业采集板选择模拟量输入方案时,先判断是保留现有主控并增加外置 ADC,还是把采集与控制合并到 MCU。5V 并行旧板维护可继续评估 ADC0804LCN;现有 MCU 有 SPI、需要八路输入时,MCP3008-I/P 更直接;已有 PIC 软件和直插维护体系可看 PIC16F877A-I/P;新做 32 位控制板并希望获得 12 位片内采集,可从 STM32F100C8T6 起步。四条路线的接口、通道和软件基础不同,不属于直接替换关系。
阅读全文 Read more →工控传感器柜里同时出现同地址模块、远端分支和开关量 I/O 时,先判断瓶颈是地址冲突、总线分支还是 I/O 点数。本文以 TI TCA9548APWR 为主,并对照 NXP PCA9548APW、PCF8575TS 与 Microchip MCP23017-E/SP,给出能直接落到原理图和询盘清单的选型路径。
阅读全文 Read more →