我正在尝试将代码从 ROHM BU21025GUL 移植到 TSC2007。
该代码适用于 BU21025GUL (获取 ACK)、 但出于某种原因(即使 TSC2007看起来使用相同的代码)、I2C 命令也会收到 NACK -特别是在我发送安装命令时、根据数据表、TSC2007应该在我发送0xB0后发送一个 ACK、但它会发送一个 NACK?

我是否会误解 TSC2007的规格? (如前所述、此相同命令从 ROHM 部分获取 ACK)。

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在尝试将代码从 ROHM BU21025GUL 移植到 TSC2007。
该代码适用于 BU21025GUL (获取 ACK)、 但出于某种原因(即使 TSC2007看起来使用相同的代码)、I2C 命令也会收到 NACK -特别是在我发送安装命令时、根据数据表、TSC2007应该在我发送0xB0后发送一个 ACK、但它会发送一个 NACK?

我是否会误解 TSC2007的规格? (如前所述、此相同命令从 ROHM 部分获取 ACK)。

I2C 速度为100kHz。
I2C 线路 SDA 和 SDL 通过2k Ω 电阻器上拉至2.8V。
附加的是原理图中触控控制器的部分。
如前所述、BU21025GUL 使用 ACK 进行响应、因此我倾向于相信原理图是可以的、除非有特定于 TSC2007的东西、尽管我认为这两个芯片应该可以互换...
(我想我看到了一些地方-也许 Arduino 论坛-用户在他们写了 TSC2007后添加了一个"假"读取字节,但这听起来有点奇怪,不?)

我在原理图中未在 SDA 和 SCL 线路上看到上拉电阻器。 我建议证实这一点的存在。
此外、请 为地址字节获取 SDA 和 SCL 的示波器快照、以确认信号是否正确。
如果器件没有获得正确的电源关断和启动顺序、则有时器件不会对 I2C 做出响应。 请确认 VDD 引脚的行为。 尝试从 VDD 引脚下拉10k Ω 电阻器到 GND 并为芯片上电、查看是否能对 I2C 做出响应

感谢 Sanjay 的帮助、
是的、SDA/SCL 线通过2k Ω 电阻上拉、它们只是原理图的另一个部分、因为我们在该电路板上有许多不相关的东西。

至于 VDD 斜升/斜降-以下是我们的斜升/斜降:


不确定我是否遵循了要求-这是否意味着我们需要减慢 VDD 开启速度以便 TSC2007的 I2C 正常工作?
获取 I2C 设置命令的范围快照。
您能否再次确认、我在上面的原始帖子中发送的命令应该会获得一个 ACK (如所示、我不 应该进行任何虚拟读取或类似操作、对吧?)
再次感谢
这有点难看、但这就是它的作用:
MCU 启用 i2c、其中 将 SDA/SCL 设置为高电平(在红色箭头后面)、然后 SCL 开始计时并启动数据。
在 SCL 为高电平时、您可以在 SDA 上的高电平到低电平转换之前看到 SDA 和 SCL 均为高电平、然后通过线缆发送0x90 (TSC2007地址)。
因此您可以看到1、0、1 _ 0、0、0、0
然后 TSC2007以此处的 ACK 进行响应(SDA 在第9个时钟周期为低电平)。
这将与初始 POST 保持一致:地址0x90通过线路发送、而 TSC2007 ACK 包含该地址。
它只对之后发送的0xB0进行 NACK。。
尊敬的 Sanjay:
右侧-读取位置和其他一切工作正常、只是不是设置命令...
我正在寻找一个可以发送到 TSC2007的命令、该命令基本上是一个 NOP (不强制执行操作)、但让我知道 I2C 在理想情况下启动时是有效的...
是否不将 setup 命令用作标准启动顺序?
或者、如果您这样做-实际的位序列是什么/您是否在那里的正常工作的板上具有用于启动/设置的 I2C 流量的 DLA 快照?