打印
[APM32F0]

APM32F003 ADC多通道轮询采样是怎么一回事?

[复制链接]
1062|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
极海APM32F003系列是一款小体积、低成本、高性能的MCU,其主要针对一些对成本比较敏感的应用,助力客户以更经济的成本研发制造出功能丰富的产品。所以APM32F003系列MCU的外设资源以常用为主,但也尽可能多的去满足客户更高的资源需求,比如在实现多通道ADC轮询采样的功能需求上,003也可以满足,这部分在同价位的友商产品上是没有的,这就进一步提高了产品的性价比。那么今天小编就给大家讲讲APM32F003系列MCU的ADC多通道轮询采样是怎么一回事?它是如何使用的呢?
看到这里有朋友肯定会问,是不是参考其他通用MCU(例如:F103、F407等)的配置方式来使用就好了?其实不然,下面小编也就不卖关子了,直接开门见山地给大家介绍一下003如何使用ADC多通道轮询采样功能?它的用法与其他通用MCU的使用方法又有何区别呢?
其实003使用ADC多通道轮询采样功能也很简单,大家可参考我司SDK例程包里Examples->ADC->ADC_MultiChannelScan这个例程。打开例程后,我们进入ADC连续扫描初始化的函数里,其函数名为ADC_ContinuousScanInit,首先进行的是ADC采样引脚的初始化,配置代码如下所示:
/* ADC GPIO configuration */
    gpioConfig.intEn = GPIO_EINT_DISABLE;
    gpioConfig.mode = GPIO_MODE_IN_FLOATING;
    gpioConfig.pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_4;
    GPIO_Config(GPIOC, &gpioConfig);
可以看到这里初始化了3个引脚:PC5、PC6、PC4,通过查阅数据手册,其分别对应的是ADC的通道0,通道1和通道2。

然后接下来是对ADC进行初始化,配置代码如下所示:
ADC_SetMode(ADC_MODE_SINGLE_END);

    /* ADC configuration */
    ADC_ConfigStructInit(&adcConfig);
    adcConfig.div = ADC_DIV_4;
    adcConfig.convMode = ADC_CONV_MODE_CONTINUOUS;
    adcConfig.scanMode = ADC_SCAN_MODE_ENABLE;
    adcConfig.interrupt = ADC_INT_CC;
    adcConfig.channel = ADC_CHANNEL_2;
    ADC_Config(&adcConfig);

    /* ADC Calibration */
    ADC_Calibration();

    ADC_Enable();
    ADC_StartConversion();
ADC配置参数中第一个是ADC时钟分频参数,例程配置的是ADC_DIV_4,即4分频,因为ADC的时钟频率最大不能超过14MHz,如下图所示,在系统时钟为48MHz的情况下,ADC时钟为48/4=12MHz。

第二个参数是使能连续转换模式,例程配置的是ADC_CONV_MODE_CONTINUOUS,即使能连续转换模式。第三个参数是使能扫描模式,例程配置的是ADC_SCAN_MODE_ENABLE,即使能扫描模式。因为是要实现多通道连续转换功能,所以需要开启连续转换模式和扫描模式
第四个参数是中断使能,这里大家根据实际需要是否开启中断。
第五个参数是配置通道,例程配置的是ADC_CHANNEL_2,到这里大家就产生疑惑了,我要实现多通道连续转换,这里为什么就只配置了一个通道呢?其实答案很简单,这里配置的是ADC_CHANNEL_2,就意味着系统会按照通道0,1,2这样的顺序循环采样。如果配置的是ADC_CHANNEL_3,那么系统会按照通道0,1,2,3这样的顺序循环采样;如果配置的是ADC_CHANNEL_7,那么系统会按照通道0,1,2,3,4,5,6,7这样的顺序循环采样。想必大家已经明白其中的奥秘了,这也就是003使用ADC多通道轮询采样功能与其他通用MCU的用法不一样的地方,003的多通道轮询采样必须从通道0开始,到程序中配置的通道x为止。
按照这样的方式配置好之后,我们将例程代码烧录到开发板上,打开串口即可看到通道0,1,2的采样数据。

那么有人肯定会问,那如果我想要实现通道1和通道7这种任意几个通道之间的轮询采样可以吗?如果要让系统自己来完成的话显然是不行的,不过这种情况可以按照单通道分别采样来完成,即先初始化配置通道1完成采样后,再重新初始化通道7并开启采样,以此循环。

以上就是关于APM32F003系列MCU如何使用ADC多通道轮询采样的一些见解,欢迎大家评论区讨论交流。

使用特权

评论回复
沙发
z31com| | 2023-11-8 11:25 | 只看该作者
ADC选择的是4,5,6.,与实际扫描的通道不符。我的理解有问题?(系统会按照通道0,1,2这样的顺序循环采样)

使用特权

评论回复
板凳
z31com| | 2023-11-8 11:26 | 只看该作者
如果供电电压是5V的话,那REF的电压也是5V吗?

使用特权

评论回复
地板
chenjun89| | 2023-11-9 09:16 | 只看该作者
就是顺序采样转换,还有种多路ADC同步采样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

15

主题

55

帖子

1

粉丝