老婆说我不行!连GD32E103C8的FMC的16位编程都搞不定?

[复制链接]
3173|28
 楼主| 加油吧!宝宝! 发表于 2020-10-7 11:49 | 显示全部楼层 |阅读模式
本帖最后由 加油吧!宝宝! 于 2020-10-8 10:48 编辑

我查看了一下用户使用手册上,上面说明FMC支持32位和16位编程,可是实际使用的时候发现FMC16位编程不行,32位和64位编程却可以(我使用的固件库版本是V1.0.3))!
后来我把固件库版本从V1.0.3升级到V1.0.4,然后发现V1.0.3的固件库有半字halfword(16bit),单字word(32bit),双字doubleword(64bit)编程函数:
fmc_state_enum fmc_doubleword_program(uint32_t address, uint64_t data);
fmc_state_enum fmc_word_program(uint32_t address, uint32_t data);
fmc_state_enum fmc_halfword_program(uint32_t address, uint16_t data);

然而V1.0.4的固件库只有单字word(32bit),双字doubleword(64bit)编程函数:
fmc_state_enum fmc_doubleword_program(uint32_t address, uint64_t data);
fmc_state_enum fmc_word_program(uint32_t address, uint32_t data);

以上是不是说明FMC不支持16位编程,否则为什么官方升级的固件库去掉了半字编程函数fmc_state_enum fmc_halfword_program(uint32_t address, uint16_t data)
广大网友们,你们使用FMC16位编程可行吗?谢谢!

lvben5d 发表于 2020-10-7 13:36 | 显示全部楼层
一般  我是自己写了应用,做页擦除后,1个字节1个字节 写入。 稳定第1,没必要纠结要2个字节一起写会帅一点。 我理解,内部的FLASH 跟外部24CXX是一个性质的东东,集成进去就是内置FLASH
天意无罪 发表于 2020-10-9 22:17 | 显示全部楼层
快吃汇仁**宝
 楼主| 加油吧!宝宝! 发表于 2020-10-10 08:30 | 显示全部楼层

你吃了有效果吗?
gx_huang 发表于 2020-10-10 08:55 | 显示全部楼层

关键是他要先有老婆
 楼主| 加油吧!宝宝! 发表于 2020-10-10 09:52 | 显示全部楼层
本帖最后由 加油吧!宝宝! 于 2020-10-10 19:39 编辑
gx_huang 发表于 2020-10-10 08:55
关键是他要先有老婆


自己造声卡 发表于 2020-10-10 09:53 | 显示全部楼层
你老婆说的对,你真的不行吧
 楼主| 加油吧!宝宝! 发表于 2020-10-10 13:34 | 显示全部楼层
本帖最后由 加油吧!宝宝! 于 2020-10-10 19:39 编辑
自己造声卡 发表于 2020-10-10 09:53
你老婆说的对,你真的不行吧


 楼主| 加油吧!宝宝! 发表于 2020-10-13 09:25 | 显示全部楼层
找到原因了,准备删帖!
zchong 发表于 2020-10-18 13:06 来自手机 | 显示全部楼层
牛X了!找到原因不分享一下?
 楼主| 加油吧!宝宝! 发表于 2020-10-18 19:08 | 显示全部楼层
zchong 发表于 2020-10-18 13:06
牛X了!找到原因不分享一下?

不是啦!是GD32F103C8的FMC不支持16bit编程,虽然用户手册写着支持16bit编程,实际上只支持32bit和64bit编程。我咨询过GD的技术支持的。
贺少兵 发表于 2020-12-10 18:13 | 显示全部楼层
楼主试过没有重复往flash一个地方写数据:比如本来是0xFFFFFFFF, 第一次写操作后变成0x55AA55BB,  再操作一次写成0x00000000 。 想用flash存点儿东西,又想减少点儿擦出次数。 然而发现第二次操作不成功。 逻辑在stm32上边是好使的, 换到GD32E103上不好使了
chenqianqian 发表于 2020-12-10 21:08 来自手机 | 显示全部楼层
一看标题还以为卖印度神油的………
发呆二极管 发表于 2020-12-11 01:55 | 显示全部楼层
本帖最后由 发呆二极管 于 2020-12-11 17:37 编辑
贺少兵 发表于 2020-12-10 18:13
楼主试过没有重复往flash一个地方写数据:比如本来是0xFFFFFFFF, 第一次写操作后变成0x55AA55BB,  再操作一 ...

感谢指正,之前理解错了。故编辑掉。如言语有冒犯,向你道歉。
发呆二极管 发表于 2020-12-11 01:56 | 显示全部楼层
原来E103不支持16bit写入,学习了
贺少兵 发表于 2020-12-11 08:38 | 显示全部楼层
发呆二极管 发表于 2020-12-11 01:55
这锅GD不背,自己对flash机制理解不对,想2次写必须先擦除,所有的flash都这样,st也不可能例外!
你说st ...

ST的行不行  你动手试试 不就明白了
xdqfc 发表于 2020-12-11 09:30 | 显示全部楼层
贺少兵 发表于 2020-12-11 08:38
ST的行不行  你动手试试 不就明白了

是不是可以这样理解,ST的flash可以不用擦除就可以写数据,而GD的必须擦除后才可以写入,ST的究竟是什么FlashRom啊??
贺少兵 发表于 2020-12-11 10:58 | 显示全部楼层
xdqfc 发表于 2020-12-11 09:30
是不是可以这样理解,ST的flash可以不用擦除就可以写数据,而GD的必须擦除后才可以写入,ST的究竟是什么F ...

   结束讨论,GD32E103手册上说明不能这么干

评论

@贺少兵,赞同  发表于 2021-4-1 10:08
贺少兵 发表于 2020-12-11 10:59 | 显示全部楼层
感谢支持
111111111111111111111111111.png
22222222222222222222222222.png

评论

@发呆二极管 @xdqfc  发表于 2020-12-11 11:01
chenqianqian 发表于 2020-12-11 12:40 来自手机 | 显示全部楼层
这标题也是绝了,我以为我走错了地儿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部