打印
[STM32L4]

STM32L431RCT6的ADC DMA采样问题

[复制链接]
491|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Aist2018|  楼主 | 2024-7-22 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, DMA, DM, ADC, AD
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)最后这个Length不能超过255,超过不工作了。怎么调大这个参数范围,不然采不满一个周期数据。有的高速采样缓冲区能设置成2048.

使用特权

评论回复
沙发
香水城| | 2024-7-22 12:53 | 只看该作者
这个Length参数可以设置到65535,是的代码其它方面问题吧。

使用特权

评论回复
板凳
jcky001| | 2024-7-22 14:50 | 只看该作者
检查硬件限制

使用特权

评论回复
地板
cr315| | 2024-7-22 14:50 | 只看该作者
如果确实存在长度限制,并且你需要传输更多的数据,你可以考虑使用循环缓冲区(ring buffer)或双缓冲区技术。

使用特权

评论回复
5
两只袜子| | 2024-7-22 14:51 | 只看该作者
修改HAL库

使用特权

评论回复
6
elephant00| | 2024-7-22 14:51 | 只看该作者
使用LL库或寄存器操作

使用特权

评论回复
7
xionghaoyun| | 2024-7-23 09:32 | 只看该作者
uint32_t 是可以大于256 你拿开发板跑一下例程

使用特权

评论回复
8
tpgf| | 2024-7-23 11:00 | 只看该作者
这个长度如何进行设置呢 或者是默认的?

使用特权

评论回复
9
kqh11a| | 2024-7-29 14:26 | 只看该作者
使用 STM32 的 ADC 和 DMA 进行高速数据采集时,如果 HAL_ADC_Start_DMA 的 Length 参数限制在 255,那么可能是由于 DMA 配置的某些限制或者是 HAL 库中的默认设置。

使用特权

评论回复
10
kqh11a| | 2024-7-29 14:27 | 只看该作者
需要观察DMA 缓冲区大小是否足够大,可以使用 DMA_InitTypeDef 结构体来设置,增加缓冲区大小可以通过定义一个足够大的数组。

使用特权

评论回复
11
突然下起雨| | 2024-7-30 18:24 | 只看该作者
如果 HAL 库中的某些默认设置限制了 DMA 缓冲区大小,可以尝试修改库中的相关代码。

使用特权

评论回复
12
米多0036| | 2024-8-31 13:00 | 只看该作者
提到的Length参数限制的问题确实存在,因为DMA和ADC硬件的限制。

使用特权

评论回复
13
米多0036| | 2024-8-31 13:02 | 只看该作者
HAL_ADC_Start_DMA 函数用于启动ADC的DMA传输,以便将ADC转换结果存储到内存中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

78

帖子

0

粉丝