您好!
我在使用 TCA6408A 时遇到了一个奇怪的问题。 根据数据表、我了解在加电时、器件会将所有 IO 配置为输入。 输出寄存器的默认值为全1 (0xFF)。 我要做的是通过写入输出寄存器将输出配置为全0 (0x00)、我希望所有 IO 都是输出(使用方向寄存器)。 我已经成功实现了所有这些功能、 我发现、即使我先将输出寄存器设置为(0x00)、然后将方向寄存器设置所有 IO 写入输出-我仍然会在所有 IO 上看到100us 的电流、这些 IO 变为高电平。 似乎 TCA6408A 忽略了接收 I2C 写入的顺序、接下来将设置输出方向、然后将我的0x00值应用于输出寄存器。
我已经能够解决这个问题、方法是先将0x00写入输出寄存器、然后对输入寄存器执行"虚拟"读取(只是引入一些延迟)、最后写入方向寄存器以将所有 IO 配置为输出。
我的问题:为什么我需要介绍写入输出寄存器和写入方向寄存器之间的延迟、以便部件在方向开关时实际将我想要的值输出到 IO 线路上? 读取输入寄存器的延迟是否保证有足够的时间来确保输出寄存器在我将所有 IO 切换到输出时保持稳定?


