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.

[参考译文] DAC80504:SPI 配置

Guru**** 2815985 points

Other Parts Discussed in Thread: DAC80504

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1627078/dac80504-spi-configuration

器件型号: DAC80504

您好、

我阅读关于 DAC80504 SPI 写入/读取操作的文章:
https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/956441/dac80504-dac-80504-interfacing-problem-with-tm4c129encpdt-using-spi

不过、一些时序仍然不明确、

1) 对于写入操作、数据表中所述的 SPI 似乎是 CPOL=0、CPHA=1 和 CPOL=1、CPHA=0 的 hybride。
在 CS FALLING_EDGE 之前是否必须至少 7ns 将 SCLK 设置为“0"?“?
“tCSIGNORE = SCLK 下降沿到 CS 忽略“:我不理解与数据表的图 62 相关的定义的含义。
Figure62.png

也可以如下所示(例如将数据 0xFF00 写入地址 0x02。
SPI_WRITE_02_FF00.png

CS 为低电平时的第一个 SCLK 边沿是 FALLING_EDGE?


2) 对于读取操作:在图 63 中,在图的第二部分“任何命令“过程中,我们看到 SCLK 似乎已经在 CS falling_edge 之后的“0"处“处,但是 tCSIGNORE 的时间是相同的。

Figure63.png

因此、在读取过程第二部分看到的第一个边沿是 RISING_EDGE(对于数据更新[请参阅 CONFIG Register 中的 FSDO =“0"]“])?

也可以如下所示(例如读取地址 0x01)。

SPI_READ_01.png

此致、
Antoine

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

    Antoine、


    我与一位设计师就您的问题进行了检查、我找到了几个答案。

    tCSIGNORE 用于确保靠近/CS 下降沿的 SCLK 下降沿不会误认为是第一个 SCLK 下降沿。 /CS 和 SCLK 都有一些内部时序、如果两条线几乎重合、则可能会导致问题。 您需要确保 SCLK 上升大于此时序值。

    2.当然,图不是很清楚你的观点。 快速答案是肯定的、您可以按照描述的方式设置读取:

    SPI_READ_01.png

    当/CS 变为低电平时、当 SCLK 为高电平时、SDO 引脚上会出现位 23。 因此、如果在/CS 变为低电平时 SCLK 为高电平、则当/CS 变为低电平时、数据将出现在 SDO 上。 读取应在前一帧的最后一个 SCLK 下降沿有效。


    Joseph Wu

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

    您好、Joseph:

    感谢您的答复、

    我不确定您对第 1 点的回答是否充分理解。
    我将尝试 解释 我如何理解你的解释,你能验证/取消验证理解?

    当/CS 信号为高电平时、SCLK 可以是任何状态、但是在/CS 下降沿之前、 IF 发生 SCLK 的下降沿时、它在/CS 的下降沿之前必须至少有 7ns (tCSIGNORE)、才不会被视为 SPI 事务的第一个下降沿(红色箭头)。 这样可以正确检测/CS il 处于低电平时的第一个 SCLK(绿色箭头)。

    此致、
    Antoine

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

    您好、Joseph:
    我忘了精确地将 CONFIG 寄存器中的 FSDO 配置设置为“0"。“。


    因此,我也想检查这个解决方案是否可行:  
    写入:SCLK 在 IDLE 和中为低电平 第一个上升沿被 DAC80504 忽略?

    阅读:在第一部分(与写的原则相同: SCLK 是低在空闲和  第一个上升沿被 DAC80504 忽略?)
    在第二部分中、 DAC80504 看到的第一个边沿是上升沿、这种方式遵守 FSDO 的图 63

    此致、
    Antoine

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

    Antoine、


    是的、我认为您正确描述了它、但我确实更改了您的图表。 SCLK 的下降沿应在/CS 的下降沿之前至少为 7ns。 为了防止/CS 和 SCLK 之间出现任何竞态条件、需要进行该时序。 该图应如下所示:

    对于以下 POST、FSD0=0 且 SCLK 在空闲时为低电平、此方法很适用。 不过、器件不会忽略上升沿。 当 SCLK 上升为高电平时、SDO 上会显示输出数据。 如果 SCLK 处于空闲高电平、则当/CS 变为低电平时、数据会出现在 SDO 上。 SCLK 为高电平会立即将数据设置在 SDO 上。


    Joseph Wu

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

    您好、Joseph:

    感谢您更正我的 图表、我完全同意您在这一点上的看法。

    第二次答复的第二次答复、我认为我们也同意。 为了精确起见、我想说(FSD0=0 且 SCLK 在空闲时处于低电平)、第一个事务部分(命令)中的第一个 RISING_EDGE 对 SDI 上 R/W 命令位的检测没有影响、因此对 SCLK 上的第一个下降沿没有影响。

    目前、我没有用于测试驱动程序的硬件平台、您建议我将该主题保留为打开状态(在测试过程中出现问题时)还是关闭该主题(因为这解决了我的问题,稍后可能会重新打开)?

    此致、
    Antoine

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

    Antoine、

    是的、我认为我们对 SPI 的工作原理是一致的。  

    我将关闭该主题。 如果出现问题、您可以自由打开一个新主题、因为主题可能会有所不同。 如果你想添加一些东西到这个特定的线程,有一个相当长的时间之前,它被锁定。  

    同样、如果您提出其他问题、请随时发布。

    Joseph Wu