本帖最后由 ychf0000 于 2018-2-10 06:53 编辑 参照官方提供的模板进行移植,单独对int Write (uint32_t Address, uint32_t Size, uint8_t* buffer)进行测试正常,ST-LINK Utility擦除外部flash,读正常均正常,写的时候报错。22:36:48 : Device ID:0x414 22:36:48 : Device flash Size : 512KBytes 22:36:48 : Device family :STM32F10xx High-density 22:38:02 : Erasing external memory success. 22:39:47 : External memory sector 0 erased. 22:40:05 : [UNIGBK.BIN] opened successfully. 22:40:12 : Programming error @ 0x00006A00! 哪位大侠有过类似经验,Programming error @ 0x00006A00!代表什么意思?给指导指导,谢谢! 问题已解决 原因:最初代码在ST-LINK Utility自带例程M25P64_STM3210E-EVAL基础上移植,和keil的例程对比后,发现两个flash配置方式不同,按keil的修改了一下,可以正确写入,不知道是ST的bug还是我没有移植好。SPIflash配置代码如下:
|
22:08:54 : Erasing external memory success.
22:09:48 : Memory programmed in 43s and 259ms.
22:09:48 : Verification...OK
写入1.1M的字库,43s
虽然我也没这么玩过。但是从你的描述来看,能“擦”,能“读”,说明SPI的总线是通的,那么接下来就是“写”可能存在逻辑或时序问题。
我觉得,你可以在keil下,打开几个工程看看算法。
评分
查看全部评分
非常感谢您的指点,我再仔细查一下,有进展再更新
是的,有进展说一声。虽然我目前项目没用到。但是这个功能还是蛮实用的,比如在外部SPI Flash中存放字库或图片等比较大的文件的时候,直接用仿真器往里烧是最好的。
要不然就得开USB或UART IAP了,占用本身资源不说,还提高了应用工程的复杂度,同时也会带来潜在的风险隐患。
白天一直没时间,又仔细查了一下,现在可以实现了,我再制作一个稍微大点的字库试试能不能写成功。
我是在ST-LINK Utility自带例程M25P64_STM3210E-EVAL基础上移植,和keil的例程对比后,发现两个flash配置方式不同,按keil的修改了一下,可以正确写入,不知道是ST的bug还是我没有移植好。
再测试一下上传源码。
成功了就好,
stlink正常接单片机,单片机再与SPIFLASH连接
详细如下18:35:16 : ST-LINK SN : 48FF6A064978545247481087
18:35:16 : ST-LINK Firmware version : V2J29S7
18:35:16 : Connected via SWD.
18:35:16 : SWD Frequency = 4,0 MHz.
18:35:16 : Connection mode : Normal.
18:35:16 : Debug in Low Power mode enabled.
18:35:16 : Device ID:0x411
18:35:16 : Device flash Size : 512KBytes
18:35:16 : Device family :STM32F2xx
18:35:19 : Erasing external memory success.
18:35:31 : [STM32F.bin] opened successfully.
18:35:31 : [STM32F.bin] checksum : 0x013B0214
18:35:51 : Programming error @: 0x0000E600
还请大侠帮忙看下,谢谢!
ç§å½è¿ç¨ä¸åºéï¼