ychf0000 发表于 2018-2-8 22:47:57

ST-LINK Utility外部spi flash写报错

本帖最后由 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 : opened successfully.

22:40:12 : Programming error @ 0x00006A00!
哪位大侠有过类似经验,Programming error @ 0x00006A00!代表什么意思?给指导指导,谢谢!
问题已解决
原因:最初代码在ST-LINK Utility自带例程M25P64_STM3210E-EVAL基础上移植,和keil的例程对比后,发现两个flash配置方式不同,按keil的修改了一下,可以正确写入,不知道是ST的bug还是我没有移植好。SPIflash配置代码如下:
struct StorageInfo const StorageInfo={
#endif
   "W25Q128_STM32F1xx",             // Device Name + version number
   SPI_FLASH,                        // Device Type
   0x00000000,                        // Device Start Address
   0x01000000,                         // Device Size in Bytes (16MBytes/128Mbits)
   256,                           // Programming Page Size 256Bytes      
   0xFF,                               // Initial Content of Erased Memory
// Specify Size and Address of Sectors (view example below)
   4096, 0,                     // Sector Size: 4KBytes//ST例程和MDK有区别,需更改      
   SECTOR_END                        // SECTOR_END//ST例程和MDK有区别,需更改
};




ychf0000 发表于 2018-2-9 22:11:40

22:07:54 : opened successfully.
22:08:54 : Erasing external memory success.
22:09:48 : Memory programmed in 43s and 259ms.
22:09:48 : Verification...OK

写入1.1M的字库,43s

ychf0000 发表于 2018-2-9 00:03:36

和SPIflash配置信息有关,目前可以写入数据了,但是有数据丢失,继续查找原因

toofree 发表于 2018-2-9 01:15:56

本帖最后由 toofree 于 2018-2-9 09:56 编辑

虽然我也没这么玩过。但是从你的描述来看,能“擦”,能“读”,说明SPI的总线是通的,那么接下来就是“写”可能存在逻辑或时序问题。

我觉得,你可以在keil下,打开几个工程看看算法。



ychf0000 发表于 2018-2-9 06:13:36

非常感谢您的指点,我再仔细查一下,有进展再更新

ychf0000 发表于 2018-2-9 06:14:18

toofree 发表于 2018-2-9 01:15
虽然我也没这么玩过。但是从你的描述来看,能擦,能读,说明SPI的总线是通的,那么接下来就是写可以存在逻 ...

非常感谢您的指点,我再仔细查一下,有进展再更新:handshake

toofree 发表于 2018-2-9 09:16:53

本帖最后由 toofree 于 2018-2-9 09:56 编辑

ychf0000 发表于 2018-2-9 06:14
非常感谢您的指点,我再仔细查一下,有进展再更新
是的,有进展说一声。虽然我目前项目没用到。但是这个功能还是蛮实用的,比如在外部SPI Flash中存放字库或图片等比较大的文件的时候,直接用仿真器往里烧是最好的。
要不然就得开USB或UART IAP了,占用本身资源不说,还提高了应用工程的复杂度,同时也会带来潜在的风险隐患。

ychf0000 发表于 2018-2-9 22:04:06

toofree 发表于 2018-2-9 09:16
是的,有进展说一声。虽然我目前项目没用到。但是这个功能还是蛮实用的,比如在外部SPI Flash中存放字库或 ...

白天一直没时间,又仔细查了一下,现在可以实现了,我再制作一个稍微大点的字库试试能不能写成功。
我是在ST-LINK Utility自带例程M25P64_STM3210E-EVAL基础上移植,和keil的例程对比后,发现两个flash配置方式不同,按keil的修改了一下,可以正确写入,不知道是ST的bug还是我没有移植好。

再测试一下上传源码。

toofree 发表于 2018-2-10 00:06:55

ychf0000 发表于 2018-2-9 22:11
22:07:54 : opened successfully.
22:08:54 : Erasing external memory success.
22:09: ...

成功了就好,:)

pingting_2005 发表于 2018-6-26 18:16:24

问下这个spi flash是怎么和stlink接线的?
页: [1] 2
查看完整版本: ST-LINK Utility外部spi flash写报错