stm32l151 关于ADCadc时钟与采样率关系的问题不知有没有人遇到过

STM32l151中文手册_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32l151中文手册
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢STM32L151定时从Stop模式定时唤醒
13:52:03来源: eefocus
void StopRTCLSIMode(int count)
EXTI_InitTypeDef EXTI_InitS
PWR_RTCAccessCmd(ENABLE);//Allow access to RTC
RCC_LSICmd(ENABLE);//LSI Enable
while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//wait till LSI is ready
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//RTC Clock Source Selection
RCC_RTCCLKCmd(ENABLE);//Enable RTC clock
RTC_WaitForSynchro();//wait for RTC APB registers synchronisation
EXTI_ClearITPendingBit(EXTI_Line20);//配置唤醒中断
EXTI_InitStructure.EXTI_Line = EXTI_Line20;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_I
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_R
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
RTC_WakeUpCmd(DISABLE);//禁止唤醒计数器
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);//唤醒时钟16分频
RTC_SetWakeUpCounter(count);//设置唤醒计数器
RTC_ITConfig(RTC_IT_WUT,EBANLE);//使能唤醒中断
RTC_WakeUpCmd(ENABLE);//使能唤醒计数器
//唤醒中断
void RTC_WKUP_IRQHandler(void)
if(RTC_GetITStatus(RTC_IT_WUT)!=RESET)
RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line20);
Systeminit();
StopRTCLSIMode(2312)//~1S 再次初始化时间
//重新初始化外设
isWKUP = 1;
在主函数中
int main(void)
//1.初始化定时唤醒
//2.进入模式
if(isWKUP)
isWKUP = 0;
//TO DO 唤醒后干一些事情
StopRTCLSIMode(2312)//~1S 再次初始化定时唤醒时间
//进入低模式
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。君,已阅读到文档的结尾了呢~~
STM32L151xx
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
STM32L151xx
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口STM32的ADC采样问题_百度知道查看: 5732|回复: 7
关于ADC的采样时间问题!请高手们赐教~!
主题帖子精华
初级会员, 积分 74, 距离下一级还需 126 积分
在线时间1 小时
我是STM32初学者,无奈公司要一个月内改一个老的项目!
以下是程序中关于有关ADC的配置,右边的注释都是我添加的(参照的固件库使用手册):
void Set_System(void)
& GPIO_InitTypeDef GPIO_InitS
& /* 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_InitS
&&& ADC_InitStruct.ADC_Mode=ADC_Mode_I&& //ADC1 和 ADC2 工作在独立模式
&&& ADC_InitStruct.ADC_ScanConvMode=DISABLE;&&&&&&& //规定了模数转换工作在扫描还是单次(单通道)模式
&&& ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;& //规定了模数转换工作在连续还是单次模式
&&& ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_N& //转换由软件而不是外部触发启动
&&& ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_R&& //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
请各位高手不吝赐教!谢谢
主题帖子精华
在线时间389 小时
这个参考我们的不完全手册。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
中级会员, 积分 477, 距离下一级还需 23 积分
在线时间1 小时
路过,,,,,,,跟着原子的脚步走。。。。
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看)
ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
主题帖子精华
中级会员, 积分 477, 距离下一级还需 23 积分
在线时间1 小时
跟原子走,捧原子场。。。
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看)
ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
主题帖子精华
初级会员, 积分 74, 距离下一级还需 126 积分
在线时间1 小时
回复【2楼】正点原子:
这个参考我们的不完全手册。
---------------------------------
先去看看吧!不行再来求教!
主题帖子精华
初级会员, 积分 65, 距离下一级还需 135 积分
在线时间0 小时
回楼主位:
我想问下,采样的周期是怎么算的
按照我个人的理解是: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&
主题帖子精华
中级会员, 积分 385, 距离下一级还需 115 积分
在线时间82 小时
&RCC_ADCCLKConfig(RCC_PCLK2_Div4);&&&&&&&&&&&&&&&&&&&&&&&/*&ADCCLK&=&nbspCLK2/4&*/
这样不是大于14M了吗?这个有问题吗?新手疑问
主题帖子精华
金牌会员, 积分 1795, 距离下一级还需 1205 积分
在线时间74 小时
没有看到使用PLL.
LZ理解是对的.
如果ADCCLK超过手册规定值,转换精度就不能保证达到手册的值,具体表现是噪声变大,INL变大.
技术讨论请发帖 , 需要我回复请点左下的
让系统通知我 .
本人不通过其他方式返回任何参数.
Powered by

我要回帖

更多关于 stm32 adc采样 的文章

 

随机推荐