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

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

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

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

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

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

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

main.rar

2.83 KB, 下载次数: 18

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

15

主题

55

帖子

1

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

15

主题

55

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部