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.

[参考译文] CC2642R:使用 adcbuf 对两个或多个通道的数据进行采样

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1179912/cc2642r-sampling-data-of-two-or-more-channels-using-adcbuf

器件型号:CC2642R
Thread 中讨论的其他器件:SysConfig

大家好。

我想知道是否可以使用 adcbuf 对两个或多个通道的数据进行采样。 如果答案是肯定的、您能给我一个指南吗??? 我在文档中搜索过、但无法实现。

我的用例如下:我在 DIO_23中连接了一个模拟信号,在 DIO_24中连接了另一个模拟信号。 我每 秒需要读取五次它们的值、因此我认为 adcbuf 必须能够很好地执行该操作。

此致。

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

    您好、Mariano、

    您可以将 adcbufcontinuous 示例导入 CCS、并从 SysConfig Editor -> ADCBuf 模块增加通道。  然后、您可以从同一窗口中为每个通道选择 ADCBuf PinMux。  然后、您可以选择 重复发生模式= ADCBuf_Recurrence_mode_One_shot 和返回模式= ADCBuf_Return_mode_Blocking、在这里、每次调用 ADCBuf_convert 前、adcChannel 都会发生变化。  您可以查看 ADCBuf TI 驱动程序运行时 API 中的所有数据结构参数和函数

    此致、
    Ryan

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

    非常感谢、我在 SysConfig 编辑器中看不到信道编号。  

    ADCBuf 与 RERECEenceMode 一起工作=  ADCBuf_RECEARE_MODE_Continuous 并且返回模式= ADCBuf_RETURE_MODE_CALLBACK???

    我在这里使用以下代码片段进行了测试:

    ADCBuf_Handle adcbuf;
    ADCBuf_Params adcbufParams;
    ADCBuf_init();
    ADCBuf_Params_init(&adcbufParams);
    adcbufParams.returnMode = ADCBuf_RETURN_MODE_CALLBACK;
    adcbufParams.recurrenceMode = ADCBuf_RECURRENCE_MODE_CONTINUOUS;
    adcbufParams.callbackFxn = adcBufCallbackFxn;
    adcbufParams.samplingFrequency = 10;
    adcbuf = ADCBuf_open(0, &adcbufParams);
    ADCBuf_Conversion conversion[2];
    conversion[0].adcChannel = ADCBUF_CHANNEL_0;              // VBATT
    conversion[0].sampleBuffer = bufferOne;
    conversion[0].sampleBufferTwo = bufferTwo;
    conversion[0].samplesRequestedCount = ADC_BUFFER_SIZE;
    conversion[1].adcChannel = ADCBUF_CHANNEL_1;              // KEYS
    conversion[1].sampleBuffer = bufferOne;
    conversion[1].sampleBufferTwo = bufferTwo;
    conversion[1].samplesRequestedCount = ADC_BUFFER_SIZE;
    ADCBuf_convert(adcbuf, conversion, 2);

    但  adcBufCallbackFxn 只调用一个通道。

    再次感谢你。

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

    ADCBuf_convert 将只转换一个通道和 ADCBuf_Conversion 结构、因此 您需要更改 adcChannel 并为每个通道重新调用 ADCBuf_convert。  未经测试的伪代码:

    ADCBuf_Handle adcbuf;
    ADCBuf_Params adcbufParams;
    ADCBuf_init();
    ADCBuf_Params_init(&adcbufParams);
    adcbufParams.returnMode = ADCBuf_RETURN_MODE_CALLBACK;
    adcbufParams.recurrenceMode = ADCBuf_RECURRENCE_MODE_CONTINUOUS;
    adcbufParams.callbackFxn = adcBufCallbackFxn;
    adcbufParams.samplingFrequency = 10;
    adcbuf = ADCBuf_open(0, &adcbufParams);
    ADCBuf_Conversion conversion;
    conversion.adcChannel = ADCBUF_CHANNEL_0;              // VBATT
    conversion.sampleBuffer = bufferOne;
    conversion.sampleBufferTwo = bufferTwo;
    conversion.samplesRequestedCount = ADC_BUFFER_SIZE;
    ADCBuf_convert(adcbuf, conversion, 1);
    conversion.adcChannel = ADCBUF_CHANNEL_1;              // KEYS
    ADCBuf_convert(adcbuf, conversion, 1);

    此致、
    Ryan

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

    好的、我将在这里进行测试。 但看起来:

    extern int_fast16_t ADCBuf_convert (ADCBuf_Handle handle、ADCBuf_Conversion 转换[]、uint_fast8_t channelCount);

    其中通道计数为:  

    @param[in] 通道数在此  中转换的通道数

     * 调用。 应为@p 转换数组的长度。 具体取决于

     * 器件、可能不支持多个同步转换。 请参见器件

     * 具体实施。

     您说过 CC2642可能不支持多路同步转换、对吧??

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

    您的伪代码不起作用、因为具有两 个 ADCBuf_convert 调用且 重复模式= ADCBuf_Recurrence_mode_continuous;

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

    来自 ADCBufCC26X2.h: 不支持同时在多个通道上执行转换。 换言之,调用 ADCBuf_convert ()时,参数 channelCount 必须始终设置为1。 CC26XX 器件上的 ADC 不支持硬件中通道或引脚的时分多路复用。

    您是正确的、如前所述 、建议的乘法通道运行模式为 RecurrencedMode = ADCBuf_Recurrence_mode_One_Shot、返回模式= ADCBuf_Return_mode_Blocking

    此致、
    Ryan

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

    好的、Ryan、再次感谢