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.

[参考译文] ADS124S08EVM:ADS124S08 EVM 中存在数据收集问题

Guru**** 2582405 points
Other Parts Discussed in Thread: ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/820656/ads124s08evm-data-collection-problem-in-ads124s08-evm

器件型号:ADS124S08EVM
主题中讨论的其他器件:ADS124S08

您好、先生、

当我在 J9跳线(AIN10 (+)和 AINCOM (-))处连接电压源时、 使用 ADS124S08 EVM 进行评估并运行电 压测量的预定义脚本、然后我打开数据分析工具并按下"收集"按钮、然后没有数据到达、D3 LED 仍然为红色、D2 LED 也没有闪烁一次。

但是、当我不选择任何脚本、而只是从控制台提供收集(点数)时、D2 LED 会闪烁一次、数据分析工具中会出现一些随机数据。

请给出问题的可能答案。

谢谢。

此致

Sushmita Chaudhary

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

    您好、Sushmita、

    红色 LED 亮起(表示 ADS124S08的 START 引脚设置为高电平)时、脚本似乎正在执行。  打开"数据分析"并单击"收集"时、应收集所指示点数的数据(显示在"收集"按钮下的框中)。  在连接外部电压之前、我会尝试运行脚本、并从"Data Analysis"屏幕收集一些数据。

    我认为、当连接外部电压并运行我刚才所述的测试时、可能有一个瞬态会使 ADS124S08复位、这将有助于确定导致此问题的原因。

    您施加的电压是多少?如何连接输入跳线?

    此致、

    Bob B

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

    Bob、您好!

    我正在为 J9跳线提供6V 电源、电源的正极端子连接到 AIN10、负极端子连接到 AINCOM。

    运行脚本后、我施加了外部电压、然后打开了数据分析工具并单击了"收集"按钮、但它也没有出现。

    运行脚本并提供电源后、我从控制台发出启动命令、然后打开数据分析工具并按"收集"按钮、然后我可以收集数据。 我不知道为什么会发生这种情况。

    输入多路复用器两端的电压将是 R77电阻两端的电压、即6V 输入电源的电压

    VR77= Vin*(R77/(R76+R77))=6*(24/117.1)= 1.2294V

    因此、1.2294V 将作为输出电压(输入参考)输入到数据分析图中

    我们将如何检查什么数字值属于该模拟值??

    谢谢

    此致

    Sushmita Chaudhary

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

    您好、Sushmita、

    您是否尝试过我之前在连接外部电压然后运行脚本的响应中所说的操作?  连接外部电源时、请确保 JP13处于 GND 位置。  在打开电源之前、首先将-导联连接连接到 J9-ACOM。  然后将+导联连接连接到 J9-A10。  如果 EVM 已通电、请启动 GUI 并打开外部电源、然后运行脚本。

    数据分析应按预期工作。  固件会分析 START 引脚的状态。  红色 LED 亮起时、START 引脚应为高电平、从而将 ADS124S08置于连续转换模式。  连接问题或驱动 START 引脚的电平转换器出现问题是完全可能的。  如果固件将 START 引脚设置为高电平、则固件中不会发出 START 命令。  您可以使用电压表进行检查、并查看 J3连接器上的 START 引脚电压是否为高电平。  您还可以删除脚本"HOLDSTART 1"中的行、该行将在固件中强制执行 START 命令。  和/或您可以将 start 命令添加到脚本底部。

    在数据分析中、您显然看到了时域图。  要查看返回的代码、您可以选择 Data Inspector (数据检查器)选项卡、也可以从 Time Domain (时域)选项卡中选择'Display value as:(显示值为:)'下拉菜单并选择'Codes (代码)'。  此信息在《Δ-Σ ADC 评估软件用户手册》中提供:

    http://www.ti.com/lit/ug/sbau260/sbau260.pdf

    此致、

    Bob B

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

    尊敬的 Bob:

    是的、它在您提供说明时起作用。谢谢。

    现在、我将 Arduino UNO 与 EVM 进行了交互、并将输入作为电压源、但无论我获得的输出代码是什么、Arduino 中的代码都不是类似的代码。 我在这里发布我的代码,

    #include

    #include

    #define start 6.

    #define RESET 7

    #define CS 4.

    //#define DRDY 8.

    uint32_t stat;

    uint32_t upperByte;

    uint32_t 中间字节;

    uint32_t lowerByte;

    uint8_t ADC_DATA[3];

    int32_t signByte;

    uint32_t 停止= 0;

    //volatile int DRDY_STAY = LOW;

    SPI 设置设置1 (4000000、MSBFIRST、SPI_MODE1);

    void setup(){

    SPI.begin();

    //pinMode (DRDY、输入);

    引脚模式(CS、输出);

    引脚模式(RESET、输出);

    引脚模式(启动、输出);

    digitalWrite (重置,高电平);

    延迟(5);

    Serial.begin(9600);

    SPI.beginTransaction(settings1);

    digitalWrite (CS、low);

    digitalWrite (start、low);

    void loop(){

    for (int i=0;i>=0;i++)

    if (i=0){

    SPI.transfer (0x42);// WREG 寄存器地址

    SPI.transfer (0x07);// WREG 字节编号-1

    SPI.transfer (0xAC);// WREG WRITE AIN10-AINCOM、(1010 1100)二进制、MUXP 和 MUXN 选择

    SPI.transfer (0x08);//增益=1

    SPI.transfer (0x14);//数据速率20SPS

    SPI.transfer (0x10);//REF

    SPI.transfer (0x00);// IDAC MAG

    SPI.transfer (0xFF);// IDAC 多路复用器

    SPI.transfer (0x00);// Vbias

    SPI.transfer (0x12);//超时位 second =1,默认值为10h

    SPI.transfer (0x08);//开始转换命令

    延迟(1);

    其他

    while (停止< 5000)

    digitalWrite (CS、low);

    SPI.transfer (0x12);//RDATA 命令

    ADC_DATA[0]= SPI.transfer (0);

    ADC_DATA[1]=(ADC_DATA[0]<<8)| SPI.transfer (0);

    ADC_DATA[2]=(ADC_DATA[1]<<8)| SPI.transfer (0);

    digitalWrite (CS、HIGH);

    停止=毫秒();

    //符号扩展代码,24位到32位。

    if (ADC_DATA[0]&0x80u){   

    signByte = 0xFF000000;

    其他

    signByte = 0x00000000;

    upByte=((int32_t) ADC_DATA[0]& 0xFF)<< 16;

    中间字节=((int32_t) ADC_DATA[1]和0xFF)<< 8;

    lowerByte=((int32_t) ADC_DATA[2]和0xFF)<< 0;

    STAT =(signByte | stat1 | stat2 | stat3);

    serial.print(stat);

    serial.print ("\t");

    serial.print (停止);

    serial.print ("\n");

    延迟(200);//需要额外的延迟以使下一个转换周期结束

    spi.endTransaction();

    您能建议更改吗?

    谢谢!

    此致 Bob

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

    您好、Sushmita、

    您通过保存和转换到各种变量来处理大量数据、并且使用'stat'作为您正在打印的变量、但要统计数据、您使用的是从未声明过的'OR'ing stat1、stat2和 stat3。

    您保存为无符号值的一些数据、其中一些也是无符号字节、例如数组 ADC_DATA[]。  另一个问题是 uperByte、中间字节和低字节是无符号32位、但您正在转换将不起作用的 Int32。  由于变量'stat'看起来是您最感兴趣的内容、我们来简化并将其设置为 int32_t、而不是 uint32_t  使用 RDATA 命令实际检索数据时、无需保存到字节数组中。  相反:

    spi.transfer (0x12);//RDATA 命令
    
    stat = spi.transfer (0);
    
    stat =(stat <8)| spi.transfer (0);
    
    stat =(stat <8)| SPI.transfer (0);
    
    digitalWrite (CS、HIGH);
    
    
    STEPing= Millis ();//我不确定这是什么操作
    
    //将扩展代码标记为32位32位。
    
    if (stat&0x800000){
    
    stat = stat | 0xFF000000;
    
    }
    
    Serial.print (stat);
    
    //等 

    只需使代码尽可能简单并使用尽可能少的变量即可。

    此致、

    Bob B

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

    Bob、您好!

    非常感谢您解决我的问题。

    此致

    Sushmita Chaudhary