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.

[参考译文] ADS8686S:数据正延迟 1 个信道

Guru**** 2810425 points

Other Parts Discussed in Thread: ADS8686S, ADS9324

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1623397/ads8686s-data-is-getting-delayed-by-1-channel

器件型号: ADS8686S
主题中讨论的其他部件: ADS9324

您好:  
  我们在 SPI 上使用 TMS570LC43xx 和 ADS8686S、单线软件配置。
我们正在获取正确的数据、但会将数据转移到下一个通道。  
例如、所有通道 A0-7 和 B0-7 通道连接到 0.59V、但通道 A2 连接到 0 或接地、但在数据中我们看到通道 3 获取数据为 0。 错误。
我附加了输出和代码。
 请帮助我们解决此问题。

谢谢!!

    读取 ADC 1
ADC-A CH0 的值为 0x0F2B、原始值为 0.593V
ADC-B CH0 的值为 0x0F2B、原始值为 0.593V
ADC-A CH1 的值为 0x0F2D、原始值为 0.593V
ADC-B CH1 的值为 0x0F2D、原始值为 0.593V
ADC-A CH2 的值为 0x0EFA、原始值为 0.585V
ADC-B CH2 的值为 0x0EFA、原始值为 0.585V
ADC-A CH3 的值为 0x0001、原始值为 0.0000V
ADC-B CH3 的值为 0x0001、原始值为 0.0000V
ADC-A CH4 的值为 0x0E14、原始值为 0.550V
ADC-B CH4 的值为 0x0E14、原始值为 0.550V
ADC-A CH5 的值为 0x0F2C、原始值为 0.593V
ADC-B CH5 的值为 0x0F2C、原始值为 0.593V
ADC-A CH6 的值为 0x0F2D、原始值为 0.593V
ADC-B CH6 的值为 0x0F2D、原始值为 0.593V
ADC-A CH7 的值为 0x0F2C、原始值为 0.593V
ADC-B CH7 的值为 0x0F2C、原始值为 0.593V
ADC-A CH8 的值为 0x0F2A、原始值为 0.592V
ADC-B CH8 的值为 0x0F2A、原始值为 0.592V
ADC-A CH9 的值为 0x67BE、原始值为 4.052V
ADC-B CH9 的值为 0x67BE、原始值为 4.052V

