adcclk最大_关于STM32 在进行ADC采样时,ADCCLK时钟频率的确定
一、ADC时钟配置
1、ADC的时钟频率由系统时钟经过PCLK2经过分频后得到:
PCLK2:2分频后得到
4分频后得到
6分频后得到
8分频后得到
2、ADC选择通道x的采样时间
最小为1.5周期,最大为239.5周期
其次还有:7.5周期
13.5周期
28.5周期
41.5周期
55.5周期
71.5周期
3、ADC采样总的转换时间Tconver
Tconver=采样时间+12.5个周期
例如:
当ADCCLK=14MHz和1.5周期的采样时间
Tconver=(1.5+12.5)*1/14=1us;其中14为ADCCLK
4、例程(采样频率主要由采样点间隔时间决定的)
例如:我们对50Hz的输入信号进行采集。
对此有两种方案:
方案1:
50Hz信号的周期为20ms,如果在一个周期内采集2500个数据点(注:一周期最少采集20个数据点),每2个采样点间隔为20ms/2500=8us。
如果采用71.5周期的采样时间,则ADC采样周期一周期大小为8/71.5us,则ADC的时钟频率为ADCCLK=1/(8/71.5)=9MHz.
方案2:
50Hz信号的周期为20ms,如果在一个周期内采集1000个数据点(注:一周期最少采集20个数据点),每2个采样点间隔为20ms/1000=20us。
如果采用239.5周期的采样时间,则ADC采样周期一周期大小为20/239.5us,则ADC的时钟频率为ADCCLK=1/(20/239.5)=12MHz.
5、对于50Hz信号采集程序(DMA模式)如下:
void ADC1_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_ADC1 , ENABLE );
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE );
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
void ADC1_Mode_Config(void)
{
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr=DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_PeripheralBaseAddr= ADC1_DIR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=1;
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority=DMA_Priority_High;
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
DMA_Init(DMA1_Channel1,&DMA_InitStructure);
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=1;
ADC_Init(ADC1,&ADC_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//72MHz/8=9MHz
ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1, ADC_SampleTime_239Cycles5 );
ADC_DMACmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
void ADC1_Init(void)
{
ADC1_GPIO_Config();
ADC1_Mode_Config();
}
adcclk最大_关于STM32 在进行ADC采样时,ADCCLK时钟频率的确定相关推荐
- 火牛(STM32) 多路ADC采样数据经过RS485传输到另一块ARM板路虎(LPC1768)
调试了好几天终于搞定ADC多路的数据采集,然后通过RS485传输到另一块ARM板上 上程序 /***************************************************** ...
- STM32 CubeMX配置ADC+DMA进行FFT(1)
STM32 CubeMX配置ADC+DMA,计算采样率和ADC电压 原创:睿智嵌入式 最近,因为项目需要处理音频信号,对AD采集的音频信号进行FFT运算,记录一下学习过程. 主要内容: 1.ADC和D ...
- ADC采样效应及相关影响解剖
在前述文章,BUCK电路模拟补偿器的数字化过程 ,我们讨论了模拟补偿器的数字化,事实上,数字化过程的第一个重要的环节就是ADC对反馈量的采样,本文就重点探讨一下由于ADC采样频率带来的一些问题,进而讨 ...
- STM8单片机ADC采样功能通过定时器触发
在使用STM8单片机的ADC功能时,读取ADC数据时一般有两种方式,一种是通常不断地读取采样标志位,来判断ADC采样是否结束,一种是通过中断的方式来通知系统采样是否结束. 有时候采样ADC数据 ...
- STM32 ADC 采样 频率的确定
一 STM32 ADC 采样频率的确定 1. : 先看一些资料,确定一下ADC 的时钟: (1),由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步.CLK 控制器为A ...
- adc 采样时间 采样周期数 采样频率计算(以stm32为例)
ADC转换就是输入模拟的信号量,单片机转换成数字量.读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期.采样周期一般来说=转换时间+读取时间.而转换时间=采样时间+12.5个时钟周期.采样时间 ...
- STM32 FFT DMA ADC THD
利用STM32 FFT算法计算THD 一.设备准备 -->粤嵌STM32F429IGT6开发板 1块 -->串口调试助手 二.FFT算法意义 使用FFT算法,是为了获取信号在频域的相关参数 ...
- adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)
[导读] 生活环境周围信号万万千,对于一个嵌入式er.我们利用技术去了解世界.改变世界.而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进 ...
- STM32的ADC采样与多通道ADC采样
一 单通道采样 参考资料: <STM32库开发实战指南> 刘火良,杨森著 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图 这里使用的是3362电位器(10K ...
- STM32 ADC采样使用内部参考电压
整理也能进步!写得清楚才能理解更深. [问题背景] 在使用ADC时,通常的用法是Vref+接电源VDD3.3V,然后计算时直接用3.3V做参考电压,但是这种方法忽略了一些情况如供电电压有可能随外部一些 ...
最新文章
- PingCode与Jira 敏捷开发管理能力的对比
- add-apt-repository:找不到命令_手把手教你使用nodejs编写cli(命令行)
- shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本
- Java的中排序方式
- JDBC之数据库的连接步骤(六步)
- 刚看了一个视频,介绍了实体店十几种线上线下引流方法
- 清华大学操作系统OS学习(十三)——死锁、进程通信、信号、管道、消息队列和共享内存
- 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术AB卷试题与答案.doc...
- 任务管理三部曲 - 模板使用说明(超实用模板下载)
- OSCHINA网页旋转-愚人节效果
- Linux系统入门学习
- c语言进行数据统计分析的研究报告,【干货分享】CCTS:临床试验统计分析计划及统计分析报告...
- import keras时遇到的错误 TypeError: Descriptors cannot not be created directly. If this call came from a _
- 华为云数据中心建设全面复工进行中,预计2021年投入使用
- Java Http连接中使用代理(Proxy)及其验证(Authentication)
- 微信小程序java美食厨房食谱大全分享系统
- APP的多语言设计我们可以做点什么?
- Zephyr驱动程序框架简介
- 局域网内配置服务器方法--p2p技术、端口映射、网络域名
- Linux服务器监控cpu数据shell脚本
热门文章
- windows保护无法启动修复服务器,win10使用命令修复系统时提示Windows 资源保护无法启动修复服务怎么办...
- Pymol获得蛋白中二级结构信息
- 仿射变换(Affine Transformation)原理及应用(1)
- 权力的游戏——读《原则2 :应对变化中的世界秩序》(中)
- GraphRNN: Generating Realistic Graphs with Deep Auto-Regressive Models
- 通过谷歌身份验证器实现双保险认证(1)
- Composer 的常用命令
- 一个读取3DS文件的类CLoad3DS浅析Ⅰ
- 跟我一起学python3(一)
- C语言将CSR存储模式转为coo,spmv_csr 稀疏矩阵的DIA/ELLPACK/COO/CSR/HYB表示形式 - 下载 - 搜珍网...