基于STM32Cube的ADC模数采样设计

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的数据实时输出。

来自为知笔记(Wiz)

附件列表

时间: 2024-10-07 17:49:14

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

基于单片机的光控路灯设计含程序和仿真图

基于单片机的光控路灯设计含程序和仿真图本设计是以光敏电阻对于外界光线强弱的感应能力为基础进行的路灯自动化控制系统设计. 当光线强度弱到一定程度的时候, 路灯就会自动灭掉: 当光线强到一定程度的时候, 路灯就会自动开启. 本设计以当外界光线强度弱到使光敏电阻阻值大于等于 200 欧的时候, LED 灯会自动开启:小于 200 欧的时候,自动关闭.完整的资料在闯客网技术论坛可以免费下载,资料群:613377058下载地址:https://bbs.usoftchina.com/thread-21051

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

2  硬件设计 本课题的硬件设计包括主控制器.数据传输设计.数据采集设计.控制驱动设计.显示设计,门禁设计. 2.1  主控制器 根据方案三选择S3C6410主控芯片,S3C6410是由Samsung公司推出的一款低功耗.高性价比的RSIC处理器 ,基于ARM11内核,内置强大的硬件加速,显示处理和缩放,运动视频处理,音频处理[9].这个作为智能家居的处理器是不二之选,硬件性能上完全可以实现.本设计选用的基于S3C6410的OK6410开发板.开发板上拥有如下特征[10]: (1)  12MHz

基于Linux的智能家居的设计(2)

1  系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进行了多方面的考虑有下面两个实现方案: 方案一:利用STM32单片机作为手持终端的控制器,使用按键和12864液晶屏作为人机交互的接口.利用51单片机作为房子内部的电灯.空调.门禁等家电的控制器,利用串口实现STM32单片机和51单片机作为传输数据的通道.这个能够实现.可是.机械按键和12864在智能

毕业设计——基于STM32的音乐播放器设计(一)

基于STM32的音乐播放器设计, 源代码下载地址:http://download.csdn.net/detail/cxp2205455256/8334021      SD卡文件下载地址:http://download.csdn.net/detail/cxp2205455256/8334089 电路图下载地址:文件太大了,上传不了....... 以下是截图: 1.硬件电路 2.软件主界面 3.音乐播放器界面 4.音乐定时播放界面 5.音乐列表界面 6.日历功能界面 9.温度功能界面 10.计算器

基于Linux的智能家居的设计(1)

写在前面:做了半年的毕业设计,找到的工作与这个完全无关,发现自己现在有写不甘心,但是我还是在关注这方面的发展,自己的摸索和前人的帮助我完成了智能家居的一部分,希望这个能够给一些初学者 能够一些便利,毕竟技术是一个开放的,不属于某一个人的. 摘要 本课题主要目的是设计和实现一个基于Linux开发平台的智能家居系统.本系统主要使用PVC板做成的家居模型.本系统硬件使用基于ARM架构的samsung S3C6410芯片做成的OK6410开发板为手持终端,利用Zigbee实现网络通讯,并结合各种电子元器

DSP基础学习-ADC同步采样

彭会锋 2015-04-28 20:31:06 在DSP28027 LauchPad学习过程中,关于ADC同步采样和顺序采样的区别稍加研究了一下,这里主要关注ADC同步采样的问题,ADC同步采样有两个不同的实际表述: 1 多通道同步采样:对多通道能够在同一时刻进行采样,对应于采样过程中对采样管脚同时采样保持(转换可以是有先有后的),主要针对多通道进行同时刻数据采集,适合多输入.信号电平快速变化.相位要求严格等应用场合:(这个应该就是F28027芯片中想要表达的意思!) 2 跟踪采样:为了使采样频

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

基于ZigBee的家居控制系统的设计与应用 PPT简介:http://pan.baidu.com/s/1i38PC6D 摘  要 智能家居是未来家居的发展方向,其利用先进的网络技术.计算机技术和无线通信技术等将家居中的各种电子电气设备连接起来,统一管理.远程监控和资源共享,实现了高效.便利的生活环境.近些年互联网的迅猛发展,网络的稳定性.安全性和网络带宽都有了长足的发展,由互联网提供的各种服务已经深入到人们生活的方方面面,因此将智能家居系统同互联网结合起来,为用户提供远程控制服务,延伸智能家居系

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

3  开发环境的搭建 本次课题使用的开发环境比较特殊,没有一个现成的集成开发环境,需要自己一步一步的搭建开发环境,开发环境的搭建的过程十分复杂,而且如果没有这个开发环境本次课题就无法进行.因此,在进行设计时,必须要进行开发环境的搭建. 3.1  虚拟机安装和系统安装 在PC机上安装VMware workstation 10.0虚拟机,将虚拟网络改为桥接模式,在虚拟机中安装Ubuntu12.04的系统,然后安装VM-tools. 在windows下面的创建共享目录G:/share,实现window

STM32学习笔记1(ADC多通道采样)

STM32 ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存.ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ.在每次转换结束后,由DMA循环将转换的数据传输到内存中.ADC可以连续采集N次求平均值.最后通过串口传输出最后转换的结果.程序如下:#i nclude "stm32f10x.h" //这个头文件包括STM32F10x所有外围寄存器.位.内存映射的定义#i nclude "eval.h" //头文件(包括串口.按键.L