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.

[参考译文] ADS8665:写作(和9位地址)

Guru**** 2466550 points


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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1362820/ads8665-writecommands-and-9-bit-address

器件型号:ADS8665

首次使用此器件。

我正在使用数据表版本 SBAS780B–2016年12月–2021年3月修订

数据表中有几项内容似乎不匹配(我找不到勘误表)。

首先 ,在第41页(输入命令字和寄存器写入操作)中,对于每个命令,它表示:

这表明、如果我要读取(或写入)寄存器地址0x04 -我将寄存器地址左移1位(从0b0000 0100到0b0000 1000)、ADC 将忽略最低有效位并将其读取为0b0000 0100 (即0x04)。

但注释1中指出:

这表明最高有效字节被忽略、而不是最低有效字节(因此我们不需要左移地址)。

哪个部分是正确的?

第二 ,在 同一页/表上,有三个写入命令:

每个寄存器为32位(该 ADC 为1个字)。

所有这些命令为半字命令、即写入16位命令。

但是,这些命令似乎都没有提供一种方法来选择你正在切换到上部(MS)半字或下部(LS)半字。

  • 11010_00_< 9位地址>_< 16位数据>
    • 半字写入命令(两个字节的输入数据被写入指定的地址)。
      • 这是写入上部(MS)半字还是下部(LS)半字?
  • 11010_01_< 9位地址>_< 16位数据>
    • 使用此命令时、只会在指定寄存器地址写入16位数据字的 MS 字节。 LS 字节被忽略
      • 这表明 ADC 仅关注<16位数据>中的低(LS) 8位。
      • 这是写入 上部(MS)半字还是下部(LS)半字?
  • 11010_10_< 9位地址>_< 16位数据>
    • 使用此命令时、仅在指定的寄存器地址写入16位数据字的 LS 字节。 MS 字节被忽略
      • 这表明 ADC 仅关注 <16位数据>中的高(MS) 8位
      • 这是写入 上部(MS)半字还是下部(LS)半字?

我缺少什么吗-如何选择写入 ADC 寄存器的高(MS) 16位或低(LS) 16位?

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

    尊敬的 Ben:

    感谢您的提问。 让我来深入了解一下、尽快与您联系。

    此致!
    萨米哈

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

    Samiha,
    您是否能够获得此问题的答案?

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

    尊敬的 Ben:

    感谢您的耐心等待。  

    对于9位地址、根据注释(1)、MSB 将始终为0。 此外、地址只能是偶数、因此忽略 LSB、因为它始终为0。 因此、9位地址格式为:

    • 位8 = 0
    • 位[7:0]=偶数编号地址、其中位0始终为0。

    感谢您的反馈! 我们将在下一个数据表修订版中编辑文本、以便更好地对此进行说明。

    对于3个写入命令问题:

    尽管整个寄存器为32位、但 写入命令的前7位预定义为 11010_xx、接下来的9位是地址、因此您可能写入的实际数据只有16位。  

    • 第一个写入命令实际上写入了数据的所有16位。
    • 第二个写入命令忽略 LS 字节、仅写入 MS 字节。
    • 第三个写入命令忽略 MS 字节、仅写入 LS 字节。

    因此、假设您始终写入所有16位数据、您只需要使用第一个写入命令、寄存器的前16位为:1101000<9位地址>。

    希望这对您有所帮助。

    此致、

    萨米哈

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

    写入命令对我来说仍然没有太大意义。

    假设我要向地址0x24 (0b0010 0100)处的 ALARM_H_TH_REG 寄存器写入数据。

    假设我要将0xFF 放入 INP_ALRM_HYST 中、将0x00FF 放入 INP_ALRM_HIGH_TH 中。

    如果我一次只能写入16位、我将必须进行两次写入。

    • 9位地址>将为0x024 (0b0 0010 0100)
    • 16-位 data>将在本例中为0x00FF (0b 0000 0000 1111 1111)

    那么、我如何选择要写入寄存器的哪个部分?

    (即、因为我们一次只能写入8或16位-我们需要一种方法来选择在32位寄存器中的哪个位置写入8或16位。)

    是否有示例? 这或许可以帮助我站在这个立场。

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

    尊敬的 Ben:

    您必须将一个16位数据写入命令写入地址26h 以设置  INP_ALRM_HYST、并且将另一个16位数据写入命令写入24h 以设置 INP_ALRM_HIGH_TH。 您无法写入25h 或27h、因为地址必须是偶数。

    例如、若要在  INP_ALRM_HYST 中设置0xFF、可以执行以下操作:

    1101000 0 0010 0110 < 9位地址26h>1111 1111 0000 0000

    并重复使用地址24h 以 在 INP_ALRM_HIGH_TH 中设置00FF。

    希望是有意义的。

    此致、

    萨米哈