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.

[参考译文] DAC8775:数据寄存器读回零

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/673607/dac8775-data-register-reads-back-zero

器件型号:DAC8775
主题中讨论的其他器件: DAC8760DAC8551

在写入 DAC8775 DAC 数据寄存器(地址0x5)之前、除了选择它之外、还有任何特殊的前提条件吗?  无论我写入的值是多少、它都会读回为零。  任何其他寄存器的读回操作与写入操作相同(例如、复位寄存器的 RST 位除外)。
下面是一些伪代码和读回的值:

调用 ANLG_OUT1_RESET
-将 DAC\RESET 引脚切换为低电平、持续62us、然后切换为高电平
-调用 SPI_WRITE_3bytes (0x01、0x00、0x01);//软件复位
调用 ANLG_OUT1_configure; 
调用 ANLG_OUT1_READBACK_RESET_CONFIG_REGISTER;// 0x82 1e 02 调用 ANLG_OUT1_READBACK_STATUS_REGISTER ;// 0x8b 17 80 调用 ANLG_OUT1_bb_select_a 调用 ANLG_OUT1_readback _bb_select_register ;// 0x86 00 01 调用 ANLG_OUT1_READBACK_CONFIG_REGISTER ;// 0x87 02 1f 调用 ANLG_OUT1_DAC_SELECT_A 调用 ANLG_OUT1_READBACK_DAC_SELECT_register;// 0x83 00 20 调用 ANLG_OUT1_READBACK_DAC_CONFIG_REGISTER;// 0x84 90 00 调用 ANLG_OUT1_READBACK_CAL_ENABLE_REGISTER;// 0x88_ANT1_REGISTER ;// 0x89 80 00 调用 ANLG_OUT1_READBACK_ZERO 寄存器 ;// 0x9a 00 00调用 ANLG_OUT1_READBACK_DAC_CONFIG_register;// 0x84 90 00 调用 ANLG_OUT1_DAC_DATA (0x4001);//将0x4001写入 DAC A 调用 ANLG_OUT1_READBACK_DATA_register ;// 0x85 00 00调用 ANLG_OUT1_DAC_DATA (0xc002);//将0xc002写入 DAC A 调用 ANLG_OUT1_READBACK_DATA_register ;// 0x85 00 00

有什么建议吗?

BTW、根据这篇文章、我还尝试配置 DAC 输出、然后按两个步骤启用它
 https://e2e.ti.com/support/data_converters/precision_data_converters/f/73/p/633490/2338051?tisearch=e2e-sitesearch
而不会对结果进行任何更改。

谢谢。
Joe

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

    Joe、您好!

    不需要、写入 DAC 数据寄存器不需要特定的先决条件。 CLR 引脚的状态和 LDAC 引脚的状态是什么? 如果 CLR 被意外地接至高电平、那么所有 DAC 输出将被复位。 此外、为了实现异步操作、LDAC 引脚应该被设定为低电平。

    如果看不到波形捕获、我无法验证函数发送的实际 SPI 数据。 您能否提供"ANLG_OUT1_DAC_DATA"的 SPI 波形捕捉? 此函数或"ANLG_OUT1_READBACK_DATA_REGISTER"可能存在 SPI 传输不正确的问题。 最好的验证方法是在一个示波器捕获上捕获 SCLK、SDIN、SDO 和 SYNC 波形。

    谢谢、

    Garrett

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

    您好、Garrett:
    我将很快捕获一些 SPI 数据。
    CLR 引脚接地。

    此时、SPI 序列为:
     LDAC 为低电平
       (超过100ns)
     SYNC 低电平
     向 SPI 写入3个字节
     SYNC 高电平
      (超过100ns)
     LDAC 为高电平

    3字节 SPI 写回适用于所有其他寄存器。  数据寄存器是否以任何方式唯一?  我认为 LDAC 仅控制何时将数据发送到 DAC 本身。
    谢谢。

    Joe

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

    您好、Garrett:
    在以下屏幕截图中、
    DIN7= SCLK
    DIN6=/SYNC
    DIN5= MOSI
    DIN3= MISO
    主机 SPI 端口时钟极性为"0"、相位为"1"。  这与 DAC8551的工作原理相同(但不适用于 DAC8760!)

    向 DAC8775数据寄存器(地址0x5)写入0xc002的概述

    读回数据寄存器(地址0x85)的概述。  第一条指令是0x85 00 00。  第二条指令是0x00 00 00。  读回值为0x85 00 00


    读回数据寄存器(地址0x85)的扩展视图、前14个 SCLK:

    读回 DAC 选择寄存器;值为0x83 00 20 (DAC'A'):


    读回 DAC 配置寄存器;值为0x84 90 00 (SCLIM= 20mA、HART 关闭、输出启用、转换关闭、范围= 5V):

    谢谢。
    Joe

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

    Joe、您好!

    感谢您提供 SPI 波形。 我检查了他们、并同意您的评估。 您说过您在 SYNC 的上升沿之前将 LDAC 拉为低电平。 在这种情况下、器件应以异步模式运行、并忽略 LDAC 的以下切换。 如果使用异步模式、为什么要切换 LDAC? 我认为这不会导致问题、但您能否始终尝试保持 LDAC 引脚为低电平?

    此外、为了确保配置中没有任何错误、请尝试使用最小命令来读取和写入 DAC 数据寄存器。

    1.复位

    2.写入以选择 DAC 寄存器

    3.写入 DAC 数据寄存器

    4、从 DAC 数据寄存器读取

    如果这起作用、我们可以调试您的配置设置所发生的情况。 我建议尝试同时将 LDAC 保持在低电平。

    谢谢、
    Garrett

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

    您是否有 DAC 数据寄存器读回问题的更新? 您是否使用最小命令来隔离前面所述的问题?

    谢谢、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Garrett。 一旦我确认可以让 DAC 以最小异步模式工作、我就让它们以同步模式工作。 我怀疑复位配置使 DAC 数据寄存器保持为零值。
    Joe