打印

GD32超大容量FLASH,后512k写入数据失败的问题

[复制链接]
4512|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elego|  楼主 | 2014-12-17 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机是GD32F103RGT6,FLASH容量是1M字节,前512K字节是按2k的页面组织,读写正确。
后512K是按4K的页面组织的,读写后512K字节的时候,总不成功
沙发
elego|  楼主 | 2014-12-17 10:42 | 只看该作者
程序是从STM32的例子迁移过来的,有什么地方要改动的吗

使用特权

评论回复
板凳
sunmeat| | 2014-12-18 10:33 | 只看该作者
elego 发表于 2014-12-17 10:42
程序是从STM32的例子迁移过来的,有什么地方要改动的吗

应该有个小改动,你看看GD32和STM32的差异性文档,GD官方也给出了操作FLASH的例程

使用特权

评论回复
地板
锐鑫同创| | 2014-12-18 14:48 | 只看该作者
因为ST和GD的Flash都是不一样的,结合GD官方的Flash操作

使用特权

评论回复
5
奋斗吧。。。| | 2014-12-18 15:10 | 只看该作者
GD32大容量产品是指闪存存储器容量在256K至3M字节之间的STM32F101xx和STM32F103xx微控制器。前256K字节是按2k的页面组织,后257k~3M字节是按4k的页面组织.应该资料写错了。

使用特权

评论回复
6
pengxiao618| | 2014-12-19 14:58 | 只看该作者
奋斗吧。。。 发表于 2014-12-18 15:10
GD32大容量产品是指闪存存储器容量在256K至3M字节之间的STM32F101xx和STM32F103xx微控制器。前256K字节是按 ...

这个说法不太准确,前512K都是2K / PAGE

使用特权

评论回复
7
Simon21ic| | 2014-12-23 16:16 | 只看该作者
GD32F103ZKT6哪里有零售?
弄一些来玩玩,淘宝里找不到啊

使用特权

评论回复
8
wulongfu| | 2015-10-10 11:37 | 只看该作者
对于主存储闪存容量不少于768KB的GD32F10X_CL和GD32F10X_XD,使用了两片闪存;
前512KB容量在第一片闪存( bank1 )中,后续的容量在第二片闪存( bank2)中

相应的寄存器需要修改

使用特权

评论回复
9
shen520| | 2015-10-10 22:19 | 只看该作者
请查看 stm32f10x_flash.c 文件 , 就知道怎么回事了

/**
  * @brief  Unlocks the FLASH Program Erase Controller.
  * @NOTE   This function can be used for all STM32F10x devices.
  *         - For STM32F10X_XL devices this function unlocks Bank1 and Bank2.
  *         - For all other devices it unlocks Bank1 and it is equivalent
  *           to FLASH_UnlockBank1 function..
  * @param  None
  * @retval None
  */
void FLASH_Unlock(void)
{
  /* Authorize the FPEC of Bank1 Access */
  FLASH->KEYR = FLASH_KEY1;
  FLASH->KEYR = FLASH_KEY2;

#ifdef STM32F10X_XL
  /* Authorize the FPEC of Bank2 Access */
  FLASH->KEYR2 = FLASH_KEY1;
  FLASH->KEYR2 = FLASH_KEY2;
#endif /* STM32F10X_XL */
}

使用特权

评论回复
10
baimiaocun2015| | 2015-10-11 21:49 | 只看该作者
这个要先看擦写正确的不

使用特权

评论回复
11
zhangbo1985| | 2015-10-16 19:34 | 只看该作者
先看下读写时电压是否正确的

使用特权

评论回复
12
vivilzb1985| | 2015-10-21 23:56 | 只看该作者
在写入数据的时候一定要保障电压稳定的。

使用特权

评论回复
13
Houtz| | 2017-5-17 12:08 | 只看该作者
BNAK1和BANK2的解锁寄存器不一样,选用相对应型号的宏定义应该就可以了,
如果使用的是ST的库,全局宏定义STM32F10x_XL

使用特权

评论回复
14
lounnywu| | 2017-5-17 12:17 | 只看该作者
各位大咖,方案这块有用到硬件加密芯片,保护软件,防止抄板的,可以找我。QQ:937684930

使用特权

评论回复
15
chuntian2016| | 2017-5-24 20:11 | 只看该作者
锐鑫同创 发表于 2014-12-18 14:48
因为ST和GD的Flash都是不一样的,结合GD官方的Flash操作

这个也有可参考性的

使用特权

评论回复
16
shenmu2012| | 2017-5-26 20:50 | 只看该作者
这个再看下芯片资料的吧

使用特权

评论回复
17
zhangbo1985| | 2017-5-29 18:14 | 只看该作者
写入的时候先按页的擦除下的

使用特权

评论回复
18
zhangbo1985| | 2017-5-29 18:15 | 只看该作者
然后就先读取一个位置的看下数据是否是0xff的,若不是就是擦除不成功的。

使用特权

评论回复
19
zhangbo1985| | 2017-5-29 18:16 | 只看该作者
还有就是写数据的时候写完的随机的检查下的,看是否OK的

使用特权

评论回复
20
tongbu2015| | 2017-5-29 19:45 | 只看该作者
楼上的建议很好的,写之前先检查是否可以写操作

使用特权

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

本版积分规则

16

主题

48

帖子

1

粉丝