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:通信问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1207750/dac81404-communication-issue

器件型号:DAC81404

我想测试数字接口(SPI) tw MCU/STMF411和81404。

确保 SPI 按预期工作的一种方法是从其中读取器件 ID。

根据数据表、读取寄存 器值需要两个通信周期、前提是 SPIC75寄存器中的 SDO-EN 位已置位、我就是这么做的。

以下是读取器件 ID 的代码:

  a_SPI2_RxBuf[0] = 0;
  a_SPI2_RxBuf[1] = 0;
  a_SPI2_RxBuf[2] = 0;
  /* 1st cycle to send read command */
  // Device ID Reg Address: 0x01; highest bit 1 for reading.
  a_SPI2_TxBuf[0] = 0x80 + 0x01;

  Dac81404_CS_Low();

  ... // SPI DMA code to tx/rx 3 bytes
  
  Dac81404_CS_High();

  /* 2nd cycle to receive */
  Dac81404_CS_Low();

  ... // SPI DMA code to tx/rx 3 bytes

  Dac81404_CS_High();

我的问题是3个接收字节不符合预期:应为 0x81、0x0A60 (0x0298 << 2)。

我得到的是:0x40、0x8538。

我的 SPI 代码运行良好、因为我很长时间以来一直设法使用它来改变电压输出。

我最近才想使用接收功能。

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

    您好、

    Akhilesh 将能够审核此内容。

    如果您可以共享两条 SPI 命令的示波器屏幕截图、其中包括 CS、SCLK、SDI 和 SDO。 线路12和15之间是否存在 CS 从高电平切换到低电平的延迟?  

    此致!

    Katlynne Jones

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

    线路12和14无延迟。

    我制造了 PCB 板、其中连接了 MCU 和81404、但这些引脚未组装。

    正如我提到过的、我已经使用 PCB 板将近一年了、并且使用固件来调整81404电压输出没有问题。

    这种回读工作的优先级低。

    您是否能够确认我的编码逻辑正确?

    昨天我做了一个测试:把一个延迟约1us tw 行12和14,结果是相同的。

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

    您好、

    看起来您的数据在回读时移动了1位。  这通常是由 SPI 总线中的时钟极性或相位设置错误引起的。  当这种情况发生时、您有时仍然可以获得写入或读取命令来工作。  我建议您确认 PHA 和 POL 设置的 SPI 模式。  您还可以使用范围来快速检查格式是否符合 DAC 要求。

    谢谢

    保罗

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

    您好、Paul、

    THX 表示信息。

    原因很可能是 SPI 模式。

    请允许我留出一些时间来验证。

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

    我刚刚做了一个测试:将  SPIC13x 更 改为0x60、原来是0x40、使得 FSDO = 1、即 SDO 在 SCLK 下降沿更新。

    我没有更改 MCU SPI 模式。

    我收到的是0xC08530、它是(0x810A60 >> 1)+ 0x800000、现在非常接近。

    数据表未提及 PHA 和 POL 应该是什么、对吗?

    它仅提及 SCLK 下降沿上的 SDIN 时钟数据、而 SDO 可通过 FSDO 位进行配置。

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

    我建议您使用示波器或逻辑分析仪确认您的时钟格式符合我们的时序要求。  MCU 的文档可能会显示4种可能的组合。  如果没有范围、我建议您只尝试全部组合、看看您得到的是不是正确的响应。  仅当两个设置中的一个正确时、更改 FSDO 状态才会修复该问题。

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

    我曾尝试更改过其中一个 SPI 设置;我收到的数据是0x810A70、我认为是正确的。

    因此、81404芯片的器件 ID 为0x029C、而不是0x0298。