1.背景

        此实验建立在STM32F429核心板基础上,对于深刻了解STM32Cube使用具有深刻意义。利用DMA进行ADC采样,具有速度快,极大减少CPU消耗的优势,对于数据采集系统具有很大的优势,特别是其单路2.4MSPS采样速度,三路组合可以达到惊人的7.2MSPS采样速度,对于一般应用均可满足。
2.STM32Cube配置
     2.1 工程建立在前面均与简述,这里不做赘述,系统时钟180MHz。
       2.2 ADC参数配置
      
      Scan Conversion Mode 扫描模式,当使用多通道需要使能。
      Continuous Conversion Mode 连续转化模式,当一路转化完成立马开始新一轮转化。
      ADC的时钟触发有两种方式,一种是通过定时器等外部中断源触发,另一种是ADC自身的时钟触发。
      这里选择Timer 3 Caputure Cpmpare 1 event 触发。
         
       ADC通过DMA来实现数据采集,DMA Setting参数如上图所示。这里需要注意的是Memory需要自加    1,并且使用FIFO,采用半满阈值设置,为了做“乒乓”调度算法。因为ADC是12bit的,故采用Half Word。
      
     开启DMA中断。
    2.3  采样定时脉冲设置
      因为ADC使用了Timer 3,所以需要对Timer 3 进行配置。如果ADC采用内部ADC时钟触发,则无需配    置。
               
            
        这里采用频率设置为500KHz,定时器时钟为180/2=90MHz,9分频之后是10MHz,然后counter period 是20,采样周期10M/20=500KHz。
    
       2.4 通过STM32Cube产生源码,使用MDK打开工程。
       在大循环之前加入语句
       uint16_t Samples_In[512]={0};
       HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&Samples_In[0],512);

3. ADC效果验证
     3.1 利用前述章节配置串口波特率115200,DMA发送使能。
     3.2 在ADC的FIFO结束中断上,关闭ADC的DMA,使其不再工作,通过串口将ADC采集到的512组16进制数据发送到PC机上,利用串口调试助手将其保存到名为“test_sina.txt”的文件中;
    3.3 打开matlab软件,新建.m文件,命名为“test_getdata.m”。
          写入语句:
clc;clear;
sina =textread('test_sina.txt','%s')';%以字符形式打开文件 
alpha = hex2dec(sina)'; %16进制转化为10进制数,存入alpha矩阵 
len = (length(alpha(1,:))+1)/2;
%len = 511;
for i=1:1:len
    s(1,i) = alpha(1,2*i-1)+alpha(1,2*i)*256;
end
x = 1:len;
plot(x,s);

信号发生器发生1KHz的正弦信号,通过MATLAB将ADC采集的数据还原如上图所示,是一个周期多一点点的正弦波。
理论计算:500KHz的采样率,采集1KHz的正弦信号,能够采集1个周期多一点点,跟MATLAB显示的一样。


为了更加形象显示图像,下节会使用DAC利用“乒乓”调度算法将ADC的数据实时输出。



附件列表

基于STM32Cube的ADC模数采样设计的更多相关文章

  1. STM32中基于DMA的ADC采样实例之MQ-2烟雾传感器

    最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气 ...

  2. DSP基础学习-ADC同步采样

    DSP基础学习-ADC同步采样 彭会锋 2015-04-28 20:31:06 在DSP28027 LauchPad学习过程中,关于ADC同步采样和顺序采样的区别稍加研究了一下,发现里面还真有些门道, ...

  3. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  4. 基于Linux的智能家居的设计(3)

    2  硬件设计 本课题的硬件设计包含主控制器.传输数据设计.数据採集设计.控制驱动设计.显示设计.门禁设计. 2.1  主控制器 依据方案三选择S3C6410主控芯片,S3C6410是由Samsung ...

  5. 基于AHB总线的master读写设计(Verilog)

    一.AHB总线学习 1. AHB总线结构 如图所示,AHB总线系统利用中央多路选择机制实现主机与从机的互联问题.从图中可以看出,AHB总线结构主要可分为三部分:主机.从机.控制部分.控制部分由仲裁器. ...

  6. 基于ZigBee的家居控制系统的设计与应用

    基于ZigBee的家居控制系统的设计与应用 PPT简介:http://pan.baidu.com/s/1i38PC6D 摘  要 智能家居是未来家居的发展方向,其利用先进的网络技术.计算机技术和无线通 ...

  7. 基于Verilog HDL 的数字时钟设计

    基于Verilog HDL的数字时钟设计 一.实验内容:     利用FPGA实现数字时钟设计,附带秒表功能及时间设置功能.时间设置由开关S1和S2控制,分别是增和减.开关S3是模式选择:0是正常时钟 ...

  8. Hi3518EV200平台ADC多通道采样

    Hi3518EV200平台ADC多通道采样流程 Hi3518EV200 ADC 本文针对Hi3518EV200平台处理器,通过ADC单次采样方式,实现对多通道(1~4通道)ADC进行采样控制.本文仅仅 ...

  9. 基于Web在线考试系统的设计与实现

    这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973   ...

随机推荐

  1. 【腾讯Bugly干货分享】美团大众点评 Hybrid 化建设

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/rNGD6SotKoO8frmxIU8-xw 本期 T ...

  2. IOS9.0中hash值的bug与解决方案

    事件起因 事情是这样的:产品上线发布,突然出现了问题.运营Gg过来反应,当场给露珠演示,运营同事的手机是iphone,bug确实是存在的.奇怪的是露珠用了其他iphone手机(借别人的,露珠的是吊死安 ...

  3. ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器

    一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...

  4. Redis 主从配置和参数详解

    安装redis 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解压redis tar -xvf redis-.ta ...

  5. ASP.NET MVC 控制器激活(一)

    ASP.NET MVC 控制器激活(一) 前言 在路由的篇章中讲解了路由的作用,讲着讲着就到了控制器部分了,从本篇开始来讲解MVC中的控制器,控制器是怎么来的?MVC框架对它做了什么?以及前面有的篇幅 ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (34) ------ 第六章 继承与建模高级应用之多条件与QueryView

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-10  创建一个多条件过滤 问题 你想使用多个条件为实体过滤表中的行. 解决方案 ...

  7. iOS----集成ijkplayer视频直播

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  8. 自定义模拟一个Spring IOC容器

    一.模拟一个IOC容器: 介绍:现在,我们准备使用一个java project来模拟一个spring的IOC容器创建对象的方法,也就是不使用spring的jar自动帮助我们创建对象,而是通过自己手动书 ...

  9. Sql Server系列:子查询

    1 子查询概念 子查询是嵌套在另一个查询中的普通T-SQL查询.在有一个SELECT语句通过使用小括号创建子查询,作为另一个查询的部分数据或条件的基础. 子查询通常用于满足以下某个需求: ◊ 将一个查 ...

  10. 【WP开发】记录屏幕操作

    在某些应用中,比如游戏,有时候需要将用户的操作记录下来.ScreenCapture类提供了这个功能.但必须注意的是:此屏幕记录功能只对当前应用程序的屏幕有效,即只有当前应用程序在前台运行时才有效. 与 ...