你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用ST-LINK Utility实现外部spiflash程序下载  

[复制链接]
ychf0000 发布时间:2018-3-2 22:47
本帖最后由 ychf0000 于 2018-3-2 22:58 编辑

     在之前的学习中,一直用外部SPI Flash存放字库文件,之前的数据下载方法是用SD卡拷贝到SPIFLASH中,一直觉得在开发板上学习还算方便,如果在项目中应用,不是很方便,偶然机会,发现ST官方工具STM32 ST-LINK Utility可对外部SPIFLASH直接进行读写。于是尝试在原子精英板STM32 ST-LINK U上进行实验,并成功将字库文件下载到外部SPIFLASH,现把实现方法分享出来,方便大家共同学习,不完善之处还请多多指教!

平台:原子精英开发板(SPIFLASH芯片型号W25Q128),STM32F103,ST-LINK/V2

准备工作
1. 官网或社区下载软件STM32 ST-LINK Utility v4.2.0 setup.exe,并安装
2. W25Q128_STM32F1_Elite.stldr文件制作
  源码见附件,该文件需要根据自己的硬件平台做出相应的修改
3.将制作好的文件放在 安装目录\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ExternalLoader下

4.添加LOADER文件
5.在ExternalLoader菜单先对外部SPIFLASH进行读、写、擦除等操作。





SPIFLASH程序下载工程源码.zip

下载

1.4 MB, 下载次数: 774

UM0892-User manual.pdf

下载

1021.92 KB, 下载次数: 328

STM32 ST-LINK Utility使用手册

评分

参与人数 4 ST金币 +30 收起 理由
songshiqun2010 + 4 赞一个!
tiantiandayou + 1 很给力!
wofei1314 + 20 很给力!
toofree + 5 赞一个!(拿自己的金币为你点赞).

查看全部评分

收藏 8 评论33 发布时间:2018-3-2 22:47

举报

33个回答
shhfxb 回答时间:2019-4-7 17:19:55
正想看看怎么生成自己板子的stldr,很有参考作用,谢谢!!
这些代码应该是ST-LINK写外部FLASH的时候临时装入CPU运行的,效率最重要,可能直接操作寄存器最快
ychf0000 回答时间:2018-3-2 23:00:20
本帖最后由 ychf0000 于 2018-3-15 23:28 编辑

第一次发帖,折腾的比较费劲,先将就看吧。
正在尝试基于HAL库实现工程编写,进展不是很顺利,实现了再和大家分享吧。。。

2018年3月15日 经测试 基于HAL,对外挂SPIflash的下载速度较慢,时间差一倍以上,就不发源码了,推荐用标准库或直接操作寄存器方式。

2018年3月10日最新进展      在规避全局变量的情况下,基于HAL库已实现对外挂SPIflash的读写擦除等操作。

2018年3月8日进展
经过一段时间的排查发现代码中不能有全局变量,不知道什么原因?实在是没头绪了,希望有各位网友给予指点,实在不行就只有规避全局变量了
      为查找原因,编写了测试代码,当在软件ST-LINK Utility开始执行读取外部SPIFLASH时,从Init()函数,为此编写了测试代码,正常情况下,开始读时,开发板先看到红灯闪烁5次,紧接着绿灯闪烁5次,再红绿灯同时闪烁(表示进入read()函数),属正常现象。
       当加入全局变量赋值语句tempdata_test=1后,先是红灯闪烁,间隔约6秒后(程序运行不正常),再红灯闪烁5次,绿灯闪烁5次,再红绿灯同时闪烁。
(1)测试代码如下:
  1. static void SetSysClockToHSI64(void);
  2. int tempdata_test=0;

  3. //初始化测试代码 , 读SPIFLASH前调用
  4. int Init (void)
  5. {     
  6.     SystemInit();
  7.     SetSysClockToHSI64();   //操作寄存器实现时钟配置

  8.     //测试代码=========================================
  9.     GPIO_DS0_DS1_Init();    //初始化LED显示IO口
  10.     //MX_SPI2_Init();        
  11.     LED_TOGGLE0(2);         //红灯闪烁5次        
  12.     tempdata_test=1;                //
  13.     LED_TOGGLE1(2);         //绿灯闪烁5次
  14.     //=================================================
  15.         return 1;
  16. }
复制代码
(2)Target.lin文件代码
  1. FLASH_LOADER 0x20000004 PI   ; FlashLoader Functions
  2. {
  3.   PrgCode +0           ; Code
  4.   {
  5.     * (+RO)
  6.   }
  7.   PrgData +0           ; Data
  8.   {
  9.     * (+RW,+ZI)
  10.   }
  11. }

  12. DEVICE_INFO +0               ; Device Info
  13. {
  14.   DevInfo +0           ; Info structure
  15.   {
  16.     dev_inf.o
  17.   }
  18. }
复制代码

   


toofree 回答时间:2018-3-2 23:38:04
不错,解决了问题,来发贴分享,为你点赞
ychf0000 回答时间:2018-3-3 06:30:50
toofree 发表于 2018-3-2 23:38
不错,解决了问题,来发贴分享,为你点赞

谢谢大师的热心帮助和鼓励
davidcdw 回答时间:2018-3-4 14:45:56
可以
carlxzl 回答时间:2018-3-4 15:44:17
正在学习
zero99 回答时间:2018-3-9 14:40:42
感谢分享,已汇总到3月技术原创:
https://www.stmcu.org.cn/module/forum/thread-615031-1-1.html
shanji 回答时间:2018-3-9 16:05:11
这个要顶,很实用。
lifengliu1 回答时间:2018-3-10 17:35:43
好东西, 必须顶
臭老九 回答时间:2018-4-17 17:36:00
下载1m数据大于时间是??
1234下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版