8003A使用多通道ADC时,PD7管脚也就是ADC0无法检测。



  • 0_1716136163884_db359d5e-8d98-4597-8332-68589df6ca21-1716136117349.png

    使用的是FR8003A,上图为硬件指南引脚封装。
    测试过程:
    在SDK中,示例代码有两份代码,分别为: 1、fr8000-master\examples\none_evm\ble_freertos_demo
    2、fr8000-master\examples\none_evm\peripheral_demo\adc
    在第二份代码里为ADC示例代码为了适配8003修改了PD0,PD1,PD6,PD7复用为ADC。
    0_1716135105948_7f8c58f1-720a-4c9d-8c24-45600c5aa0a9-f396c55cf246b648916f56eecbb8dc3.png

    第一份代码为FreeRTOS示例代码,直接在vTask1里面加入adc_demo(ADC_MULTI_CHANNEL);函数获取ADC并打印显示。
    0_1716135236579_2462d410-a08c-40b9-bd59-f1d97f4c6903-83c9681484232b7ddf15923d975dc59.png
    奇怪的事情发生了。
    测试获取ADC值方法为:把18管脚VDDIO的3.3V输出,使用杜邦线依次与PD0,PD1,PD6,PD7短接。
    0_1716135549830_c8475ddd-79f6-4207-8037-cbb88f467543-88cfb99c4251dd03811c615bff359b6.png
    发现的问题为:
    第一份示例代码运行,可以获取到PD0,PD1,PD6,PD7的ADC值。
    第二份代码运行,无法获取PD7,但可以获取PD0,PD1,PD6的ADC值。

    0_1716135734658_5d7f945f-e220-47d8-9ae1-b2b0ca4186f0-218612884aa0999041c8b38e6a61839.png
    0_1716135751003_9107c143-5f51-4e89-b752-007f7af6085b-b56a06d1859f11d8c9fd07db498a97c.png
    0_1716135762329_ffd7c94a-0de1-422b-81e9-c074c5424158-336faf1d4774c40ce3f8bb14ce13f24.png

    求助:
    在第二份示例代码FreeRTOS的vtsak1中使用多通道转换获取PD7的ADC值?(单通道是可以获取PD7的)



  • 在FreeRTOS的vTask中,加入adc_demo(ADC_SINGLE_CHANNEL);
    单通道转换,通道只选PD7是可以获取到ADC值的。

    0_1716136899860_8aacc492-6eef-4693-8f16-556ba38a7097-11c5cb1f7371d515a63e9b36a1857be.png

    0_1716136921853_54456b45-e29b-40f8-a058-b7d169ae5ccf-1716136914499.png

    发现在FreeRTOS的vTask中,单通道转换可以获得PD7的ADC值。
    0_1716136944754_fa83c885-24b3-4dd4-925a-a6b0eab277be-1716136940157.png



  • 问题,已经解决。ADC转换需要时间,加延时就可以读取数据了。
    0_1716541861762_a9309f0c-4ac1-4b3f-a88d-655dce711bf5-1716541845223.png