1. ME32F103单片机ADC和DMA

1.1 ADC配置

ADC_Init(10000, VDDA); // 设置ADC时钟频率和参考电压
ADC_SetupChannels(AD10 << ADC_DR1SEL , 0x02, BURSTMODE); // 将AD10的AD值映射到ADC_DR1寄存器中
ADC->CR_b.DMAEN=1;  // 开启ADC的DMA传输

1.2 DMA配置

DMA配置步骤:

  1. 初始化DMA;
  2. 配置DMA列表.me32f103单片机存在DMA列表机制,数据传输的地址可不连续,类似链表。
  3. 配置DMA通道参数。
  4. 获取空闲的DMA通道,开启数据传输。
DMA_Init();NVIC_EnableIRQ(DMA_IRQn);// 初始化DMA列表DMA_InitChnLinkListItem(&data_item,(uint32_t) NULL,  // 下一列表地址(uint32_t)&ADC->GDR,  // 源地址(uint32_t) data,     // 目标地址1000,            // 数据长度DMA_WIDTH_HALFWORD,      // 数据字节 16bit0,     // 源地址不增加1);    // 目标地址增加// 通道设置DMA_InitChannelCfg(&receivechncfg,DMA_CONN_ADC,  // 数据源为ADCDMA_CONN_MEMORY, // 目标源为内存DMA_TRANSFERTYPE_P2M_CONTROLLER_DMA);  // DMA方向为外设到内存,有DMA控制freedmachn= DMA_GetFreeChannel();   // 获取空闲DMA通道if (freedmachn!=0x0F)  // 存在空闲通道DMA_Transfer(freedmachn,&data_item,&receivechncfg);    // 开启传输,当传输完成或者传输错误,触发中断
void DMA_IRQHandler(void)
{uint16_t i;DMA->INTTCCLEAR=0xFF;  // 清除计数中断DMA->INTERRCLR=0xFF;    // 清除错误中断for(i = 0;i<1000;i++)   // 对数据进行处理{rdata[i] = data[i]&0x0fff;}if (freedmachn!=0x0F)DMA_Transfer(freedmachn,&data_item,&receivechncfg);
}

注:

  1. 传输完成或传输错误后,该通道DMA传输将会停止,需要重新开始DMA对应通道。
  2. 在对DMA进行传输时,数据源为ADC->GDR,该寄存器RESULT[11:0]为AD值。DRN[14:12为DR寄存器号…故DMA完成读取后的数据不仅仅为AD值,因此通过位运算取出非AD值。
  3. 当使用多个ADC通道时,此时DMA传输完成的数据是多个ADC通道按顺序采集的AD值。

1.ME32F103单片机ADC和DMA相关推荐

  1. STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)

    文章目录 前言 一.电流检测原理 1.霍尔效应 2.CC6902电流传感器 二.电流检测电路 三.数据处理 前言 前一部分介绍了如何配置ADC和DMA,这一部分介绍在硬件部分如何实现电流检测以及检测到 ...

  2. [基础代码仓库]基于STM32C8T6的库函数ADC模拟+DMA多通道转运代码

    目录 导言 理论部分 STM32F103C8T6最小系统板 代码初始化步骤 代码部分 一.1个通道PA0 二.2个通道PA0.PA1 三.3个通道PA0.PA1.PA2 四.4个通道PA0~PA3 五 ...

  3. M-Arch(番外8)GD32L233评测-ADC和DMA(官方没有例程哦)

    前言 开工第一天,今天是DMA方式的ADC采样. 什么是ADC? ADC即模拟数字转换器,ADC的精度一般用位来表示,位数越多,表示相同模拟量范围内的采样点数越多,那么相应的精度就越高. 比如:12位 ...

  4. STM32CubeMX关于ADC采集DMA传输

    什么是ADC,ADC也叫做模数转换,既将外面的模拟信号转换为数字信号. 模拟信号:连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量 ...

  5. STM32F4单片机ADC采样及ARM-DSP库的FFT

    模拟信号经过ADC采样后变成数字信号,数字信号可以进行FFT运算,在频域中更容易分析信号的特征.本文将介绍如何用STM32F4的进行ADC采样,并利用ARMDSP库里的FFT算法对ADC采样值进行快速 ...

  6. STM32HAL ADC+TIM+DMA采集交流信号 基于cubemx

    ADC+TIM+DMA采集交流 前言 本文主要讲解定时器触发ADC去采集交流信号,DMA把数据搬移到内存. 所需工具: 开发板:STM32F103C8T6 STM32CubeMX IDE: Keil- ...

  7. STM32G071RB CubeMX ADC TIM DMA

    通过CubeMX软件,对 ADC+TIM+DMA 进行简单设置,实现自动采集功能 1.通过CubeMX建立项目 2.输入64并回车,系统会自动进行计算 3.DMA设置 4.TIM设置 5.ADC设置 ...

  8. 一个单片机ADC的挖坑填坑之旅

    [导读] 本文来解析一个盆友在使用STM32采集电池电压踩过的坑.以STM32F4 的ADC属于逐次逼近SAR 型ADC为例进行分析,参考STM32F405xx  Datasheet,对于如何编写AD ...

  9. STM8单片机ADC带缓存的连续采样模式

      在上一篇文章中说了STM8的ADC连续采样模式,为了提高采样的精度和速率,STM8单片机还提供了带缓存的连续采样模式,也就是说ADC会连续采集8个数据,放在缓存中,读取数据时可以一次从缓存中读取8 ...

最新文章

  1. Nature子刊:加州大学伯克利分校Banfield组发现某些淡水湖泊中的大噬菌体或能加速好氧甲烷氧化...
  2. golang 结构体简介
  3. zabbix_agent安装(Centos+Ubuntu)
  4. System message SM02
  5. drupal7 的安装方法
  6. 同比暴增3700%!百度取代谷歌成世界第二
  7. Action+Service +Dao三层的功能划分
  8. 学会这些知识普通人也能财务自由
  9. java学生成绩管理系统源码
  10. 使用Lingo求解简单的线性规划问题
  11. 计算机网络标准化相关组织
  12. selenium-对指定区域截图
  13. Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
  14. Flask+ZUI 开发小型工具网站(四)——ZUI 前端主页面 tabs
  15. Xbrowser远程连接显示灰屏
  16. Pytorch学习记录(七):自定义模型 Auto-Encoders 使用numpy实现BP神经网络
  17. 感知人工智能操作系统
  18. 2012最新password总结,社工你懂得
  19. Automatic fall detection of human in video using combination of features译文
  20. DNS服务器它到底是干啥的呢?

热门文章

  1. pacemaker+corosync 搭建一主两从PG集群
  2. 藏宝阁显示角色可买服务器,梦幻西游:刚买角色的藏宝阁上居然有东西,客服说是原号主出售的...
  3. 关于谋和断的辩证式扯淡
  4. 奥扬科技IPO被终止注册:年营收8亿 苏伟持有67.5%股权
  5. node初探 什么是node
  6. 各种品牌的PLC协议转换网关介绍
  7. MATLAB中 DCT变换、DCT反变换、分块DCT变换
  8. Maven(一):什么是Maven?
  9. Maven基础——什么是Maven
  10. 「张一鸣」“突袭”「王兴」