void readADC (void){
  char testString[100]={0};

  uint8_t 索引= 0x00;//读取所有通道

  uint16_t cmd = 0x0000;///打包命令
  uint16_t cmdDummy = 0x0000;///要发送的虚拟数据

  uint16_t dataBuff[10]={0};//用于读取的缓冲器

  sprintf (testString、“\treading ADC 1\n\r“);
  sciDisplayText (sciREG3、testString);

  CMD = 0x8400;//配置寄存器
  adcSpiCfg.cnsr = CS_ADC1;
  Extn Adc_Write (cmd、dataBuff);

  CMD = 0x88AA;//范围选择通道 A1
  adcSpiCfg.cnsr = CS_ADC1;
  Extn Adc_Write (cmd、dataBuff);

  CMD = 0x8AAA;//范围选择通道 A2
  adcSpiCfg.cnsr = CS_ADC1;
  Extn Adc_Write (cmd、dataBuff);

  CMD = 0x8CAA;//范围选择通道 b1
  adcSpiCfg.cnsr = CS_ADC1;
  Extn Adc_Write (cmd、dataBuff);

  CMD = 0x8EAA;//范围选择通道 B2
  adcSpiCfg.cnsr = CS_ADC1;
  Extn Adc_Write (cmd、dataBuff);

  CMD = 0x8600;//选择 CH0
  for (index = 0;index < 10;index++){/// Loop to Increase Channel A and B by 1

//    ext. adc (cmd、dataBuff);//写入通道编号以获取 Adc_Write 转换值
 
    gioSetBit (spiPORT1、ADC1_CONV_PIN、1);//开始转换
    while (gioGetBit (spiPORT1、ADC1_BUSY_PIN)!= 1);
    gioSetBit (spiPORT1、ADC1_CONV_PIN、0);
    while (gioGetBit (spiPORT1、ADC1_BUSY_PIN)!= 0);


    adcSpiCfg.CS_HOLD = false;
    adcSpiCfg.cnsr = CS_ADC1;
    spiTransmitAndReceiveData (ADC_SPI、&adcSpiCfg、2、&cmdDummy、dataBuff); //读取 ADC 值

    sprint f (testString、“ADC-A CH%d 的值为 0x%04X、原始值为%0.3fV\r\n“、index、dataBuff[0]、((((float) dataBuff[0])/65535.0f)*10.0f);
    sciDisplayText (sciREG3、testString);

    sprintf (testString、“ADC-B CH%d 的值为 0x%04X、原始值为%0.3fV\r\n“、index、dataBuff[1]、((((float) dataBuff[1])/65535.0f)*10.0f);
    sciDisplayText (sciREG3、testString);

    CMD = cmd + 0x0011;//使通道编号递增
  }
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
     我们已经看到、给定单对通道 A 和 B 的两个转换脉冲时、给出了预期的输出、但  

    我找到了一个名为的应用手册  

    ADS8686S 16 位、16 通道 1MSPS 双路同步采样 ADC

    扩展电网应用中的模拟输入通道(使用 16 通道 16 位、修订版 A) 页面 8.

     这表明 START CONV 引脚将启动对转换


    我应该考虑哪一个。 这不是关于获取数据、而是我们需要尽量减少操作。

    感谢您的回复

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

    您好:
     我们已经看到、给定单对通道 A 和 B 的两个转换脉冲时、给出了预期的输出、但  

    我找到了一个名为的应用手册  

    ADS8686S 16 位、16 通道 1MSPS 双路同步采样 ADC

    扩展电网应用中的模拟输入通道(使用 16 通道 16 位、修订版 A) 页面 8.

     这表明 START CONV 引脚将启动对转换


    我应该考虑哪一个。 这不是关于获取数据、而是我们需要尽量减少操作。

    感谢您的回复

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

    尊敬的 Rajat:

    感谢您的发布。 请问您正在评估 ADS8686S 的应用/项目是什么类型? 我还要提一下、我们最近发布了新一代 ADS8686S: ADS9324。 这是一款采用小型 8mm x 8mm 封装的 16 位 16 通道 ADC。 ADS9324 还提供差分输入和真正的同步采样。 这是否会引起您的兴趣?

    关于您看到的问题、 您使用的是软件序列发生器还是软件通道选择寄存器? 在任一种情况下、都需要两个 CONVST 来输出正确的通道数据:

    在软件模式下运行时、请考虑数据表。 您提到的应用手册可能涉及硬件模式。

    此致、

    Samiha

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

    您好、Samiha、
    1.我们使用 ADS8686S 进行电压检测。
    2.不,现在我们不是在寻找一个变化。
    3.通过写入通道选择寄存器进行软件通道选择。
    4.数据表还指出、一个转换脉冲将启动一对选定通道的转换。在这种情况下、A0 和 B0 将在单一情况下开始转换、但情况并非如此。

    5.我考虑了数据表,其中还说 conv 引脚将启动通道 A 和 B 对的转换

    结语:
    1.信道对,这意味着 A1 和 B1 需要两个不同的转换脉冲或不需要?
    2、数据表缺少此信息,其中提到了第 1 点的结论。
    3.还有其他解决方案吗?

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

    尊敬的 Rajat:

    是的、从技术上讲、一个 CONVST 转换通道对的数据。 但是、要使 ADC 寄存请求的通道数据、需要额外的 CONVST。 例如、在图 7-13 中、需要一个 CONVST 来记录请求的 CHx 数据、使用下一个 CONVST 来实际转换 CHx 通道对数据。 时序图中展示了该情况。

    此致、

    Samiha

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

    您好、Samiha、
    好的、太好了。
    我还想知道应该如何计算采样频率。
    我们已将范围设置为+/- 5V、并考虑我们发送两个转换脉冲的位置。

    谢谢

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

    尊敬的 Rajat:

    只有与第一个 CONVST 对应的样本才不会以请求的通道对(而是通道 0 对)为基准、与后续 CONVST 对应的每个其他样本将输出 请求的通道对采样。 因此、如果我在 SDI 帧 n 中请求 CHx 对、则 CHx 对将在 SDO 帧 n+2 上输出。 采样频率将是 CONVST 的频率、但如上所述、图 7-13 将有 2 帧的延迟。

    如果使用过采样、ADC 的总吞吐量会随着过采样率的增加而成比例下降。

    此致、
    Samiha