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.

[参考译文] ADS1232:ADS1232

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1161705/ads1232-ads1232

器件型号:ADS1232

先生,你好。

 SCLK 高电平到 SCLK 低电平之间的确切延迟是多少、以在不丢失任何位的情况下获取所有24位 ADC 数据

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

    您好、Balaganesh R、

    欢迎来到 E2E 论坛!  我不确定您需要什么信息、但您是否查看了 ADS1232数据表以及第8.3.11和8.3.12节中的信息?  在第8.3.11节中、建议 SCLK 信号的上升时间和下降时间小于50ns。  还有一个时序图图、图8-9显示 SCLK 的高电平和低电平时间必须至少为100ns。  在50%占空比(等于高电平和低电平时间)下、最大 SCLK 频率为5MHz (1/200ns)。

    所有24位数据都必须在转换完成后、但在下一次转换完成之前从 ADC 中读取、否则在读取结果时可能会发生数据损坏。

    我希望这能回答你的问题。  如果不是、请具体提供您需要了解的内容的更多详细信息。

    此致、

    Bob B

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

    谢谢主席先生;

        主席先生、正如你告诉我的那样、我已经尝试 SCLK 高到低2mSec 的延迟、也尝试低到高的延迟。 但我在相同的模拟电压下获得了各种 ADC 结果。 我无法获得稳定的结果。  

    长 ADS1232_read (bool 校准)

    long int 值= 0;
    int i=0;
    unsigned int waitingtime = 0;

    delay_ms (801);//需要801ms 延迟

    while ((Porta.in 和(PIN5_BM)));           //等待数据就绪


    //读取24位,但第24位是符号位
    for (i=0;i < 24;i++)

           PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
           delay_ms (2);
           if (((Porta.in 和(PIN5_BM))))
           {
                值=(值<< 1)+ 1;
            }
            if (!(Porta.in 和(PIN5_BM))))
            {
                值=(值<< 1)+ 0;
            }
            PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
            delay_ms (2);


    if (校准)

    for (i=1;i >=0;i---)         //用于校准的2个额外位

    PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
    delay_ms (2);
    PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
    delay_ms (2);



    /*位23是符号位。 将其移动8以使其到达
    *右侧位置(31)、除以256以恢复正确的值。
    *
    值=(值<< 8)/256;

    if (!校准)

    PORTA.TERINITEM= PIN6_BM;//_SCLK、高电平
    delay_ms (2);
    PORTA.OUTCLR = PIN6_BM;//_SCLK、低电平
    delay_ms (2);

    返回值;

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

    您好、Balaganesh R、

    它从代码中显示、您正在使用位 bang 类型解决方案来检索数据。  我在您的代码中看到了一些可能导致问题的东西。

    • 在函数顶部、您会显示801ms 的所需延迟。  只有在发出校准序列时才会发生此延迟。  无需为您的代码添加延迟。  延迟将在 ADC 内部发生、当请求校准时、延迟将在从器件读取数据后发生。  当26个或更多 SCLK 设置到 ADC 时、校准例程将启动、并强制 DRDY/DOUT 为高电平、当 DRDY/DOUT 转换为低电平时、ADC 将提供有效数据。
    • 您轮询 DRDY/DOUT 以了解低电平状态、但先前结果的 LSB 可能是高电平或低电平。  如果它已经为低电平、则轮询条件将看到 DRDY/DOUT 为低电平、并且由于下一次转换尚未完成、将看到不正确的结果。  因此、当使用轮询方法确定转换结束时、您需要使用24个 SCLK 读取之前的转换结果并再发送一个 SCLK 以强制 DRDY/DOUT 为高电平。  因此、在读取转换数据时、您总共应发送25个 SCLK、如果您希望校准、则发送26个 SCLK。
    • 为了在主处理代码循环中实现更长的处理延迟、您可能应该使用更快的 SCLK。  4ms 周期(2ms 高电平+ 2ms 低电平)是一个非常慢的时钟(250Hz)。  我建议尝试一个4us 周期(2us 高电平+ 2us 低电平)和250kHz 的更快时钟。

    此致、

    Bob B