STM32通过ISP下载程序的流程及指令

一. 介绍

ST官方提供了Flash loader demonstrator用于ISP下载程序。但是必须依托桌面操作系统,实际生产中不够方便,离线下载器可以解决这个问题。这里所介绍的就是开发离线下载器所必须了解的知识。


ST官方提供了一份学习笔记,编号是AN3155.pdf。详细介绍了ISP下载相关协议,请在本文结尾处下载。此协议适用于以下系列单片机:

  • STM32F050x4、STM32F050x6、STM32F051x4、STM32F051x6、STM32F051x8

  • STM32F1主流产品

  • STM32F2高性能系列

  • STM32F302xx、STM32F303xx、STM32F313xx、STM32F372xx、STM32F373xx、STM32F383xx

  • STM32F405xx、STM32F407xx、STM32F415xx、STM32F417xx、STM32F427xx、STM32F437xx

  • STM32L1系列


此协议公示的命令有12条,未公示的不确定。每条命令的详细用法请参考AN3155,这里只介绍最必要的几条命令,完成烧录文件的下载。

  1. Get

  2. Get Version & Read Protection Status

  3. Get ID

  4. Read Memory

  5. Go

  6. Write Memory

  7. Erase Memory

  8. Extended Erase Memory

  9. Write Protect

  10. Write Unprotect

  11. Readout Protect

  12. Readout Unprotect


二. 应用

要完成程序的烧录,最简单的操作流程如下:

1. 连接:主机发送1个字节0x7F ,成功后从机回复一个字节0x79

2. 擦除:(1) 主机发送2个字节0x43 0xBC,即Erase Memory指令。成功后从机回复一个字节0x79

              (2) 主机发送2个字节0xFF  0x00,即全部擦除。成功后从机回复一个字节0x79

3. 烧录:(1) 主机发送2个字节0x31 0xCE,即Write Memory指令。成功后从机回复一个字节0x79

              (2) 主机发送4个字节的下载地址+一个字节的校验和,校验和即前面4个字节的异或。成功后从机回复一个字节0x79

              (3) 主机发送1+N+1个字节,其中N代表要发送的数据字节数,N不能大于256且必须能被4整除,不够被4整除的要用0xFF补齐。第一个字节的值=N-1,最后一个字节是校验和,即它以前(1+N)所有字节的异或。成功后从机回复一个字节0x79      

              说明:循环这里的(1)(2)(3)直至全部烧录完成。          

4. 启动:(1) 主机发送2个字节0x21 0xDE,即GO指令,成功后从机回复一个字节0x79

              (2) 主机发送4个字节的启动地址+一个字节的校验和,校验和即前面4个字节的异或,这个地址也就是HEX文件中的05数据类型的数据。成功后从机回复一个字节0x79


备注:主机串口配置为:9600-8-E-1

AN3155.pdf下载地址:解压密码 www.evelee.cc    AN3155.rar


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=28