硬汉嵌入式论坛

 找回密码
 立即注册
查看: 287|回复: 5
收起左侧

[ADC] 使用定时器触发ADC转换DMA传输,在开启Cache后都不正常工作

[复制链接]

4

主题

13

回帖

25

积分

新手上路

积分
25
发表于 2024-1-23 10:25:39 | 显示全部楼层 |阅读模式
在使能Cache之前,使用定时器触发ADC并采用DMA传输的方式进行数据传输,并在AXI RAM(地址0x24000000)中开辟了存储空间,定时器可以正常计数,ADC中DR寄存器的值也不断更新,DMA缓存区中也有数据更新,但使能Cache后(按照DMA双缓冲配置例程),定时器也不计数了,DR寄存器中只有个刚上电后采集的数据,并且不更新了,且DMA缓冲区中都是0x0,且进入不了DMA中断服务函数,请教大神帮忙答疑一下?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-23 10:31:18 | 显示全部楼层
看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

因为开Cache仅仅是影响数据一致性,并不会影响ADC,TIM和DMA的正常运行。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2024-1-23 10:43:40 | 显示全部楼层
eric2013 发表于 2024-1-23 10:31
看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

因为开Cache仅仅是影响数据一致性,并不会影 ...

好的,十分感谢,我去尝试一下!
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2024-1-24 22:57:44 | 显示全部楼层
eric2013 发表于 2024-1-23 10:31
看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

因为开Cache仅仅是影响数据一致性,并不会影 ...

例程中 __STATIC_INLINE void SCB_EnableDCache (void)函数里面的内容是灰色的;而我创建的工程中里面却不是怎么回事?

微信截图_20240124225524.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-25 00:34:40 | 显示全部楼层
langlangago 发表于 2024-1-24 22:57
例程中 __STATIC_INLINE void SCB_EnableDCache (void)函数里面的内容是灰色的;而我创建的工程中里面却 ...

这个是MDK的bug,你可以调试看下,实际是进去了

发现MDK5.25一个bug,语法检测机制中自动让条件编译中未使用的部分变成灰色,有时候是不正确的
https://www.armbbs.cn/forum.php? ... 5910&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2024-1-25 11:38:18 | 显示全部楼层
eric2013 发表于 2024-1-25 00:34
这个是MDK的bug,你可以调试看下,实际是进去了

发现MDK5.25一个bug,语法检测机制中自动让条件编译中 ...

我之前用CubeMax配置的相关操作在运行的时候就会出现上述问题(使用定时器触发ADC转换DMA传输,在开启Cache后都不正常工作),但是我手动配置后,现在可以正常工作,这个问题时出在哪里了呢,我检查了一下初始化配置代码,都是一样的。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 05:42 , Processed in 0.169249 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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