[STM32L4] STM32L431RCT6的ADC DMA采样问题

[复制链接]
1895|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)或双缓冲区技术。
两只袜子 发表于 2024-7-22 14:51 | 显示全部楼层
修改HAL库
elephant00 发表于 2024-7-22 14:51 | 显示全部楼层
使用LL库或寄存器操作
xionghaoyun 发表于 2024-7-23 09:32 | 显示全部楼层
uint32_t 是可以大于256 你拿开发板跑一下例程
tpgf 发表于 2024-7-23 11:00 | 显示全部楼层
这个长度如何进行设置呢 或者是默认的?
kqh11a 发表于 2024-7-29 14:26 | 显示全部楼层
使用 STM32 的 ADC 和 DMA 进行高速数据采集时,如果 HAL_ADC_Start_DMA 的 Length 参数限制在 255,那么可能是由于 DMA 配置的某些限制或者是 HAL 库中的默认设置。
kqh11a 发表于 2024-7-29 14:27 | 显示全部楼层
需要观察DMA 缓冲区大小是否足够大,可以使用 DMA_InitTypeDef 结构体来设置,增加缓冲区大小可以通过定义一个足够大的数组。
突然下起雨 发表于 2024-7-30 18:24 | 显示全部楼层
如果 HAL 库中的某些默认设置限制了 DMA 缓冲区大小,可以尝试修改库中的相关代码。
米多0036 发表于 2024-8-31 13:00 | 显示全部楼层
提到的Length参数限制的问题确实存在,因为DMA和ADC硬件的限制。
米多0036 发表于 2024-8-31 13:02 | 显示全部楼层
HAL_ADC_Start_DMA 函数用于启动ADC的DMA传输,以便将ADC转换结果存储到内存中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

90

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部