完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是STM32初学者,无奈公司要一个月内改一个老的项目!
以下是程序中关于有关ADC的配置,右边的注释都是我添加的(参照的固件库使用手册): void Set_System(void) { GPIO_InitTypeDef GPIO_InitStructure; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/ /* RCC system reset(for debug purpose) */ RCC_DeInit(); /*将外设 RCC 寄存器重设为缺省值 */ RCC_HSICmd(ENABLE); /*使能内部高速晶振(HSI) */ RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); /*设置 HSI 作为系统时钟 */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* 使能预取指缓存 */ FLASH_SetLatency(FLASH_Latency_0); /* 设置代码延时值 FLASH_Latency_0=0延时周期*/ RCC_HCLKConfig(RCC_SYSCLK_Div2); /* HCLK = SYSCLK/2 */ //RCC_PCLK1Config(RCC_HCLK_Div1);/* PCLK1 = HCLK */ //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK2 = HCLK */ RCC_ADCCLKConfig(RCC_PCLK2_Div4); /* ADCCLK = PCLK2/4 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); } void adciniti(void) { ADC_InitTypeDef ADC_InitStruct; ADC_InitStruct.ADC_Mode=ADC_Mode_Independent; //ADC1 和 ADC2 工作在独立模式 ADC_InitStruct.ADC_ScanConvMode=DISABLE; //规定了模数转换工作在扫描还是单次(单通道)模式 ADC_InitStruct.ADC_ContinuousConvMode=DISABLE; //规定了模数转换工作在连续还是单次模式 ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动 ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right; //ADC 数据右对齐 ADC_InitStruct.ADC_NbrOfChannel=0X01; //规定了顺序进行规则转换的 ADC 通道的数目,取值1-16 ADC_Init(ADC1,&ADC_InitStruct); // 根据 ADC_InitStruct 中指定的参数初始化外设 ADC1 的寄存器 ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5); //设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间 ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); //重置 ADC1 的校准寄存器 while (ADC_GetResetCalibrationStatus(ADC1)); //ADC校准寄存器选择完毕 ADC_StartCalibration(ADC1); //开始 ADC1 的校准状态 while (ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能 ADC1 的软件转换启动功能 } 我想问下,采样的周期是怎么算的 按照我个人的理解是:ADCCLK=PCLK2/4=HCLK/4=SYSCLK/2 /4=8M/2/4=1M 再根据STM32参考手册里: 16.7 可编程的通道采样时间 ADC 使用若干个 ADC_CLK 周期对输入电压采样,采样周期数目可以通过 ADC_SMPR1 和 ADC_SMPR2 寄存器中的 SMP[2:0]位而更改。每个通道可以以 不同的时间采样。总转换时间如下计算: T CONV = 采样时间+ 12.5 个周期 例如: 当 ADCCLK=14MHz 和 1.5 周期的采样时间 T CONV = 1.5 + 12.5 = 14 周期 = 1μs 采样时间即:55.5*1us=55.5us 总转换时间为:(55.5+12.5)*1us=68us 请各位高手不吝赐教!谢谢 |
|
相关推荐
7个回答
|
|
这个参考我们的不完全手册。
|
|
|
|
路过,,,,,,,跟着原子的脚步走。。。。
|
|
|
|
跟原子走,捧原子场。。。
|
|
|
|
先去看看吧!不行再来求教!
|
|
|
|
回楼主位:
我想问下,采样的周期是怎么算的 按照我个人的理解是:ADCCLK=PCLK2/4=HCLK/4=SYSCLK/2 /4=8M/2/4=1M 这样算是不对的。 首先你要确定你的系统时钟是多少,SYSCLK是8的倍频,一般为72MHZ,但要想adc工作在最大的时钟下,SYSCLK是8的7倍频 = 56MHZ, ADCCLK=PCLK2/4=HCLK/4=SYSCLK /4 =14MHZ,这样adc,在采样周期1.5个周期是,可以接近 1M |
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
747浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 09:18 , Processed in 0.839484 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号