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.

[参考译文] DAC81404:无法通过 SPI 从 DAC81404 读回。 DAC81404's SDO 悬空

Guru**** 2945740 points

Other Parts Discussed in Thread: DAC81404

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1655070/dac81404-unable-to-read-back-from-dac81404-through-spi-dac81404-s-sdo-gives-float

器件型号: DAC81404

尊敬的 TI 支持团队:  

我目前正在处理 DAC81404 的一个问题。 我无法在 ARM 板和 DAC81404 之间建立通信。 您能否帮助我确认此 DAC 的正确 SPI 模式? 图(图 7-1)显示 SCLK 低电平空闲、数据在下降沿捕获、此 CPOL=0、CPHA=1(模式 1)吗? 第一次读取寄存器有效之前所需的最低初始化序列是多少? 具体来说:是否需要软复位、是否必须先清除 DEV-PWDWN、然后 SDO 才能驱动回任何数据?

 

感谢您发送编修

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

    Pisit、

    对于 DAC81404、需要在从器件读取数据之前启用 SDO。 SPICONFIG 寄存器(寄存器 0x03、位 2)中有一个 SDO-EN 位。 将此位设置为 1、可使 SDO 正常工作。  

    以下是数据表中的一个剪辑:

    同样、设置此位后、SDO 应正常运行。 请告诉我这是否适合您。

    Joseph Wu  

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

    感谢您的答复。

    我会尝试一下。 但我也找到了一种方法让它知道响应、但出于某种原因、它没有在寄存器中给出正确的值。 例如、我发送的 0x81000000 应该被读取到器件 ID、它给了我 800A7000、而不是 810A6000。 读取的内容似乎无关紧要、但没有提供要读取的寄存器地址。 但当我读取 SPICONFIG 时、它会返回正确的位 800AA400(32 位)、但寄存器的地址应为 0x03 或 830AA400 除外

    此外、因为我遇到了一些硬件设计问题。 基本上、我的 SPI 的每个事务都是 32 位而不是 24 位。 如果是这种情况、我将如何构建 TX 缓冲区? 我不想启用 CRC 模式

    )

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

    嗨、Pisit、

    SPI 帧结构不正常、我建议您先修复这个问题。 如果 CRC 模式未开启、则需要使用正确的 24 位帧进行写入/读取。  
    同时、我将检查是否可以使用 32 位帧在没有 CRC 模式的情况下执行读取/写入操作。

    谢谢、

    Sanjay

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

    好的、谢谢。  

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

    由于我的设计,我只能发送 32 位每帧,我想知道我应该如何构建我的帧。 数据表中提到、如果数据长于最小时钟 (24)、它将只读取 24 个 MSB。

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

    您是否能够使用 32 位对其进行测试?

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

    对于正常默认模式、是否需要 LDAC 正确?

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

    嗨、Pisit、

    您可以通过在 LSB 侧填充零来将 24 位数据作为 32 位数据发送。 例如:对于 24 位写入/读取数据 0x890012、等效 32 位数据为 0x89001200。  

    是的、默认运行模式不需要 LDAC(引脚应拉至零/GND)。  

    谢谢、
    Sanjay   

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

    感谢您的信赖。 但为什么 DAC 的 SDO 持续输出不正确的格式数据? 我的 SPI'时钟速度为 2.5MHz、我将模式设置为模式 1、CPOL = 0、CPHA = 1。 当我尝试写入一个寄存器(如 SPICONFIG)时、我看到了  

    0x030A9400;该寄存器的值本应更改为 0A94、但卡在相同的默认值 0AA4。

    您能给我讲一讲如何与此 DAC 进行交互的示例或顺序吗? 数据帧设置示例或主器件端的 SPI 配置。



    这是示波器上的照片
    我发送的是 0x81000000、但收到的是 800A7000、而不是 810A6000
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还按照您的指令填充了 00 LSB 的帧,但它不工作。 写入操作根本不起作用。

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

    嗨、Pisit、

    正如我在其他 e2e 主题中建议的那样、请建议时间调试问题(我也已发送相关邮件)。

    谢谢、
    Sanjay