FlashRunner与意法半导体ST72F接口连接
FlashRunner是一款基于电路内通讯和电路内编程原理的通用在线烧录器,本节主要讲述如何正确与意法半导体ST7F家族单片机建立通讯和进行编程测试。
1.引言
对不同的编程方式而言,两种Flash技术都是可以的:
XFlash (Extended Flash):
基于EEPROM技术的外部Flash存储器。XFlash可提供按字节重复编程(按字节擦除)和数据EEPROM容量等扩展特性,其有效容量为1KB至16KB。在存储区内的任何数据都会在对这类存储器编程和重复编程时被自动擦除,因此,Erase和Blank Check操作对XFlash存储器是不必要的。
HDFlash (High-Density Flash):
基于Flash技术的高密度Flash存储器。这种HDFlash单元密度为4KB至60KB。HDFlash可以按字节编程,但是不能按字节擦除,只能按区块擦除。在对字节或区块进行编程前必须先擦除对应的区块,可以执行Blank Check操作来验证对应区块是否已被正确擦除。下表显示基于存储类型的ST7F家族型号分类:
Flash 技术 |
ST7 器件 |
编程方式 |
XFlash |
ST7Flitex, ST7FDALI, ST7FLx, ST72F62x, ST72F34x |
ICP, IAP |
HDFlash |
ST72F32x/F521, ST72F561, ST72F361, ST72F60x, ST72F61x, ST72F62x, ST72F63x, ST72F63Bx, ST72F65, ST72FHUB, ST72FSCR, ST72FMC |
ICP, IAP |
因其在线编程能力出众,使得FlashRunner可以对贴到电路板上的芯片的内容进行更新。为了实现在线编程,ST7单片机必须切换到被称为ICC(电路内通讯)的专用功能模式,且电路板上必须预留用于在线编程的对应ICP硬件接口。
2.硬件配置
在ICC模式下编程ST7器件需要的单片机引脚如下:
ICCDATA: 电路内通讯输入/输出串行数据引脚;
ICCCLK: 电路内通讯串行时钟输入/输出引脚;
ICCSEL/VPP: ICC进入模式/编程电压。请注意,有一些器件如ST7FLITE0,ICCSEL/VPP引脚是无效的;
CLOCK: 当没有其他有效时钟源时用于提供一个器件输入时钟信号,FlashRunner可在这个引脚上提供一个6.25, 12.5或25MHz的信号;
RESET: 器件复位信号(输入/输出);
VSS: 器件供电接地;
VDD: 器件供电电源。
以上引脚必须连接到FlashRunner的“ISP”接口上,对应关系如下图所示:
备注:
(1) 如果使用TCSETPAR ICPMODE ENABLED指令,且时钟源由目标板提供的Option Bytes指定,此引脚不必连接;
(2) 如果想要采用FlashRunner直接供电方式,需连接此引脚;
(3) 如果在应用中,RESET, ICCCLK或 ICCDATA引脚用作其它用途, 应该连接4.7KΩ串行电阻(根据意法半导体规格书),用以避免发生信号冲突,以防目标板的其它信号强制改变信号电平。如果这些引脚作为输出使用,这些电阻则不必连接。
3.ST7专用TPSETPAR编程指令
概述
TPSETPAR指令设置专用器件的指定编程算法参数。这些指令必须在TCSETDEV 命令之后、TPSTART / TPEND命令块之前发送。所有FlashRunner的编程效率取决于目标器件采用的ICC模式。为了进入这种专用模式(通过ICCDATA 和 ICCCLK引脚在目标器件和FlashRunner间建立通讯通道)和作适当的配置,以下所有的参数必须通过相关的TPSETPAR命令被正确指定:
ICC mode;
VDD;
Reset up time;
Reset down time;
Power up time (optional);
Power down time (optional);
CLKOUT frequency.
TPSETPAR ICPMODE
指令语法:
TCSETPAR ICPMODE ENABLED | DISABLED
指令选项:
ENABLED: 进入ICC模式时考虑Option Bytes;
DISABLED: 进入ICC模式时忽略Option Bytes。
描述:
详细说明FlashRunner怎样进入ICC模式。我们可以选择使用器件内已经烧录进去的Option Bytes或者采用Option Bytes的默认值(器件为空时可用)。在以往的案例中,我们必须提供器件内Option Bytes值指定的时钟源,否则器件不工作。这说明,在其它事件中,一个“安全”的时钟源是很重要的(通常必须提供一个外部时钟)。当器件内的Option Bytes值指定正确的启动参数时,此选项是有用的,在这种情况下,我们可以忽略它们并且从一个安全条件下启动。
TPSETPAR VDD
指令语法:
TCSETPAR VDD
参数:
voltage mV: 目标器件供电电压,用mV表示。
描述:
这个命令用于对ICCDATA, ICCCLK, OSC_CLK和RESET信号正确产生电压电平,此外,特定的电压被发送到FlashRunner的“ISP”接口VPROG0引脚上,这样可以直接作为目标板的供电电压。
TPSETPAR RSTUP
指令语法:
TCSETPAR RSTUP
参数:
time μs: 复位上升时间,用μs表示。
描述:
这个命令是必要的,因为为了进入ICC模式,FlashRunner必须正确地驱动RESET引脚(详情请参考ICC协议参考手册)。复位上升时间(RSTUP)用微秒表示,大小由目标板特性决定。一定要选择一个足够大的值来确保复位信号可以在指定的时间内到达高逻辑电平。请注意,如果RESET引脚负载很大,复位信号到达高逻辑电平所需要的时间会更长,如果RSTUP时间不足够久,FlashRunner将不能进入ICC模式。RSTUP是用来决定在一系列的ICCSEL/VPP脉冲后的哪一个瞬间开始,这一系列脉冲必须在从RESET信号到达高逻辑电平瞬间时开始的256个CPU周期内终止,否则器件将不能进入ICC模式,因此也不能给RSTUP赋太大的值。下图显示怎样正确地选择RSTUP。
TPSETPAR RSTDOWN
指令语法:
TCSETPAR RSTDOWN
参数:
time μs: 复位下降时间,用μs表示。
描述:
复位下降时间(RSTDOWN)用微秒表示,大小由目标板特性决定。一定要选择一个足够大的值来确保复位信号可以在指定的时间内到达低逻辑电平。请注意,如果RESET引脚负载很大,复位信号到达低逻辑电平所需要的时间会更长。
TCSETPAR PWUP
指令语法:
TCSETPAR PWUP
参数:
time ms: 供电上升时间,用ms表示。
描述:
这个命令是必要的,因为为了进入编程模式,FlashRunner必须在上电复位期间正确地驱动VDD引脚。VDD上升时间(PWUP)用毫秒表示,大小由目标板特性决定。一定要选择一个足够大的值来确保VDD信号可以在指定的时间内到达高逻辑电平。请注意,如果VDD引脚负载很大,VDD信号到达高逻辑电平所需要的时间会更长,如果PWUP时间不足够久,FlashRunner将不能进入编程模式。
TCSETPAR PWDOWN
指令语法:
TCSETPAR PWDOWN
参数:
time ms: 供电下降时间,用ms表示。
描述:
VDD下降时间(PWDOWN)用毫秒表示,大小由目标板特性决定。一定要选择一个足够大的值来确保VDD信号可以在指定的时间内到达低逻辑电平。请注意,如果VDD引脚负载很大,VDD信号到达低逻辑电平所需要的时间会更长。
TPSETPAR CLKOUT
指令语法:
CSETPAR CLKOUT 25000000 | 12500000 | 6250000 | 0
命令选项:
时钟信号的频率由FlashRunner的“ISP”接口的CLOCKOUT引脚产生,用赫兹表示。
描述:
在FlashRunner的“ISP”接口的CLOCKOUT引脚产生一个辅助的时钟信号,这个信号可以用于当目标器件没有外部时钟的时候进入目标器件的ICC模式(忽略Option Bytes),此外,这个信号也可用于加速编程(当希望采用的时钟比目标板提供的更快)。确保选择的时钟频率不大于器件允许的最大频率,如果目标器件有内部分频器,真实的器件频率便只是CLKOUT频率的一小部分。如果设置CLKOUT频率为0,则不产生时钟信号。
4. ST7专用 TPCMD 编程指令
概述
TPCMD 命令用来执行编程操作(如mass erase, program, verify等),这些指令必须在TPSTART / TPEND命令块之内发送。
ST7专用目标编程指令如下:
TPCMD UNPROTECT;
TPCMD BLANKCHECK;
TPCMD MASSERASE;
TPCMD PROGRAM;
TPCMD PROGRAM OPTIONS;
TPCMD RESTORE_RC_CALIBRATION;
TPCMD TRIM;
TPCMD READ OPTIONS;
TPCMD VERIFY;
TPCMD VERIFY OPTIONS;
TPCMD RUN.
TPCMD UNPROTECT
指令语法:
TCSETPAR UNPROTECT
参数:
无。
描述:
对读保护的器件进行解保护,在Option Byte(s)对应读保护位设置对应值。解保护会导致器件资料丢失。
TPCMD BLANKCHECK
指令语法:
TPCMD BLANKCHECK F|E
命令选项和参数:
F|E: 待BLANKCHECK的存储器类型。F 代表Flash 程序存储器,E代表EEPROM数据存储器;
tgt start addr: blankcheck操作的起始位址;
len: 待blankcheck的字节长度。
描述:
Blankcheck Flash 或 EEPROM存储器。由目标起始地址指定的地址开始计算Blankcheck的字节长度,ST7 XFlash器件不需要Blankcheck,因为它们会在编程时自动擦除。
TPCMD MASSERASE
指令语法:
TPCMD MASSERASE F|E
命令选项:
F|E: 待擦除的存储器类型。F代表Flash程序存储器,E代表EEPROM数据存储器。
描述:
Mass erases Flash或EEPROM存储器。请注意,对ST7 HDFlash器件来说,TPCMD MASSERASE命令只有当器件不为空时才可擦除存储器,ST7 XFlash器件不需要被擦除,因为它们会在编程时自动擦除。请再次注意,在器件被擦除后,RC校准值会丢失,因此,如果采用了器件内部时钟,建议在编程后复原RC校准值。
TPCMD PROGRAM
指令语法:
TPCMD PROGRAM F|E
命令选项和参数:
F|E: 待编程的存储器类型。F代表Flash程序存储器,E代表EEPROM数据存储器;
src offset: 从.FRB源文件的起始位作偏移;
tgt start addr: 编程操作的起始位址;
len: 待编程的字节长度。
描述:
由目标起始地址开始计算编程的字节长度。
TPCMD PROGRAM OPTIONS
指令语法:
TPCMD PROGRAM OPTIONS []
命令参数:
B0, B1: 待编程的Option Byte(s)的值。B1是可选项,因为不是所有器件都具有两个Option Bytes。
描述:
用特定值配置Option Byte(s)。必须要特别注意正确配置Option Bytes的每一位,不正确的配置可能会导致目标单片机不能正确工作(或根本不能工作)。有一些器件,一旦Option Bytes配置了错误的值,将不能被再次访问,这样的话,只能尝试用以下的方式重新配置Option Bytes的值(不是所有器件都适用):
1.用TCSETPAR ICPMODE DISABLED启动一个新的编程块,这会忽略Option Bytes的值,直接进入ICC模式。
2.对目标器件采用一个“默认”的时钟源(典型外部时钟),如果目标板没有提供这样的时钟源,可以使用FlashRunner“ISP”接口的CLKOUT信号。
3.可以对Option Bytes和/或器件存储器重新编程。
TPCMD READ OPTIONS
指令语法:
TPCMD READ OPTIONS
命令参数:
无。
描述:
读Option Byte(s)。
TPCMD VERIFY
指令语法:
TPCMD VERIFY F|E R
命令选项和参数:
F|E: 待verify的存储器类型。F代表Flash程序存储器,E代表EEPROM数据存储器;
R: 固定的Read-Out方式,强制选项。
src offset: 从.FRB源文件的起始位作偏移;
tgt start addr: Verify操作的起始位址;
len: 待Verify的字节长度。
描述:
Verify目标器件存储器的内容是否与源镜像文件内容一致。
TPCMD VERIFY OPTIONS
指令语法:
TPCMD VERIFY OPTIONS []
命令参数:
B0, B1: 待Verify的Option Byte(s)。B1是可选项,因为不是所有器件都具两个Option Bytes。
描述:
Verify单个或两个Option Byte(s)的特定值是否正确。
TPCMD RESTORE_RC_CALIBRATION
指令语法:
TPCMD RESTORE_RC_CALIBRATION
命令参数:
无。
描述:
复原RC校准值到出厂默认值。
备注:这个命令仅在TCSETPAR ICPMODE DISABLED命令(忽略Option Bytes)已经被发送的情况下才会执行成功。在器件被擦除后,RC校准值会随之丢失,因此,如果采用了器件内部时钟,建议在编程后复原RC校准值。
TPCMD TRIM
指令语法:
TPCMD TRIM
命令参数:
frequency Hz: 期望的频率值,用Hertz表示;
tgt start addr: 待写入的trimming值的起始地址;
tolerance_pct: Trim值计算的精确度,用百分比表示(1至100)。
描述:
此命令用于trim(校准)器件内部振荡器(如果振荡器存在的话)。通过frequency Hz参数来计算trimming值的特定频率(精确度由tolerance_pct参数决定),并写入addr地址。
备注:这个命令仅在TCSETPAR ICPMODE ENABLED命令(使用Option Bytes)已经被发送的情况下才会执行成功。
TPCMD RUN
指令语法:
TPCMD RUN
命令参数:
无。
描述:
运行目标应用。
5.典型编程流程
以下流程图说明典型的步骤,帮助编写脚本文件:
6.脚本范例
HDFlash器件的脚本范例
下面提供的范例帮助理解以上论述的命令是怎样应用于典型的HDFlash器件的,以ST72F324芯片为例。
;
; FLASHRUNNER SCRIPT EXAMPLE FOR STMICROELECTRONICS ST72F324BJ2
;
; Use this example as a starting point for your specific programming needs
;
; ----------
;
; Hardware connections
;
; DIO0/AO0 (RESET)
; DIO1/AO1 (ICCSEL/Vpp)
; DIO2 (ICCCLK)
; DIO3 (ICCDATA)
; CLKOUT (CLOCK - optional)
;
; Turns off logging
#LOG_OFF
; Halt on errors
#HALT_ON FAIL
; Sets device
TCSETDEV STMICROELECTRONICS ST72F324BJ2 ST7F
; Target voltage, mV (change as needed)
TCSETPAR VDD 5000
; Clock oscillator frequency, Hz
; Possible frequencies are: 25000000, 12500000, 6250000, 0 (DISABLED)
TCSETPAR CLKOUT 12500000
; Enters ICC mode ignoring the Option Bytes configuration
TCSETPAR ICPMODE DISABLED
; Reset up and down times
TCSETPAR RSTUP 100 ; us
TCSETPAR RSTDOWN 100 ; us
; Starts programming block
TPSTART
; Image file to be programmed (must be placed in the \BINARIES directory of the SD card)
TPSETSRC FILE TEST.FRB
; Chip unprotection (use this command if the device is protected)
TPCMD UNPROTECT
; Mass erases Flash memory
TPCMD MASSERASE F
; Blank checks Flash memory (change address and length as needed)
TPCMD BLANKCHECK F $E000 8192
; Programs Flash memory (change addresses and length as needed)
TPCMD PROGRAM F $E000 $E000 8192
; Verifies Flash memory, read-out method (change addresses and length as needed)
TPCMD VERIFY F R $E000 $E000 8192
; Programs and verifies Option Bytes
; The values shown are the factory default settings for this device
TPCMD PROGRAM OPTIONS $E7 $EF
TPCMD VERIFY OPTIONS $E7 $EF
; Ends programming block
TPEND
XFlash器件的脚本范例
下面提供的范例帮助理解以上论述的命令是怎样应用于典型的XFlash器件的,以ST7FLITE09芯片为例。
;
; FLASHRUNNER SCRIPT EXAMPLE FOR STMICROELECTRONICS ST7FLITE09
;
; Use this example as a starting point for your specific programming needs
;
; ----------
;
; Hardware connections
;
; DIO0/AO0 (RESET)
; DIO1/AO1 (ICCSEL/Vpp)
; DIO2 (ICCCLK)
; DIO3 (ICCDATA)
; CLKOUT (CLOCK - optional)
;
; Turns off logging
#LOG_OFF
; Halt on errors
#HALT_ON FAIL
; Sets device
TCSETDEV STMICROELECTRONICS ST7FLITE09 ST7F
; Target voltage, mV (change as needed)
TCSETPAR VDD 5000
; Clock oscillator frequency, Hz
; Possible frequencies are: 25000000, 12500000, 6250000, 0 (DISABLED)
TCSETPAR CLKOUT 12500000
; Enters ICC mode ignoring the Option Bytes configuration
TCSETPAR ICPMODE DISABLED
; Reset up and down times
TCSETPAR RSTUP 100 ; us
TCSETPAR RSTDOWN 100 ; us
; Starts programming block
TPSTART
; Image file to be programmed (must be placed in the \BINARIES directory of the SD card)
TPSETSRC FILE TEST.FRB
; Chip unprotection (use this command if the device is protected)
TPCMD UNPROTECT
; Programs Flash memory (change addresses and length as needed)
; Since the device features a XFlash memory, neither a mass erase nor a blankcheck operation
; is necessary.
; The device contains an internal RC oscillator.
; Predefined calibration values are stored in Flash memory for 3V and 5V VDD supply voltages at 25°C.
; $FFDE = RCCR0 (VDD=5V), $FFDF = RCCR1 (VDD=3V).
; If RC calibration is not used, these locations can be used as normal memory.
TPCMD PROGRAM F $FA00 $FA00 1502
TPCMD PROGRAM F $FFE0 $FFE0 32
; Verifies Flash memory, read-out method (change addresses and length as needed)
TPCMD VERIFY F R $FA00 $FA00 1502
TPCMD VERIFY F R $FFE0 $FFE0 32
; Programs EEPROM memory (change addresses and length as needed)
TPCMD PROGRAM E $1000 $1000 128
; Verifies EEPROM memory, read-out method (change addresses and length as needed)
TPCMD VERIFY E R $1000 $1000 128
; Programs and verifies Option Bytes
; The values shown are the factory default settings for this device
TPCMD PROGRAM OPTIONS $FC $EF
TPCMD VERIFY OPTIONS $FC $EF
; Ends programming block
TPEND
7.编程时间
下表显示部分意法半导体ST72F家族器件的编程时间。
器件型号 |
存储容量 |
时钟频率 |
操作 |
时间 |
ST72F324J6 |
32KB HDFlash |
fCPU = 8MHz |
Program + Verify |
4.68 s |
ST72F32AJ2 |
8KB HDFlash |
fCPU = 8MHz |
Program + Verify |
1.53 s |
ST72F344S4 |
16KB XFlash |
fCPU = 8MHz |
Program + Verify |
4.70 s |
ST72F561K9 |
60KB HDFlash |
fCPU = 8MHz |
Program + Verify |
8.10 s |
ST72F621L4 |
16KB HDFlash |
fCPU = 3MHz |
Program + Verify |
4.60 s |
ST7FLITE09 |
1.5KB XFlash |
fCPU = 8MHz |
Program + Verify |
0.80 s |
ST7FLITE29 |
8KB XFlash |
fCPU = 8MHz |
Program + Verify |
2.50 s |
ST7FLITEUS5 |
1KB XFlash |
fCPU = 8MHz |
Program + Verify |
0.66 s |
ST7FMC2S6 |
32KB HDFlash |
Internal Clock |
Program + Verify |
10.30 s |
编程时间取决于编程算法版本、目标板连接、目标单片机mask和其它外部条件,系统实际编程时间可能因此会与上表列出的不同。
8.参考
FlashRunner用户手册;
ST7家族ICC协议参考手册;
ST7 家族Flash编程参考手册;
单片机数据手册。
文章评论(0条评论)
登录后参与讨论