[APM32F1]

《APM32 ADC多路采集+DMA传输应用实例》part1

[复制链接]
322|0
手机看帖
扫描二维码
随时随地手机跟帖
JunKook|  楼主 | 2022-4-28 14:50 | 显示全部楼层 |阅读模式
#技术资源#         本帖以APM32F103为例讲解如何实现多路ADC采集通过DMA传输的应用,APM32F103系列ADC和DMA基础知识的详细介绍请参见我司《APM32F103xDxE数据手册》和《APM32F103xCxDxE用户手册》。本例使用4路ADC采集数据,通过DMA将每路数据传输至16位的数组中,数组长度为4。
下面进入具体配置的细节说明:
1. 基本定义
<font face="Times New Roman">#define ADC1_DR_Address ((uint32_t)0x40012400+0x4c) /* ADC1数据寄存器地址(ADC1基地址+偏移) */

uint16_t dma_buffer[4] = {0}; /* 存储DMA传输ADC数据的buffer */
uint8_t dma_data_done_flag = 0; /* DMA传输完成中断标志 */
uint8_t adc_int_eoc_flag = 0; /* ADC转换完成中断标志 */
</font>
        宏定义ADC1_DR_Address为DMA传输的起始地址,也就是ADC1的数据寄存器地址,通过查看手册可知,ADC1的基地址为0x40012400,而ADC规则数据寄存器(ADC_REGDATA)的偏移地址为0x4C。这里定义uint16_t dma_buffer[4]为DMA传输的目的地址,也就是用于存放ADC采样数据的内存地址。

2. 时钟配置
<font face="Times New Roman">void RCM_Configuration(void)
{
RCM_ConfigADCCLK(RCM_PCLK2_DIV_6); /* 6分频 72/6=12MHZ ADCCLK不能超过14MHZ*/

RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA | RCM_APB2_PERIPH_GPIOC); /* 使能GPIO时钟 */
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1); /* 使能USART1时钟 */
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_DMA1); /* 使能DMA1时钟 */
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_ADC1); /* 使能ADC1时钟 */
}</font>
        本例所用的外设有GPIO,USART,ADC,DMA,对应的时钟均需要使能,通过查看手册可知,DMA的时钟来源为AHB总线,ADC的时钟来源为APB2总线,注意ADCCLK不要超过14MHz。

3. GPIO初始化
void GPIO_Init(void)
{
    GPIO_Config_T GPIO_ConfigStruct;

        /* USART_GPIO初始化 */
        GPIO_ConfigStruct.pin = GPIO_PIN_9;
    GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;
    GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOA, &GPIO_ConfigStruct);
        /* ADC_GPIO初始化 */
    GPIO_ConfigStruct.pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; /* 选择端口 分别对应ADC通道10 11 12 13*/
    GPIO_ConfigStruct.mode = GPIO_MODE_ANALOG;  /* IO工作方式 模拟输入*/
    GPIO_Config(GPIOC, &GPIO_ConfigStruct);
}
        以ADC1的通道10,11,12,13为例,初始化对应的GPIO端口,通过查阅数据手册可知,GPIO的PC0~PC3可复用为ADC1的通道10,11,12,13。

main.rar

2.83 KB

使用特权

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

本版积分规则

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

15

主题

55

帖子

1

粉丝