热度 13
2016-3-24 18:15
2605 次阅读|
0 个评论
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: 待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: T rim值计算的精确度,用百分比表示(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 f CPU = 8MHz Program + Verify 4.68 s ST72F32AJ2 8KB HDFlash f CPU = 8MHz Program + Verify 1.53 s ST72F344S4 16KB XFlash f CPU = 8MHz Program + Verify 4.70 s ST72F561K9 60KB HDFlash f CPU = 8MHz Program + Verify 8.10 s ST72F621L4 16KB HDFlash f CPU = 3MHz Program + Verify 4.60 s ST7FLITE09 1.5KB XFlash f CPU = 8MHz Program + Verify 0.80 s ST7FLITE29 8KB XFlash f CPU = 8MHz Program + Verify 2.50 s ST7FLITEUS5 1KB XFlash f CPU = 8MHz Program + Verify 0.66 s ST7FMC2S6 32KB HDFlash Internal Clock Program + Verify 10.30 s 编程时间取决于编程算法版本、目标板连接、目标单片机mask和其它外部条件,系统实际编程时间可能因此会与上表列出的不同。 8. 参考 FlashRunner用户手册; ST7家族ICC协议参考手册; ST7 家族Flash编程参考手册; 单片机数据手册。