久芯网

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

avatar sldkjf 提问时间: 2023-08-28 15:40:08 / 已解决

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

如需获得 stm32f407 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

5个回答
  • avatar yr
    最佳答案
    回答时间: 2023-08-28 16:12:33

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

  • avatar 胤幻1988
    回答时间: 2023-08-28 16:34:20

    三楼说的很有可能,数值类型换成整形看下~

  • avatar wenyangzeng
    回答时间: 2023-08-28 16:53:00

    ST官方有例程可以参考: ADC_RegularConversion_DMA.rar (5.99 MB, 下载次数: 21) 2021-7-15 10:00 上传 点击文件名下载附件 下载积分: ST金币 -1

  • avatar xmshao
    回答时间: 2023-08-28 17:21:45

    建议你分两步来检查。第一步检查确认DMA传输,即从ADC结果到内存数组这个过程有无问题。如有问题,重点检查DMA相关配置。若没问题,则进入第二步,即检查打印输出这块,检查相关代码及外部配合的软硬件工具。

  • avatar sldkjf
    回答时间: 2023-08-28 17:53:15
    yr 发表于 2021-7-15 10:21
    ADC转换后的数据是定点数,你用一个float的数组来缓存数据,而float的数据是32位,DMA的设置字长是halfword ...

    问题解决了,确实数组设置为float,显示不出来,另外上边ADC和dma中的一些初始化设置顺序也有点问题

会员中心 微信客服
客服
回到顶部