搜索

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

[复制链接]
347|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,工程发一下吗,我请技术帮忙看看

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 wolfe_yu 得到打赏 ¥180.00
  • 2 最美葫芦娃 得到打赏 ¥155.00
  • 3 hk386 得到打赏 ¥75.00
  • 4 火星国务卿 得到打赏 ¥63.00
  • 5 两只袜子 得到打赏 ¥56.00
  • 6 laocuo1142 得到打赏 ¥50.00
  • 7 ezcui 得到打赏 ¥45.00
  • 8 linghz 得到打赏 ¥45.00
  • 9 gaon2 得到打赏 ¥45.00
  • 10 liang-1011 得到打赏 ¥40.00
在线客服 快速回复 返回顶部 返回列表