OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8193|回复: 15

H743VIT6芯片使用ADC+DMA数据无法存进内存数组中

[复制链接]

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
发表于 2021-11-2 11:39:39 | 显示全部楼层 |阅读模式
1金钱
H743系列芯片,HAL库开发,定义数组u16 ADC_DMA_Buf[256];用于存储来自ADC采集到的数据,ADC配置为ADC1 ch10,触发方式为外部触发,检查过了ADC可以被外部信号的上升沿正常触发并采集,想要实现的就是采集256个数据通过DMA循环存进数组 ADC_DMA_Buf[256]中,但是按照下面的配置发现数组中根本就没有数据,说明数据并没有通过DMA存进去,请大佬们帮忙看一下这个配置哪里存在问题?
DMA配置
adc+dma.png
ADC及通道配置,并开启ADC-DMA传输
ADC+DMA2.png
ADC时钟及引脚设置
ADC msp.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2021-11-2 12:33:50 | 显示全部楼层
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-2 13:33:47 | 显示全部楼层

感谢            
回复

使用道具 举报

11

主题

2153

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4938
金钱
4938
注册时间
2015-1-10
在线时间
619 小时
发表于 2021-11-2 13:45:21 | 显示全部楼层
外部中断正常吗
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-2 13:55:30 | 显示全部楼层

您好,是正常的,我测试过一秒进入外部中断的次数也是没问题的,我在主函数while中每隔1s中打印一个AD转换后的数据也是正常的,说明AD有被外部中断触发并采集到数据,但是数据并没有通过DMA存进数组中
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-2 14:48:29 | 显示全部楼层
        ADC1_Handler.Init.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR; 将配置改为这样仍然存在这种问题
回复

使用道具 举报

11

主题

2153

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4938
金钱
4938
注册时间
2015-1-10
在线时间
619 小时
发表于 2021-11-2 16:30:05 | 显示全部楼层
车嘉炜 发表于 2021-11-2 13:55
您好,是正常的,我测试过一秒进入外部中断的次数也是没问题的,我在主函数while中每隔1s中打印一个AD转 ...

那可以理解为ADC没有触发DMA传输
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-2 16:43:24 | 显示全部楼层
阿侑kevin 发表于 2021-11-2 16:30
那可以理解为ADC没有触发DMA传输

我对比了很多的例程,也找不到这个问题出在哪里,您看我的配置有哪里存在问题吗?ADC1_Handler.Init.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR; 将配置改为这样仍然存在这种问题
回复

使用道具 举报

11

主题

2153

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4938
金钱
4938
注册时间
2015-1-10
在线时间
619 小时
发表于 2021-11-3 09:16:49 | 显示全部楼层
车嘉炜 发表于 2021-11-2 16:43
我对比了很多的例程,也找不到这个问题出在哪里,您看我的配置有哪里存在问题吗?ADC1_Handler.Init.Conv ...

MY_ADC_Init里面的HAL_DMA_DeInit放在时钟开启后,你这样会把之前放在结构体里面的DMA配置都清除掉
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-3 09:28:47 | 显示全部楼层
H7芯片的话,检查Cache问题。
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-3 09:56:56 | 显示全部楼层
wklhwkl 发表于 2021-11-3 09:28
H7芯片的话,检查Cache问题。

你好我也查到过论坛里面有人反应这个问题但是我把  主函数里Cache_Enable();  注释掉也有上述问题
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-3 10:50:27 | 显示全部楼层
车嘉炜 发表于 2021-11-3 09:56
你好我也查到过论坛里面有人反应这个问题但是我把  主函数里Cache_Enable();  注释掉也有上述问题

可以开启。 可以试试在读取DMA数组之前加上这句话。SCB_InvalidateDCache_by_Addr((uint32_t *)DMA数组, 数组长度);
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-11-3 11:15:07 | 显示全部楼层
wklhwkl 发表于 2021-11-3 10:50
可以开启。 可以试试在读取DMA数组之前加上这句话。SCB_InvalidateDCache_by_Addr((uint32_t *)DMA数组,  ...

还是不行啊大佬,可以给我一个您的联系方式吗 麻烦您帮我看看 或者您加我微信cjw0535 多谢
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-4 08:31:42 | 显示全部楼层
车嘉炜 发表于 2021-11-3 11:15
还是不行啊大佬,可以给我一个您的联系方式吗 麻烦您帮我看看 或者您加我微信cjw0535 多谢

你还没解决的话  就把工程发出来吧。
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-11-4 10:27:48 | 显示全部楼层
帮顶  
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2021-4-8
在线时间
26 小时
发表于 2021-12-13 15:10:12 | 显示全部楼层
车嘉炜 发表于 2021-11-3 11:15
还是不行啊大佬,可以给我一个您的联系方式吗 麻烦您帮我看看 或者您加我微信cjw0535 多谢

兄弟你怎么样了解决了吗?我现在也是这个问题,不知道怎么回事呢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 02:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表