打印

STM32F0移植到GD32E230,FLASH写入数据时ADC数据产生混乱

[复制链接]
23867|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
15125413637|  楼主 | 2021-7-13 19:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,STM32F0移植到GD32E230,FLASH写入数据时导致ADC采出来的数据产生混乱,只要不向FLASH写入数据,ADC采出来的数据就没有问题,关于flash的操作已经使用32位操作

使用特权

评论回复
沙发
lidi911| | 2021-7-14 08:36 | 只看该作者
代码修改没?

使用特权

评论回复
板凳
15125413637|  楼主 | 2021-7-14 17:00 | 只看该作者

代码上关于flash操作都使用32位操作

使用特权

评论回复
地板
王久强| | 2021-7-15 21:27 | 只看该作者
我手上有一块板子是GD32E230G8的,我在调试flash,GD的好像是FMC,你的可以正常读写了吗?

使用特权

评论回复
5
王久强| | 2021-7-15 21:28 | 只看该作者
ADC你是用的什么方式?你用单通道还是多通道

使用特权

评论回复
评论
15125413637 2021-7-20 08:54 回复TA
FMC可以正常读写,ADC用的多个通道 
6
王久强| | 2021-8-7 18:14 | 只看该作者
是否愿意加个微信讨论一下 18483666573

使用特权

评论回复
7
imdx| | 2021-8-7 20:29 | 只看该作者
ADC用了DMA吧?E230是冯诺依曼架构,只有一套总线。ADC用DMA会冲突。解决方法是把FLASH操作放到SRAM里面。

使用特权

评论回复
8
smilefenfen| | 2021-10-29 13:41 | 只看该作者

STM32F0移植到GD32E230,FLASH写入数据时ADC数据产生混乱

GD芯片的flash需要按字写入

使用特权

评论回复
9
呐咯密密| | 2021-10-29 15:15 | 只看该作者
写FLASH是总线会被占用,中断啥的都不会响应,ADC采集肯定受影响,如果需要写FLASH,最好在程序空闲的时候再写,不然影响正常功能,如果根本没有空闲时间,建议外挂flash

使用特权

评论回复
10
王久强| | 2022-4-12 22:43 | 只看该作者
呐咯密密 发表于 2021-10-29 15:15
写FLASH是总线会被占用,中断啥的都不会响应,ADC采集肯定受影响,如果需要写FLASH,最好在程序空闲的时候 ...

原来是这样,那还是外挂吧,刚刚回复了你另外一个帖子,我决定外挂了,但是你说的硬件I2C,调试时会遇到什么问题啊?

使用特权

评论回复
11
呐咯密密| | 2022-4-13 10:30 | 只看该作者
王久强 发表于 2022-4-12 22:43
原来是这样,那还是外挂吧,刚刚回复了你另外一个帖子,我决定外挂了,但是你说的硬件I2C,调试时会遇到 ...

驱动写好了没问题的,写片内FLASH确实会占用总线的,这个要看自己的操作方式,

使用特权

评论回复
12
王久强| | 2022-4-13 14:56 | 只看该作者
呐咯密密 发表于 2022-4-13 10:30
驱动写好了没问题的,写片内FLASH确实会占用总线的,这个要看自己的操作方式, ...

哈喽哈喽我问一下,FMC的读呢,读取函数好像gd32e23x_fmc.c里面没有相关函数,而且手册上也没有提到怎么读出数据,只有说擦除和编程,这不两个都是写操作吗?

使用特权

评论回复
13
呐咯密密| | 2022-4-13 15:37 | 只看该作者
王久强 发表于 2022-4-13 14:56
哈喽哈喽我问一下,FMC的读呢,读取函数好像gd32e23x_fmc.c里面没有相关函数,而且手册上也没有提到怎么 ...

因为读是直接去地址取就行了,不用函数的,就像这样:data = *(uint32_t*)address;

使用特权

评论回复
14
CharryW| | 2022-4-13 15:55 | 只看该作者
flash访问时占用了总线,m23内核架构上此时其他总线主机需要等待,应该导致dma阻塞所以你的adc数据错位了,你可以在flash访问前关闭adc和dma,操作结束后重配下。

使用特权

评论回复
15
王久强| | 2022-4-14 16:45 | 只看该作者
呐咯密密 发表于 2022-4-13 15:37
因为读是直接去地址取就行了,不用函数的,就像这样:data = *(uint32_t*)address; ...

我想连续读,那地址+多少啊?数据如果是结构体,里面有uint8_t uint32_t unsigned char 这些类型,数据指针要加多少?

使用特权

评论回复
16
gdszzyq| | 2022-4-14 17:13 | 只看该作者
看你是按什么写进去的,如果是按字写,那么就按字读,下一个字地址加4。半字就加2.

使用特权

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

本版积分规则

7

主题

22

帖子

0

粉丝