打印

GD32E230,ADC多通道开启DMA中断,会受FLASH擦写的影响而停止

[复制链接]
1730|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiangjiayu|  楼主 | 2021-5-12 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiangjiayu 于 2021-5-20 14:54 编辑

公司产品用的GD32E230K8,ADC采样5个通道:连续转换关闭、使用软件触发
ADC采样5个通道使用DMA传输,并且使能传输完成中断(DMA_INT_FTF),大概0.5ms进入一次DMA中断,进入中断后,触发ADC转换

上述逻辑和代码,测试没有问题,正常运行

但是,今天发现,FLASH擦写几次后,DMA传输就停止了,表现为ADC的缓存地址中,数据不更新。

请问这可能是什么原因引起的?要如何改进?谢谢

我这样测试过:
1.不擦写FLASH:问题解决
2.擦写FLASH前  DISABLE  DMA通道:问题依旧
3.擦写FLASH前  关闭DMA中断:问题依旧
4.擦写FLASH前  DISABLE  ADC:问题依旧
5.擦写FLASH前  关闭所有中断:问题依旧
6.只写FLASH 不擦除,问题解决(疑似解决)
7.擦写之前,必须deinit ADC和DMA

这是芯片BUG吗?还是我的操作不对?求指导,多谢




使用特权

评论回复
沙发
单片机使者| | 2021-5-15 14:01 | 只看该作者
FLASH操作程序放RAM运行就没问题了

使用特权

评论回复
评论
jiangjiayu 2021-6-7 18:30 回复TA
@单片机使者 :多谢指导 
jiangjiayu 2021-6-7 18:30 回复TA
@单片机使者 :多谢知道 
单片机使者 2021-6-7 17:00 回复TA
@jiangjiayu :2. 在FLASH中编程FLASH影响其他模块,尤其是DMA,所以FLASH编程程序要放在RAM中 
单片机使者 2021-6-7 16:58 回复TA
@jiangjiayu :网上搜下一句两句讲不清,怎么设置跟编译器有关,设置好编译器会自动产生拷贝代码,自动标注程序入口,硬件上电会把程序自动拷贝到RAM,调用时自动跳转RAM程序,网上自己查查做下实验,一句两句讲不清,E230的FLASH就这个特点,1. 同一个FLASH位置不可以反复编程,这点不同103/130他们 2. 
jiangjiayu 2021-5-17 17:38 回复TA
正常代码怎么放RAM运行? 
板凳
Tellapray| | 2021-5-19 11:39 | 只看该作者
我司是GD代理,可加微信13023245169,工程发一下吗,我请技术帮忙看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

84

帖子

1

粉丝