工具与软件:
我将使用此部件提出新设计、我在 I2C 通信和长期 TI 客户方面具有丰富的经验。
对16位寄存器的 I2C 写入似乎在芯片上实现错误、我想知道是否有其他人有任何问题?
例如、我看到、在第一个充电电流寄存器上、地址为0x02。 为了成功写入该寄存器、我需要实际写入地址0x03甚至陌生人、第一次写入时它只设置一个字节、第二次写入时它设置两个字节(即使我发送了多字节写入并且实际上完全重复相同的地址和数据、因此即使我错误、第二次尝试也会失败)。
从该寄存器读取正常工作、从0x02读取的两个字节将返回预期结果。
我已验证的内容:
1) 1) I2C 的计时出色、运行频率仅为100kHz、波形清晰、干净且计时准确。
2)地址和数据以及适当的写入位、ACK 等都就位。
3)第一次写入时发送的信号和第二次写入时相同,我可以将其覆盖在示波器上。
4) 4)要写入的寄存器和字节正确(可特别在充电电流寄存器上进行验证、因为当看门狗超时、两个字节都将以明确定义的方式发生变化、电流设置将被除以2、因此我可以验证我是否同时写入了一个值和读取了一个正确的值)。
5)单字节(8位)寄存器正常工作。
如果您有任何关于其他方面的建议或指导、我们将不胜感激。
主机是 RP2040。
上拉电阻为4.7k Ω
我正在使用 RP2040的内置 I2C 硬件和标准的 micropython 库,这些可以与其他 I2C 外设完美地工作。