你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L4 ADC+DMA问题

[复制链接]
skyflier 提问时间:2021-1-4 22:44 /
大家好,现在需要使用 ADC+DMA采样,每次采样300个数据:
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Sample,300); //开始采样

//转换结束后,关闭ADC
void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
       
        HAL_ADC_Stop_DMA(&hadc1);

}


现遇到的问题如下:
ADC时钟设置为4M或8M时,可以正常采样。但是当ADC时钟设置为12M 或更高时,发现无法进入 HAL_ADC_ConvCpltCallback 中断函数,调试发现只有完成几个数据的转换(ADC_Sample 数组中只有几个ADC数值)

请问可能是什么原因造成?谢谢

收藏 评论9 发布时间:2021-1-4 22:44

举报

9个回答
水晶之泪0517 回答时间:2021-1-5 09:55:02
可以关闭中断,延时观察DMA->CNT的情况
小歆-2051663 回答时间:2021-1-5 10:00:57
不知道你的具体型号,你要看一下规格书ADC时钟的最大可以是多少。

另外ADC的采样频率也是有最大值的,印象中是5.33MHz。

如果超过了最大值肯定是转换不出结果的。
skyflier 回答时间:2021-1-5 14:50:02
水晶之泪0517 发表于 2021-1-5 09:55
可以关闭中断,延时观察DMA->CNT的情况

谢谢
我调试看了,DMA里的CNDTR数值是289,也就是只有(300-289=11)个ADC的数据
skyflier 回答时间:2021-1-5 14:52:27
小歆-2051663 发表于 2021-1-5 10:00
不知道你的具体型号,你要看一下规格书ADC时钟的最大可以是多少。

另外ADC的采样频率也是有最大值的,印象 ...

谢谢
我用的是STM32L431 ,使用cubeMX给ADC配置时钟频率的 。如果是ADC时钟频率是16M的话, 采样一次按照15个时钟节拍来,那么采样频率是 16/15=1.067 MHz
skyflier 回答时间:2021-1-5 20:46:09
大家好,有没有可能是因为DMA时钟频率不够高造成的? 目前系统时钟为4M,APB2也是配置为了4M
wyxy163@126.com 回答时间:2021-1-5 22:28:03
提示: 作者被禁止或删除 内容自动屏蔽
radio2radio 回答时间:2021-1-5 23:47:10
skyflier 发表于 2021-1-5 20:46
大家好,有没有可能是因为DMA时钟频率不够高造成的? 目前系统时钟为4M,APB2也是配置为了4M ...

估计是这个问题,你系统时钟设那么低,是为了省电? 为什么不首先全速运行,80MHz,等功能正常以后再考虑降速省电等问题。

偶然发现,STM32L43x,外设ADC超快,驱动频率最高80MHz!!!!
其他各种STM32都比较低,G431 - 60MHz,H750/F767/F407等等 - 36MHz,F103只有14MHz。

参考这个看一看:
https://github.com/bungernut/STM32_ADCTriggerScope

skyflier 回答时间:2021-1-6 10:01:24
数码小叶 发表于 2021-1-5 22:28
是不是低功耗造成的,工作在正常模式还是低功耗模式?

功耗有要求,所以频率选择了4M ,但ADC工作时,是正常模式,没有进入低功耗模式
skyflier 回答时间:2021-1-6 10:03:29
radio2radio 发表于 2021-1-5 23:47
估计是这个问题,你系统时钟设那么低,是为了省电? 为什么不首先全速运行,80MHz,等功能正常以后再考虑 ...

嗯,选择4M是为了省电,功耗有要求现在。
我再研究确认下,改下系统频率确认下,谢谢

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版