langlangago 发表于 2024-1-23 10:25:39

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

在使能Cache之前,使用定时器触发ADC并采用DMA传输的方式进行数据传输,并在AXI RAM(地址0x24000000)中开辟了存储空间,定时器可以正常计数,ADC中DR寄存器的值也不断更新,DMA缓存区中也有数据更新,但使能Cache后(按照DMA双缓冲配置例程),定时器也不计数了,DR寄存器中只有个刚上电后采集的数据,并且不更新了,且DMA缓冲区中都是0x0,且进入不了DMA中断服务函数,请教大神帮忙答疑一下?

eric2013 发表于 2024-1-23 10:31:18

看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

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

langlangago 发表于 2024-1-23 10:43:40

eric2013 发表于 2024-1-23 10:31
看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

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

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

langlangago 发表于 2024-1-24 22:57:44

eric2013 发表于 2024-1-23 10:31
看下map文件,你的ADC缓冲是否确定安排到0x24000000里面。

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

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

eric2013 发表于 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?mod=viewthread&tid=85910&fromuid=58
(出处: 硬汉嵌入式论坛)

langlangago 发表于 2024-1-25 11:38:18

eric2013 发表于 2024-1-25 00:34
这个是MDK的bug,你可以调试看下,实际是进去了

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

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