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.

[参考译文] CC2640:传感器控制器和Cortex-M3都使用ADC

Guru**** 2560080 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/585242/cc2640-both-sensorcontroller-and-cortex-m3-using-adc

部件号:CC2640

你(们)好

当传感器控制器正在使用ADC,而Cortex-M3也希望使用它时,Cortex M3如何检查传感器控制器是否正在使用ADC?

巴西

Anders Lange

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

    您好Anders:

    问得好。 我还没有亲自测试这一点,但这应该是可能的。

    有两个注意事项:

    1) PIN共享和/或配置。

    TI-RTOS驱动程序使用TI-RTOS PIN驱动程序。 如果两个实现对ADC使用相同的输入引脚,则可能会导致冲突,除非小心,因为对ADCCC26XX_OPEN的TI-RTOS驱动程序调用将重新配置选定的引脚。  

    2)通过信号量共享ADC外设。

    AUX ADC有一个指定的硬件信号(AUX_SMPH中的AUX_SMPH_2)。 TI-RTOS驱动程序在ADCCC26XX_CONVERT()中同步此信号,但如果您使用相同的输入引脚(如上所述),则在打开TI-RTOS ADC驱动程序之前,您需要手动执行此操作。 您还应考虑在两者之间控制传感器控制器任务(停止/启动),以便更好地控制/概述。 请查看以下两个传感器控制器示例项目,其中显示了其中的一些元素:

    • "共享IO针脚"
    • "任务控制"

    建议的解决方案:

    传感器控制器:

    在传感器控制器工作室项目中启用"外设共享"并添加:

    fwAcquirePeripheral(Tperipheral_ADC);
    adcEnable()
    adcSelectGpioInput();...
    ADC代码...
    adcDisable()
    fwReleasePeripheral(Tperipheral_ADC); 

    TI-RTOS:

    获取ADC信号孔,打开驱动程序

    AUXSMPHTryAcquire (AUX_SMPH_2); 
    ADCCC26XX_OPEN
    ... ADC代码...

    如果您使用相同的输入引脚,请关闭TI-RTOS ADC驱动器,重新配置传感器控制器的引脚并释放信号量:

    //关闭TI-RTOS ADC驱动
    程序ADCCC26XX_CLOSE ();
    
    //将ADC输入IO引脚放回传感器控制
    器scifReinitTaskIo (BV (SCIF_<ADC_TASK_NAME>_TASK_ID);
    
    /*释放ADC HW信号器*/
    AUXSMPHRelease(AX_SMPH_2); 

    请参阅 驱动程序ADCCC26XX_CONVERT中的实现,了解如何使用sempahore:

    C:\TI\simplelink_cc2640r2_SDK_1_30_00_25\SOURCE\ti\drivers\ADC\ADC26XX.c

    我很乐意跟进。 我没有对此进行测试,因此可能需要进行一些更正。