STM32
直播中

王玉兰

7年用户 1286经验值
私信 关注
[问答]

stm32f407进行ADC采样,DMA传输数据,数组里面的数据一直为0是为什么?

最近做ADC采样,通过DMA将数据从ADC1的储存器传到自己定义的数组里面,结果传输结果打印出来一直显示为0,求大神指导一下

回帖(2)

袁嫚玲

2024-4-3 15:12:36
ADC转换后的数据是定点数,你用一个float的数组来缓存数据,而float的数据是32位,DMA的设置字长是halfword,这怎么能传过去呢?没见过之间把adc传到浮点数这样做,你是否先把get_buffer改成uint16先试试看。
举报

温暖镜头

2024-4-3 16:15:37
出现数组里面的数据一直为0的情况,可能是以下几个原因导致的:

1. ADC配置错误:首先需要确保ADC的初始化和配置正确,包括设置采样周期、采样分辨率、参考电压等。要确保ADC的使能、DMA模式和连续采样模式等设置正确。

2. DMA配置错误:DMA的配置也需要注意,确保设置正确的目的地址(即数组的首地址)、数据宽度和传输数据的数量等参数。要注意确保DMA通道和ADC通道的对应关系正确。

3. 中断处理错误:如果使用了中断来触发DMA传输完成的通知,则需要检查中断处理函数是否正确设置。确保中断处理函数正确地处理传输完成的标志位,并进行相应的处理操作。

4. 数组定义错误:如果数组一直为0,也可能是数组的定义和使用存在问题。需要确保数组的定义在全局范围内,且没有被其他变量或者函数重定义覆盖。

以上是一些可能导致数组一直为0的常见原因,你可以仔细检查一下以上几个方面的配置和代码,看是否存在配置错误或者逻辑问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分