一、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时钟频率的确定相关推荐

  1. 火牛(STM32) 多路ADC采样数据经过RS485传输到另一块ARM板路虎(LPC1768)

    调试了好几天终于搞定ADC多路的数据采集,然后通过RS485传输到另一块ARM板上 上程序 /***************************************************** ...

  2. STM32 CubeMX配置ADC+DMA进行FFT(1)

    STM32 CubeMX配置ADC+DMA,计算采样率和ADC电压 原创:睿智嵌入式 最近,因为项目需要处理音频信号,对AD采集的音频信号进行FFT运算,记录一下学习过程. 主要内容: 1.ADC和D ...

  3. ADC采样效应及相关影响解剖

    在前述文章,BUCK电路模拟补偿器的数字化过程 ,我们讨论了模拟补偿器的数字化,事实上,数字化过程的第一个重要的环节就是ADC对反馈量的采样,本文就重点探讨一下由于ADC采样频率带来的一些问题,进而讨 ...

  4. STM8单片机ADC采样功能通过定时器触发

      在使用STM8单片机的ADC功能时,读取ADC数据时一般有两种方式,一种是通常不断地读取采样标志位,来判断ADC采样是否结束,一种是通过中断的方式来通知系统采样是否结束.   有时候采样ADC数据 ...

  5. STM32 ADC 采样 频率的确定

    一 STM32 ADC 采样频率的确定 1.       : 先看一些资料,确定一下ADC 的时钟: (1),由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步.CLK 控制器为A ...

  6. adc 采样时间 采样周期数 采样频率计算(以stm32为例)

    ADC转换就是输入模拟的信号量,单片机转换成数字量.读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期.采样周期一般来说=转换时间+读取时间.而转换时间=采样时间+12.5个时钟周期.采样时间 ...

  7. STM32 FFT DMA ADC THD

    利用STM32 FFT算法计算THD 一.设备准备 -->粤嵌STM32F429IGT6开发板 1块 -->串口调试助手 二.FFT算法意义 使用FFT算法,是为了获取信号在频域的相关参数 ...

  8. adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)

    [导读]  生活环境周围信号万万千,对于一个嵌入式er.我们利用技术去了解世界.改变世界.而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进 ...

  9. STM32的ADC采样与多通道ADC采样

    一 单通道采样  参考资料: <STM32库开发实战指南> 刘火良,杨森著 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图 这里使用的是3362电位器(10K ...

  10. STM32 ADC采样使用内部参考电压

    整理也能进步!写得清楚才能理解更深. [问题背景] 在使用ADC时,通常的用法是Vref+接电源VDD3.3V,然后计算时直接用3.3V做参考电压,但是这种方法忽略了一些情况如供电电压有可能随外部一些 ...

最新文章

  1. PingCode与Jira 敏捷开发管理能力的对比
  2. add-apt-repository:找不到命令_手把手教你使用nodejs编写cli(命令行)
  3. shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本
  4. Java的中排序方式
  5. JDBC之数据库的连接步骤(六步)
  6. 刚看了一个视频,介绍了实体店十几种线上线下引流方法
  7. 清华大学操作系统OS学习(十三)——死锁、进程通信、信号、管道、消息队列和共享内存
  8. 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术AB卷试题与答案.doc...
  9. 任务管理三部曲 - 模板使用说明(超实用模板下载)
  10. OSCHINA网页旋转-愚人节效果
  11. Linux系统入门学习
  12. c语言进行数据统计分析的研究报告,【干货分享】CCTS:临床试验统计分析计划及统计分析报告...
  13. import keras时遇到的错误 TypeError: Descriptors cannot not be created directly. If this call came from a _
  14. 华为云数据中心建设全面复工进行中,预计2021年投入使用
  15. Java Http连接中使用代理(Proxy)及其验证(Authentication)
  16. 微信小程序java美食厨房食谱大全分享系统
  17. APP的多语言设计我们可以做点什么?
  18. Zephyr驱动程序框架简介
  19. 局域网内配置服务器方法--p2p技术、端口映射、网络域名
  20. Linux服务器监控cpu数据shell脚本

热门文章

  1. windows保护无法启动修复服务器,win10使用命令修复系统时提示Windows 资源保护无法启动修复服务怎么办...
  2. Pymol获得蛋白中二级结构信息
  3. 仿射变换(Affine Transformation)原理及应用(1)
  4. 权力的游戏——读《原则2 :应对变化中的世界秩序》(中)
  5. GraphRNN: Generating Realistic Graphs with Deep Auto-Regressive Models
  6. 通过谷歌身份验证器实现双保险认证(1)
  7. Composer 的常用命令
  8. 一个读取3DS文件的类CLoad3DS浅析Ⅰ
  9. 跟我一起学python3(一)
  10. C语言将CSR存储模式转为coo,spmv_csr 稀疏矩阵的DIA/ELLPACK/COO/CSR/HYB表示形式 - 下载 - 搜珍网...