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.

[参考译文] CCS:CC2650

Guru**** 2589300 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/602705/ccs-cc2650

工具/软件:Code Composer Studio

您好!  
我正在尝试使用传感器控制器同时对4个模拟信号进行采样。 我在 Sensor Controller Studio 上实现了 ADC 驱动程序。 建议使用多缓冲输出数据交换资源。 它用于与应用 CPU 进行通信、同时传感器控制器继续生成值。 我的问题是、我看不到它是如何工作的(即使我尝试查看了示例和文档)。 假设我正在使用2个缓冲器,我应该在输出数据结构中定义一个将存储 ADC 值的缓冲器,还是两个缓冲器? (我看不到任务面板中声明的缓冲区与数据结构中稍后声明的缓冲区之间的关系)  

在我的项目中,我正在使用4个传感器,这是否意味着我必须声明4个输出缓冲器?

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

    您可以按照自己的喜好进行操作-无论哪种方式、缓冲区都不能在任务之间共享。

    您是否在一个传感器控制器任务中执行所有 ADC 逻辑? 然后、您可以执行一个大型缓冲器并循环该缓冲器。

    如果您有多个任务、则必须创建多个缓冲区-每个缓冲区都包含其分配的 ADC 的条目。

    换句话说、它取决于您的应用程序的架构。 主 CPU 将只能看到任务、您可以创建指向每个输出缓冲区的指针表-因此它将显示为一个缓冲区。 完全由您决定。

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

    你好,Rebel,感谢你的帮助。  
    在 RESSOURCE 面板中、当我尝试使用多缓冲输出数据交换 RESSOURCE 时、最小缓冲器计数为2。 假设我的输出数据结构中有一个大缓冲区:这是否意味着我将使用一个缓冲区来加载输出缓冲区的值,而另一个缓冲区用于传输到 CPU 应用程序? (很抱歉、这有点令人困惑)。

    这是我在 Sensor Controller Studio 中的实际执行代码:

    提供 U16 isOutputBuffer;

    AdcEnableSync (ADC_REF_FIXED、ADC_SAMPLE_TIME_2P7_US、ADC_TRIGGER_AUX_TIMER0);

    adcStartAuxTimer0Trigger (5);

    adcSelectGpioInput (cfg.pAuxoAdcInput[0]);

    fwCheckOutputBuffer(isOutputBufferAvailable);

    if (isOutputBufferAvailable = 1){

    对于(U16 n = 0;n < buffer_size;n++){

    adcReadFifo (output.pAdcValue1[n]);

    adcSelectGpioInput (cfg.pAuxoAdcInput[1]);

    adcReadFifo (output.pAdcValue2[n]);

    adcSelectGpioInput (cfg.pAuxoAdcInput[2]);

    adcReadFifo (output.pAdcValue3[n]);

    adcSelectGpioInput (cfg.pAuxoAdcInput[3]);

    adcReadFifo (output.pAdcValue4[n]);

    adcSelectGpioInput (cfg.pAuxoAdcInput[0]);

    fwSwitchOutputBuffer();

    adcDisable();

    fwScheduleTask (1);

    正如您看到的、我正在使用4个输出缓冲器(我尝试了其中一个、并将其中一个输入引脚接地、这些值似乎被覆盖)、这真的很棘手、因为它使用大量 RAM。  
    此外,当我将程序导入 Code Composer Studio 并尝试将其中一个传感器的采样值放在图形上时,它看起来是这样的(输入为3V):  



    看起来应用程序正在接收一次包含一个输入值的缓冲区,然后应用程序正在接收其它输入值... 我真的不知道如何解释这一点并确定问题的根源。 我似乎无法理解多缓冲输出数据交换资源是如何工作的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    到目前为止还没有解决方案?
    我可能使用了错误的方法。 有人能给我指一下吗?