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.

[参考译文] ADS131A04:为什么启用ADC通道后F_frame出现故障?

Guru**** 2539500 points
Other Parts Discussed in Thread: ADS131A04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/622713/ads131a04-why-does-f_frame-fault-appear-after-enabling-adc-channels

部件号:ADS131A04

您好! 我正在使用MSP432与ADS131A04 ADC进行通信,使用32位字,1MHz SPI时钟。

问题是在我启用ADC通道(在0x0F寄存器中)后,我得到STAT1 = 0x2220 (表示SPI有故障),而当读取STAT_S时,我得到了0x2501,这是 F_frame故障。 我已尝试通过读取STAT_S多次清除位,但无法清除。 只有在我禁用ADC信道并读取STAT_S之后,该位才会清除

我提到我正在使用相同的读/写功能,因此不应该存在与SCLK不足相关的任何问题。 此外,即使设置了F_Frame,我也能够成功地读取/写入ADC的寄存器。 我附上了逻辑分析仪捕获,以便您查看(您需要 Saleae Logic软件 才能打开它;它可以免费下载)。


这是正常现象吗? 如果不是,为什么仅在启用ADC信道时才设置F_frame?

e2e.ti.com/.../8-MHz_2C00_-80-M-Samples.zip

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

    如何在ADS131A04器件上配置M1引脚? D_SYS_CFG寄存器的寄存器内容是什么? 在您的屏幕捕获中,我怀疑'Spi-enable'线连接到ADS131A04的芯片选择引脚,对吗? 如果您查看9.5 部分,数据帧由多个数据字组成,这些数据字是通过芯片选择进行框架,看起来您在每个数据字之间采用/CS高。 您能否在整个数据帧传输过程中保持/CS低电平并让我们知道这是否清除了F_frame错误?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Tom,

    M1 = 1,所以我使用32位字。

    D_SYS_CFG = 0x3C (默认值)。
    我在D_SYS_CFG中看到FIXED =0表示“每个数据帧的设备字取决于是否启用CRC和ADC”。 这在某种程度上解释了为什么只有在启用ADC时才会出现此行为,但由于CRC已禁用,因此不应影响我。 在写入后检查寄存器值时,是否需要在启用ADC后写入5个字节?

    ADC CS (引脚23)连接到MSP432 CS引脚。

    目前,每个数据帧都是由CS构成的(即,使CS低,传输4字节,使CS高)。 在这种情况下,错误是否应该更早出现,而不仅仅是在我启用ADC后出现?

    您是否建议采用CS low (低CS),transmit 8 bytes (传输8字节),然后采用CS high (高CS)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Christian:

    继续向下阅读第9.5 节并查看图51,当启用CRC时,数据帧中还有一个附加词。 但您仍必须考虑启用的ADC信道。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,但我不理解。 在我的案例中,CRC被禁用。 我尝试用5或6个字节进行写入和读取,到目前为止,我仍然遇到帧错误。 我有何误解?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已完成以下测试:读取ADC_ENA寄存器,写入ADC_ENA寄存器以启用通道,读取STAT_S寄存器。 我已连接了逻辑分析仪捕获。

    启用信道后,我尝试读取4,5,6 (当前案例),8,10字节, 但它始终返回0x2220 (F_frame fault)。 根据数据表中的图51,它应该可以处理5个字节(我使用的是禁用CRC的动态帧大小)。

    是否有人知道如何与此ADC正确通信?

    e2e.ti.com/.../8-MHz_2C00_-160-M-Samples.zip

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

    您好Cristian:

    Tom目前正在度假,因此我将在此期间为您提供帮助。

    我相信您会混淆术语"字节"和"单词"。 当然,一个字节由8位组成。 但是,您已选择使用32位(M1 =1)的单词大小,该大小等于4个字节。 每个命令,通道数据或CRC输出都将使用相同的字长度(4字节)。

    假设您已启用所有4个ADC以及CRC。 如图51所示,DOUT上的每个框中将显示6个单词。 这些字词对应于命令状态,信道1,信道2,信道3,信道4, 和CRC。 因此,单个帧将由192位或24字节组成。 您需要在整个帧中保持/CS低电平,才能正确读取数据。

    在动态帧大小(D_SYS_CFG[1]=0)中,如果通道数据和CRC被禁用,则可以从帧中删除它们。 图50和51 b)和d)中显示了这一点。

    此致,

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

    是的,您说得对。 我使用了20字节来读取样本值(我已禁用CRC),但忘记了在启用ADC信道后必须立即读取20字节。 现在工作正常。 谢谢!