一、问题

最近在使用灵动微的MM32,当用多路ADC-DMA时,出现了一些问题,所以在此记录一下
总结下来,处理了下面几个问题(这里的问题是拿到最新的SDK包,参考example没办法解决的)

  1. 多路通道对应的DMA内存不明确,例如CH0对应DMA的第二个字节,CH1却对应第一字节
  2. 多个通道数值接近

二、解决方法

  1. 使用任意通道

        ADC_ANY_NUM_Config(ADC1,3);//一共4通道ADC1->ANYCR |=  ADC_ANY_CR_CHANY_MDEN;//开启任意通道///设置通道的顺序ADC_ANY_CH_Config(ADC1,0,ADC_Channel_0);ADC_ANY_CH_Config(ADC1,1,ADC_Channel_1);ADC_ANY_CH_Config(ADC1,2,ADC_Channel_2);ADC_ANY_CH_Config(ADC1,3,ADC_Channel_Vrefint);
    
  2. 这个问题,是因为引脚悬空导致了,举个例子,若PA1有确切电平, PA2 PA3
    悬空,则PA2 PA3得到的数据会跟随PA1变化,只有一点点区别(细微差别)

三、整体代码

void adc_dma_init()
{DMA_InitTypeDef DMA_InitStruct;RCC_AHBPeriphClockCmd(RCC_AHBENR_DMA1, ENABLE);DMA_DeInit(DMA1_Channel1);DMA_StructInit(&DMA_InitStruct);//DMA transfer peripheral addressDMA_InitStruct.DMA_PeripheralBaseAddr = (u32) & (ADC1->DR);//DMA transfer memory addressDMA_InitStruct.DMA_MemoryBaseAddr = (u32)&adcBuf;//DMA transfer direction from peripheral to memoryDMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;//DMA cache sizeDMA_InitStruct.DMA_BufferSize = ADC_DMA_BUF_SIZE;//After receiving the data, the peripheral address is forbidden to move//backwardDMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//After receiving the data, the memory address is shifted backwardDMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;//Define the peripheral data width to 16 bitsDMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//Define the memory data width to 16 bitsDMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//Cycle conversion modeDMA_InitStruct.DMA_Mode = DMA_Mode_Circular;//DMA priority is highDMA_InitStruct.DMA_Priority = DMA_Priority_High;//M2M mode is disabledDMA_InitStruct.DMA_M2M = DMA_M2M_Disable;DMA_InitStruct.DMA_Auto_reload = DMA_Auto_Reload_Disable;DMA_Init(DMA1_Channel1, &DMA_InitStruct);DMA_Cmd(DMA1_Channel1, ENABLE);ADC_InitTypeDef  ADC_InitStruct;ADC_StructInit(&ADC_InitStruct);//Initialize PA1 to analog input mode//Enable ADC clockRCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1, ENABLE);ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;//ADC prescale factorADC_InitStruct.ADC_PRESCARE = ADC_PCLK2_PRESCARE_17;//Set ADC mode to continuous conversion modeADC_InitStruct.ADC_Mode = ADC_Mode_Continue;//AD data right-justifiedADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;ADC_Init(ADC1, &ADC_InitStruct);GPIO_InitTypeDef GPIO_InitStruct;RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOC, ENABLE);GPIO_StructInit(&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin  =  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStruct);//PC3  ADC_IN13GPIO_InitStruct.GPIO_Pin  =  GPIO_Pin_3;GPIO_Init(GPIOC, &GPIO_InitStruct);//Enable the channelADC_RegularChannelConfig(ADC1, ADC_Channel_0, 0, ADC_Samctl_240_5);ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 0, ADC_Samctl_240_5);ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 0, ADC_Samctl_240_5);// ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 0, ADC_Samctl_240_5);// ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 0, ADC_Samctl_240_5);//ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 0, ADC_Samctl_240_5);//ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 0, ADC_Samctl_240_5);// ADC_RegularChannelConfig(ADC1, 13, 0, ADC_Samctl_240_5);//通道13ADC_RegularChannelConfig(ADC1, ADC_Channel_Vrefint, 0, ADC_Samctl_240_5);ADC_ANY_CH_Config(ADC1,0,ADC_Channel_0);ADC_ANY_CH_Config(ADC1,1,ADC_Channel_1);ADC_ANY_CH_Config(ADC1,2,ADC_Channel_2);ADC_ANY_CH_Config(ADC1,3,ADC_Channel_Vrefint);ADC_ANY_NUM_Config(ADC1,3);//ADC1->ANYCR |=  ADC_ANY_CR_CHANY_MDEN;//开启任意通道ADC_TempSensorVrefintCmd(ENABLE);//Enable ADCDMAADC_DMACmd(ADC1, ENABLE);//Enable AD conversionADC_Cmd(ADC1, ENABLE);ADC_SoftwareStartConvCmd(ADC1, ENABLE);}

灵动微 MM32 多路ADC-DMA配置相关推荐

  1. 灵动微MM32可替换兼容意法半导体STM32

    意法半导体(ST)是半导体供应商的翘楚,致力于与日常生活息息相关的智能的.高效能的产品及解决方案.意法半导体的产品无处不在,致力于与客户共同努力实现智能驾驶.智能工厂.智能城市和智能 家居,以及下一代 ...

  2. 灵动微MM32产品特色及应用市场

    MM32系列是灵动微电子于2020年推出的新一代通用MCU平台,旨在为客户提供更高性能.更低功耗.更高可靠性.稳定性和健壮性的微控制器.全新MM32硬件上与经典MM32全兼容,保留了2.0-5.5V宽 ...

  3. 初识灵动微MM32 GPIO

    GPIO英文全称General-PurposeInput/OutputPorts,中文意思是通用I/O端口.由于MCU的通信外设接口众多,不可能每一外设固定一组GPIO,在MCU微控制器中,可通过软件 ...

  4. 灵动微MM32 eMiniBoard介绍

    板子名称 MM32 eMiniBoard(MCU型号:MM32L073PF) MM32 eMiniBoard开发板照片及简介 MM32 eMiniBoard 图片 MM32 eMiniBoard 简介 ...

  5. 灵动微MM32的FSMC接口驱动TFT_LCD屏幕

    FSMC存储区域说明(挂载在AHB3总线) BANK1的基地址是0x60000000,不同的子bank地址不同,通过HADDR[27:26]这两位的值确定. HADDR[27:26] BANK SEL ...

  6. 复旦微FM33LE0x单片机之多通道ADC DMA

    一.简介   本例程以FM33LE026为例,已经过验证,其他型号不保证适用.   工欲善其事必先利其器,官方手册就是利器,在接触新开发平台时,仔细阅读手册能大幅提升开发进度,避免很多掉头发事件,光头 ...

  7. 国产灵动微MM32F3277G7P兼容STM32F103RCT6

    由于st芯片价格高且缺货严重,不少厂家想用国产芯片代替.国产32位单片机厂商上海灵动微电子便是一个不错的选择.灵动微MM32系列基于ARM Cortex-M0及Cortex-M3内核,产品包括:针对通 ...

  8. STM32H743Nucleo ADC使用DMA配置无法读取数据的问题及解决

    STM32H743Nucleo ADC使用DMA配置无法读取数据的问题及解决 一.对ADC进行配置 二.对程序进行修改 三.程序执行结果 四.问题解决 一.对ADC进行配置 使用STM32H743Nu ...

  9. 晓宇姐姐带你软硬结合,感受下ADC DMA采集多路电压电流

    在我们的电子设计中,经常需要对外部的模拟量进行采集,如一些传感器的输出量,电位器的旋转量等等,特别是电压电流的采集可以说是家常便饭,这些都离不开MCU最常用的外设,ADC,它可以将模拟量转换为数字量, ...

最新文章

  1. java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置
  2. Windows PE导出表编程4(重构导出表实现私有函数导出)
  3. 安徽工业大学计算机考研调剂,安徽工业大学2019年考研预调剂公告
  4. windbg基本简单步骤
  5. java float 转double_将float转换为double而不会丢失精度
  6. POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~
  7. OpenKG 祝大家元宵节快乐!
  8. .net函数查询_SQL查询语句总是先执行SELECT?你们都错了!
  9. 计算机技术基础 VB 答案,《计算机技术基础(VB)》武汉理工大学20春作业一
  10. 前端基础-html-表格的基本标签和相关属性
  11. mfc控件随框变化(EasySize的用法,仔细看绝对有用)
  12. visual studio安装dlib
  13. 通过允许指定IP访问apahce虚拟主机加强服务器安全
  14. Matable实现利用互相关函数求相位差
  15. 人工势场法matlab讲解,传统人工势场法(matlab)
  16. kali安装DVWA详细教程
  17. 计算机硬盘格式分类,win7 下默认的硬盘分区表类型是MBR还是GUID ?-win7的硬盘格式,win7装win10硬盘格式调整...
  18. linux新硬盘格式化,linux添加新硬盘并格式化
  19. 安卓手机无线投屏电脑 手机电脑同屏
  20. 【渝粤教育】电大中专中医基础知识 作业 题库

热门文章

  1. CF1647D Madoka and the Best School in Russia(数论,dp,离散化技巧)
  2. 韩国商业网站界面设计分析------推荐2005-5-24 出处:vipcn.com
  3. vs项目属性中目标平台x86,x64,any cpu的区别
  4. swoft框架,开发遇到基本坑
  5. 图案输出(二)----输出平行四边形图案:(难度系数:小于半颗星)
  6. 梦幻西游手游经验任务链计算机,梦幻西游手游任务链帮派求助刷经验技巧
  7. C语言 现成的创建与终止
  8. unity设置iOS手机震动
  9. 06-树(tree)
  10. neso n810 i7 android 4.4,NESO N810 i7平板电脑京东首发 预售超100000