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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版