我正在使用连接到80C51 (Atmel AT89C51AC3) uC 的 TCA9535 IO 扩展器部件。
所有端口0以及端口1的引脚3和4均为输入(一个旋转开关、4个 DIP 开关和2个按钮)。
我认为我已将端口1的引脚0、1和2配置为输出、因为我能够根据需要驱动这些线路。
端口1的引脚5、6和7未使用、已被拉至接地。
我可以看到、当我修改开关/按钮时、器件上的引脚上的输入正在变化。 但是、当我尝试读取任何内容时、我将获得全为1。
我还会得到所有1的读取 极性反转寄存器(我尚未修改、因此默认情况下预期它们为0)和端口1的配置寄存器(我已修改为0xf8甚至0x18)。
尽管我对 UC 上的 I2C 实施非常有信心、但我肯定会出错。 使用逻辑分析仪观察 SCL/SDA 线路、一切看起来都很好/很有道理。
我们以5V 的电压运行所有器件、并具有4.7K 欧姆的电阻器上拉 SCL 和 SDA。 考虑到 TCA9535器件无法将数据线拉至低电平、我们在数据线上放置了一个47k 欧姆的电阻器、但没有发现任何差异。 如果这是问题、则该部件可能无法在需要时将时钟保持在低电平以拉伸、但我们尚未进行此更改。
如果对我可能做得不正确或做得更进一步的实验有任何想法、我们将不胜感激。
谢谢!
Tim