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.

[参考译文] LMH0318:通过 I2C 读取寄存器

Guru**** 2387830 points
Other Parts Discussed in Thread: LMH0318, LMH1219, LMH1218, LMH1297
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1020898/lmh0318-reading-regs-via-i2c

器件型号:LMH0318
主题中讨论的其他器件: LMH1219LMH1218LMH1297

Hallo、

我对使用 I2C/SMBus 读取寄存器感到困惑。

读取 SNLU183、我发现对寄存器的写入应使用以下协议:

|RAW |寄存器地址|寄存器内容|寄存器掩码|

因此使用以下符号

S                         启动条件
P                         停止条件
RD/WR (1位)       读/写位。 Rd 等于1、WR 等于0。
A、NA (1位)       确认(ACK)和不确认(NACK)位
DevAddr (7位) I2C 7位地址。 请注意、这可以照常扩展以获取10位 I2C 地址。
[..]                          I2C 器件发送的数据、而不是主机适配器发送的数据。

要写入寄存器、我会生成以下 I2C 序列:

S DevAddr WR [A]寄存器地址[A]寄存器内容[A]寄存器掩码[A] P

它按预期工作(我使用 的是 SNLU183中提供的事务)。

如果我想从寄存器中读取数据、我无法确定如何转换 SNLU183中提供的协议

|RAR |寄存器地址|寄存器内容|寄存器掩码|

I2C/SMBus 事务。

有人可以帮助我使用我用于描述写事务的 I2C 符号吗?

提前感谢

此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请单击下面详细描述原始格式的链接:

    https://e2e.ti.com/support/interface-group/interface/f/interface-forum/897323/faq-lmh1297-programming-raw-command-syntax-explained/3317304#3317304

    此致、、Nasser

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hallo Nasser、

    感谢您的回答。

    不幸的是、您提供的链接没有回答问题。

    我请求 I2C 事务的详细信息来读取寄存器。

    该链接仅讨论写入事务、不提供任何 I2C 详细信息。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很高兴您能够执行写入操作。

    要执行读取操作、您将使用与写入相同的格式、但掩码为0x00。

    此致、、Nasser

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hallo Nasser、

    很遗憾、您的建议仍然无法解决问题。

    例如、我尝试写入并回读 OUT0_VOD 通道寄存器(地址0x80)上的写入值、但无法回读先前写入的数据。

    这是已发行的交易:

    RAW FF 04          //选择通道寄存器
    RAW 80 60 F0         //将 OUT0_VOD 寄存器写入0x60

    RAW FF 04          //选择通道寄存器

    RAR 80 FF 00         //读取 OUT0_VOD 寄存器

    当我读取时、我得到0x80 (我本来希望得到0x60)。

    就 SPI 字符而言、读取事务不采用这种方式:

    S DevAddr WR [A]寄存器地址[A]寄存器内容[A]寄存器掩码[A] P S DevAddr WR [A][寄存器内容] nA

    实时数据

    S 0x19 WR [A] 0x80 [A] 0xFF [A] 0x00 [A] P S 0x19 WR [A][0x80] nA

    请参阅随附的捕获交易:

    i2c read transaction

    如果您可以发送 I2C 读取事务的详细信息、我相信我们可以成功地关闭此主题。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面是最后一个事务的缩放:

    如果您需要其他详细信息或测试、请告诉我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还尝试不同的 I2C 事务类型、可能更多的内容与 SNLS508第20页的内容内联。

    这一次我返回0xFF、同样是错误的值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Guiseppe、您好!

    1)。 有关 SMBus 读取操作的详细信息、请注意 LMH0318图6。 请注意、在"虚拟写入"之后、我们开始使用器件地址、然后将读取位设置为高电平。 观察您的波形、我不确定读取位是否设置为高电平。 请查看。

    2)。 所有 SDI 部件 SMBus 操作遵循相同的协议。 您可以获取用于 LMH1218、LMH1219或 LMH1297的评估板之一并执行读取操作。 或者、您也可以使用第三方工具执行读取操作、以比较您的示波器屏幕截图与此第三方软件/工具。

    此致、、Nasser