TOSHIBA Original CMOS 16-Bit Microcontroller TLCS-900/L1 Series TMP91FW27UG TMP91FW27FG Semiconductor Company Preface Thank you very much for making use of Toshiba microcomputer LSI. Before using this LSI, refer to section “Points of Note and Restrictions”. Especially, take care below cautions. **CAUTION** How to release the HALT mode Usually, interrupts can release all halts stats. However, the interrupts = ( NMI , INT0, INTRTC), which can release the HALT mode may not be able to do so if they are input during the period CPU is shifting to the HALT mode (for about 5 clocks of fFPH) with IDLE1 or STOP mode (IDLE2 is not applicable to this case). (In this case, an interupt request is kept on hold internally.) If another interupt is generated after it has shifted to HALT mode completely, halt status can be released without difficultly. The priority of this interrupt is compare with that of the interrupt kept on hold internally, and the interrupt with higher priority is handled first followed by the other interrupt. TMP91FW27 CMOS 16-Bit Microcontrollers TMP91FW27UG / TMP91FW27FG 1. Outline and Features TMP91FW27 is a high-speed 16-bit microcontroller designed for the control of various mid-to large-scale equipment. TMP91FW27UG and TMP91FW27FG come in a 64-pin flat package. Listed below are the features. (1) High-speed 16-bit CPU (900/L1 CPU) • Instruction mnemonics are upward-compatible with TLCS-90/900 • 16 Mbytes of linear address space • General-purpose registers and register banks • 16-bit multiplication and division instructions; bit transfer and arithmetic instructions • Micro DMA: 4 channels (593 ns /2 bytes at 27 MHz) (2) Minimum instruction execution time: 148 ns (at 27 MHz) (3) Built-in RAM: 12 Kbytes Built-in ROM: 128-Kbyte Flash memory 4-Kbyte mask ROM (used for booting) RESTRICTIONS ON PRODUCT USE 20070701-EN • The information contained herein is subject to change without notice. • TOSHIBA is continually working to improve the quality and reliability of its products. Nevertheless, semiconductor devices in general can malfunction or fail due to their inherent electrical sensitivity and vulnerability to physical stress. It is the responsibility of the buyer, when utilizing TOSHIBA products, to comply with the standards of safety in making a safe design for the entire system, and to avoid situations in which a malfunction or failure of such TOSHIBA products could cause loss of human life, bodily injury or damage to property. In developing your designs, please ensure that TOSHIBA products are used within specified operating ranges as set forth in the most recent TOSHIBA products specifications. Also, please keep in mind the precautions and conditions set forth in the “Handling Guide for Semiconductor Devices,” or “TOSHIBA Semiconductor Reliability Handbook” etc. • The TOSHIBA products listed in this document are intended for usage in general electronics applications (computer, personal equipment, office equipment, measuring equipment, industrial robotics, domestic appliances, etc.).These TOSHIBA products are neither intended nor warranted for usage in equipment that requires extraordinarily high quality and/or reliability or a malfunction or failure of which may cause loss of human life or bodily injury (“Unintended Usage”). Unintended Usage include atomic energy control instruments, airplane or spaceship instruments, transportation instruments, traffic signal instruments, combustion control instruments, medical instruments, all types of safety devices, etc.. Unintended Usage of TOSHIBA products listed in his document shall be made at the customer’s own risk. • The products described in this document shall not be used or embedded to any downstream products of which manufacture, use and/or sale are prohibited under any applicable laws and regulations. • The information contained herein is presented only as a guide for the applications of our products. No responsibility is assumed by TOSHIBA for any infringements of patents or other rights of the third parties which may result from its use. No license is granted by implication or otherwise under any patents or other rights of TOSHIBA or the third parties. • Please contact your sales representative for product-by-product details in this document regarding RoHS compatibility. Please use these products in this document in compliance with all applicable laws and regulations that regulate the inclusion or use of controlled substances. Toshiba assumes no liability for damage or losses occurring as a result of noncompliance with applicable laws and regulations. This product uses the Super Flash® technology under the license of Silicon Storage Technology,Inc. Super Flash® is a registered trademark of Silicon Storage Technology,Inc. 91FW27-1 2007-11-02 TMP91FW27 (4) External memory expansion • Expandable up to 16 Mbytes (shared program/data area) • Can simultaneously support 8-/16-bit width external data bus (Dynamic data bus sizing) (5) 8-bit timers: 6 channels (6) 16-bit timers: 1 channel (7) General-purpose serial interface: 2 channels • UART/Synchronous mode: 2 channels • IrDA Ver.1.0 (115.2 kbps) mode selectable: 1 channel (8) Serial bus interface: 1 channel • I2C bus mode/clock synchronous mode selectable (9) 10-bit AD converter (sample hold circuit is inside): 4 channels (10) Watchdog timer (11) Special timer for CLOCK (12) Chip select/Wait controller: 4 blocks (13) Interrupts: 34 interrupts • 9 CPU interrupts: • 21 internal interrupts: 7 priority levels are selectable • 4 external interrupts: 7 priority levels are selectable (among 3 interrupts are selectable edge mode) Software interrupt instruction and illegal instruction (14) Input/output ports: 53 pins (15) Stand-by function Three Halt modes: IDLE2 (programmable), IDLE1 and STOP (16) Clock controller • Clock gear function: Select a High-frequency clock fc to fc/16 • Special timer for CLOCK (fs = 32.768 kHz) (17) Operating voltage • Vcc = 2.7 V to 3.6 V (fc max = 27 MHz, flash memory read operation) • Vcc = 2.2 V to 3.6 V (fc max = 16 MHz, flash memory read operation) • Vcc = 2.7 V to 3.6 V (fc max = 27 MHz, flash memory erase/program operations) (18)Package • LQFP64-P-1010-0.50D (TMP91FW27UG) • QFP64-P-1414-0.80A (TMP91FW27FG) 91FW27-2 2007-11-02 TMP91FW27 DVCC DVSS CPU (TLCS-900/L1) ADTRG (P53) AN0~AN3 (P50~P53) AVCC, AVSS TXD0 (P90) RXD0 (P91) SCLK0/ CTS0 (P92) 10-bit 4-channel AD converter SIO/UART/IrDA (Channel 0) XWA XBC XDE XHL XIX XIY XIZ XSP W A B C D E H L IX IY IZ SP SCK (P60) SO/SDA (P61) SI/SCL (P62) SIO/UART (Channel 1) Serial bus interface (SBI) X1 X2 Clock gear Low speed oscillator 32 bits SR TXD1 (P93) RXD1 (P94) SCLK1/ CTS1 (P95) High speed oscillator XT1 (P96) XT2 (P97) RESET AM0 AM1 ALE F PC Watchdog timer (WDT) Port 0 AD0~AD7 (P00~P07) Port 1 AD8/A8~AD15/A15 (P10~P17) Port 2 A0/A16~A5/A21 (P20~P25) RD (P30) [ BOOT ] TA0IN (P70) 8-bit timer (TMRA0) TA1OUT (P71) 8-bit timer (TMRA1) Special timer for CLOCK Port 3 HWR (P32) 12-KB RAM 8-bit timer (TMRA2) TA3OUT (P72) 8-bit timer (TMRA3) TA4IN (P73) 8-bit timer (TMRA4) TA5OUT (P74) 8-bit timer (TMRA5) WR (P31) Port 6 CS/WAIT controller (4-block) 128-KB Flash EEPROM Interrupt controller 16-bit timer (TMRB0) 4-KB Boot ROM CS0 ~ CS2 (P40~P42) NMI INT0 (P63) TB0IN0/INT5 (P80) TB0IN1/INT6 (P81) TB0OUT0 (P82) TB0OUT1 (P83) ( ): Initial function after resert [ ]: During resert Figure 1.1 TMP91FW27 Block Diagram 91FW27-3 2007-11-02 TMP91FW27 2. Pin Assignment and Pin Functions The assignment of input/output pins for the TMP91FW27, their names and functions are as follows: 2.1 Pin Assignment Diagram Figure 2.1.1 shows the pin assignment of the TMP91FW27UG and TMP91FW27FG. P61/SO/SDA 57 P62/SI/SCL 58 56 P60/SCK 55 P42/ CS2 P63/INT0 59 54 P41/ CS1 P50/AN0 60 53 P40/ CS0 P51/AN1 61 52 P32/ HWR P52/AN2 62 51 P31/ WR P53/AN3/ ADTRG 63 50 P30/ RD / BOOT AVCC 64 49 P25/A5/A21 AVSS 1 48 P24/A4/A20 P70/TA0IN 2 47 P23/A3/A19 P71/TA1OUT 3 46 P22/A2/A18 P72/TA3OUT 4 45 P21/A1/A17 P73/TA4IN 5 44 P20/A0/A16 P74/TA5OUT 6 43 P17/AD15/A15 P80/TB0IN0/INT5 7 P81/TB0IN1/INT6 8 42 P16/AD14/A14 Top View LQFP64, QFP64 41 P15/AD13/A13 P82/TB0OUT0 9 P83/TB0OUT1 10 40 P14/AD12/A12 39 P13/AD11/A11 P90/TXD0 11 38 P12/AD10/A10 P91/RXD0 12 37 P11/AD9/A9 P92/SCLK0/ CTS0 13 36 P10/AD8/A8 P93/TXD1 14 35 P07/AD7 P94/RXD1 15 34 P06/AD6 P95/SCLK1/ CTS1 16 33 P05/AD5 AM0 17 32 P04/AD4 DVCC 18 31 P03/AD3 X2 19 30 P02/AD2 DVSS 20 29 P01/AD1 X1 21 28 P00/AD0 AM1 22 27 ALE RESET 23 26 NMI P96/XT1 24 25 P97/XT2 Figure 2.1.1 Pin Assignment Diagram (64-pin LQFP, QFP) 91FW27-4 2007-11-02 TMP91FW27 2.2 Pin Names and Functions The names of the input/output pins and their functions are described below. Table 2.2.1 and Table 2.2.2 show Pin names and functions. Table 2.2.1 Pin Names and Functions (1/2) Pin Names P00 to P07 Number of Pins I/O 8 I/O AD0 to AD7 P10 to P17 8 AD8 to AD15 A8 to A15 P20 to P25 Port 0: I/O port that allows I/O to be selected at the bit level I/O Address data (lower): 0 to 7 of address/data bus I/O Port1: I/O port that allows I/O to be selected at the bit level I/O Address data (upper): 8 to 15 of address/data bus Output 6 Functions I/O Address: 8 to 15 of address bus Port 2: I/O port that allows I/O to be selected at the bit level A0 to A5 Output Address: 0 to 5 of address bus A16 to A21 Output Address: 16 to 21 of address bus Output Port 30: Output Port Output Read: Strobe signal for reading external memory When read internal area also, output RD by setting to P3<P30> = 0 and P30 1 RD P3FC<P30F> = 1. Input BOOT This pin sets single boot mode (only during reset). For the details, please refer to section 3.2.3, “Operation modes”. P31 1 WR P32 1 1 1 CS1 P42 Write: Strobe signal for writing data to pins AD0 to AD7 I/O I/O Output CS0 P41 Port 31: Output port Output Output HWR P40 Output I/O Output 1 I/O Output CS2 High Write: Strobe signal for writing data to pins AD8 to AD15 Port 40: I/O port (with pull-up resistor) Chip select 0: Outputs “0” when address is within specified address area. Port41: I/O port (with pull-up resistor) Chip select 1: Outputs “0” when address is within specified address area. Port 42: I/O port (with pull-up resistor) Chip select 2: Outputs “0” when address is within specified address area. Input Port 5: Input port AN0 to AN3 Input Analog input: Analog input pins of the AD converter ADTRG Input AD trigger: Pin used to request AD start (shared with P53). P50 to P53 P60 4 Port 32: I/O port (with pull-up resistor) 1 SCK P61 1 SO I/O Serial bus interface clock I/O at SIO mode I/O Port 61: I/O port Output SDA Port 60: I/O port I/O I/O Serial bus interface send data at SIO mode 2 Serial bus interface send/receive data at I C mode Open-drain output mode by programmable P62 1 SI I/O Input SCL Port 62: I/O port Serial bus interface receive data at SIO mode 2 I/O Serial bus interface clock I/O at I C mode I/O Port 63: I/O port (Schmitt input) Open-drain output mode by programmable P63 1 INT0 P70 Input 1 TA0IN P71 1 TA1OUT P72 TA3OUT I/O Input I/O Output 1 I/O Output Interrupt request pin 0: Interrupt request pin with level/ rising/falling edge Port 70: I/O port 8-bit timer 0 input: Input pin of 8-bit timer TMRA0 Port 71: I/O port 8-bit timer 1 output: Output pin of 8-bit timer TMRA0 or TMRA1 Port 72: I/O port 8-bit timer 3 output: Output pin of 8-bit timer TMRA2 or TMRA3 91FW27-5 2007-11-02 TMP91FW27 Table 2.2.2 Pin Names and Functions (2/2) Pin Names P73 Number of Pins 1 TA4IN P74 I/O Input 1 TA5OUT P80 I/O I/O Output 1 I/O Functions Port 73: I/O port 8-bit timer 4 Input: Input pin of 8-bit timer TMRA4 Port 74: I/O port 8-bit timer 5 output: Output pin of 8-bit timer TMRA4 or TMRA5 Port 80: I/O port TB0IN0 Input 16-bit timer 0 Input 0: Input of count/capture trigger in 16-bit timer TMRB0 INT5 Input Interrupt request pin 5: Interrupt request pin with selectable rising/falling edge P81 1 I/O Port 81: I/O port TB0IN1 Input 16-bit timer 0 Input 1: Input of count/capture trigger in 16-bit timer TMRB0 INT6 Input Interrupt request pin 6: Interrupt request pin of rising edge P82 1 TB0OUT0 P83 Output 1 TB0OUT1 P90 1 1 1 TXD1 RXD1 P95 Port 83: I/O port 16-bit timer 0 output 1: Output pin of 16-bit timer TMRB0 Port 90: I/O port Serial 0 send data: Open-drain output pin by programmable Port 91: I/O port Serial 0 receive data Port 92: I/O port Serial 0 clock I/O I/O I/O Input Serial 0 data send enable (Clear to send) Port 93: I/O port Serial 1 send data: Open-drain output pin by programmable Port 94: I/O port Serial 1 receive data I/O Port 95: I/O port SCLK1 I/O Serial 1 clock I/O CTS1 Input P96 1 16-bit timer 0 output 0: Outpit pin of 16-bit timer TMRB0 I/O Output 1 Port 82: I/O port I/O Input CTS0 P94 I/O Input 1 SCLK0 P93 I/O Output RXD0 P92 I/O Output TXD0 P91 I/O 1 XT1 P97 1 XT2 ALE 1 Serial 1 data send enable (Clear to send) I/O Port 96: I/O port. Open-drain output pin. Input Low frequency oscillator connection pin I/O Port 97: I/O port. Open-drain output pin. Output Low frequency oscillator connection pin Output Address latch enable (It can be set as prohibition of an output for noize reduction.) NMI 1 Input Non-Maskable interrupt request pin: Interrupt request pin with programmable falling edge level or with both edge levels programmable (Schmitt input). AM0 and AM1 2 Input Operation mode: Fixed to AM1 = “1” and AM0 = “1”. RESET 1 AVCC 1 Input Pin used to both power supply pin for AD converter and standard power supply Reset: Initialize LSI. (Schmitt input, with pull-up resistor) AVSS 1 Pin used to both GND pin for AD converter (0 V) and standard power supply X1/X2 2 DVCC 1 for AD converter (H). pin for AD converter (L). I/O High frequency oscillator connection pin. Power supply pins (All DVCC pins should be connected with the power Supply pin). DVSS 1 GND pins (All pins shuold be connected with GND(0V).) 91FW27-6 2007-11-02 TMP91FW27 3. Functional Description This section shows the hardware configuration of the TMP91FW27 and explains how it operates. This device is a version of the created by replacing the predecessor's internal mask ROM with a 128-Kbyte internal flash memory and expanding its internal RAM size to 12 Kbytes. The configuration and the functionality of this device are the same as those of the TMP91CP27. For the functions of this device that are not described here, refer to the TMP91CP27 data sheet. 3.1 Memory Map Figure 3.1.1 shows a memory map of the TMP91FW27 in single-chip mode and its memory areas that can be accessed in each addressing mode of the CPU. 000000H Internal I/O Direct area (n) (4 Kbytes) 000100H 001000H 64-Kbytes area Internal RAM (12 Kbytes) (nn) 004000H 010000H External 16-Mbytes area memory (R) (−R) (R+) (R + R8/16) (R + d8/16) (nnn) FE0000H 128 Kbytes internal ROM FFFF00H FFFFFFH Vector table (256 bytes) ( = Internal area) Figure 3.1.1 Memory Map (Single-Chip Mode) 91FW27-7 2007-11-02 TMP91FW27 3.2 Flash Memory The TMP91FW27 incorporates flash memory that can be electrically erased and programmed using a single 3V power supply. The flash memory is programmed and erased using JEDEC-standard commands. After a program or erase command is input, the corresponding operation is automatically performed internally. Erase operations can be performed by the entire chip (chip erase) or on a sector basis (sector erase). The configuration and operations of the flash memory are described below. 3.2.1 Features • Power supply voltage for program/erase operations • Sector size Vcc = 2.7 V to 3.6 V (−10 °C to 40 °C) • Configuration 64 K × 16 bits (128 Kbytes) • Functions Single-word programming Chip erase Sector erase Data polling/Toggle bit 3.2.2 4 Kbytes × 32 • Mode control JEDEC-standard commands • Programming method On-board programming Parallel programmer • Security Write protection Read protection Block Diagram Internal address bus Internal data bus Internal control bus Mode setting pins Mode control ROM controller Control Address Data Flash memory Command register Address latch Data latch Column decoder/Sense amp Row decoder Control circuit (including automatic sequence control circuit) Flash memory cells 128 KB Erase sector decoder Figure 3.2.1 Block Diagram of Flash Memory Unit 91FW27-8 2007-11-02 TMP91FW27 3.2.3 Operation Modes 3.2.3.1 Overview The following three types of operation modes are available to control program/erase operations on the flash memory. Table 3.2.1 Description of Operation Modes Operation Mode Name Description Single Chip mode After reset release, the device starts up from the internal flash memory. Single Chip mode is further divided into two modes: “Normal mode” is a mode in which user application programs are executed, and “User Boot mode” is used to program the flash memory on-board. The means of switching between these two modes can be set by the user as desired. For example, it can be set so that Port 00 = “1” selects Normal mode and Port 00 = “0” selects User Boot mode. The user must include a routine to handle mode switching in a user application program. Normal mode User Boot mode Single Boot mode In this mode, the device starts up from a user application program. In this mode, the flash memory can be programmed by a user-specified method. After reset release, the device starts up from the internal boot ROM (mask ROM). The boot ROM includes an algorithm which allows a program for programming/erasing the flash memory on-board via a serial port to be transferred to the device’s internal RAM. The transferred program is then executed in the internal RAM so that the flash memory can be programmed/erased by receiving data from an external host and issuing program/erase commands. This mode enables the internal flash memory to be programmed/erased using a general-purpose programmer. For programmers that can be used, please contact your local Toshiba sales representative. Programmer mode Of the modes listed in Table 3.2.1, the internal flash memory can be programmed in User Boot mode, Single Boot mode and Programmer mode. 0 The mode in which the flash memory can be programmed/erased while mounted on the user board is defined as the on-board programming mode. Of the modes listed above, Single Boot mode and User Boot mode are classified as on-board programming modes. Single Boot mode supports Toshiba’s proprietary programming/erase method using serial I/O. User Boot mode (within Single Chip mode) allows the flash memory to be programmed/erased by a user-specified method. Programmer mode is provided with a read protect function which prohibits reading of ROM data. By enabling the read protect function upon completion of programming, the user can protect ROM data from being read by third parties. 91FW27-9 2007-11-02 TMP91FW27 The operation mode ⎯ Single Chip mode, Single Boot mode or Programmer mode ⎯ is determined during reset by externally setting the input levels on the AM0, AM1 and BOOT (P30) pins. Except in Programmer mode which is entered with RESET held at “0”, the CPU will start operating in the selected mode after the reset state is released. Once the operation mode has been set, make sure that the input levels on the mode setting pins are not changed during operation. Table 3.2.2 shows how to set each operation mode, and Figure 3.2.2 shows a mode transition diagram. 1H 2H Table 3.2.2 Operation Mode Pin Settings Input Pins Operation Mode (1) (2) (3) RESET BOOT (P30) AM1 AM0 0 1 0 ― 1 1 1 1 1 0 Single Chip mode (Normal or User Boot mode) Single Boot mode Programmer mode Although P30 is an output port, it becomes an input port with pull-up resistor only during a reset. After a reset, P30 operates as follows depending on the operation mode. • Single chip mode: Output port (Without pull-up resistor) • Single boot mode: Pull-up (Input gate is invalid, and output gate is in high impedance.) (3) Programmer mode Reset state (1) or (2) + RESET = 0 (1) (2) RESET = 0 RESET = 0 Single Chip mode Single Boot mode User Boot mode Normal mode Switching method to be set by user On-board programming mode Numbers in ( ) correspond to the operation mode pin settings shown in Table 3.2.2 Figure 3.2.2 Mode Transition Diagram 3.2.3.2 Reset Operation To reset the device, hold the RESET input at “0” for at least 10 system clocks while the power supply voltage is within the rated operating voltage range and the internal high-frequency oscillator is oscillating stably. 91FW27-10 2007-11-02 TMP91FW27 3.2.3.3 Memory Map for Each Operation Mode In this product, the memory map varies with operation mode. The memory map and sector address ranges for each operation mode are shown below. Single Chip mode 000000H 001000H Internal I/O Internal RAM 12KB Single Boot mode 000000H 001000H Internal I/O Programmer mode 000000H Internal RAM 12KB Internal Flash ROM 128KB 004000H 004000H External memory 010000H 020000H (予約) External memory Internal内蔵 Flash ROM 128KB Flash ROM Reserved 030000H External memory FE0000H Internal Flash ROM 128KB FFFF00H FFFFFFH (Interrupt vector 256B) FFF000H Internal Boot ROM 4KB FFFF00H FFFFFFH (Interrupt vector 256B) FFFFFFH Figure 3.2.3 TMP91FW27 Memory Map for Each Operation Mode 91FW27-11 2007-11-02 TMP91FW27 Table 3.2.3 Sector Address Ranges for Each Operation Mode Sector-0 Sector-1 Sector-2 Sector-3 Sector-4 Sector-5 Sector-6 Sector-7 Sector-8 Sector-9 Sector-10 Sector-11 Sector-12 Sector-13 Sector-14 Sector-15 Sector-16 Sector-17 Sector-18 Sector-19 Sector-20 Sector-21 Sector-22 Sector-23 Sector-24 Sector-25 Sector-26 Sector-27 Sector-28 Sector-29 Sector-30 Sector-31 Single Chip Mode Single Boot Mode FE0000H to FE0FFFH FE1000H to FE1FFFH FE2000H to FE2FFFH FE3000H to FE3FFFH FE4000H to FE4FFFH FE5000H to FE5FFFH FE6000H to FE6FFFH FE7000H to FE7FFFH FE8000H to FE8FFFH FE9000H to FE9FFFH FEA000H to FEAFFFH FEB000H to FEBFFFH FEC000H to FECFFFH FED000H to FEDFFFH FEE000H to FEEFFFH FEF000H to FEFFFFH FF0000H to FF0FFFH FF1000H to FF1FFFH FF2000H to FF2FFFH FF3000H to FF3FFFH FF4000H to FF4FFFH FF5000H to FF5FFFH FF6000H to FF6FFFH FF7000H to FF7FFFH FF8000H to FF8FFFH FF9000H to FF9FFFH FFA000H to FFAFFFH FFB000H to FFBFFFH FFC000H to FFCFFFH FFD000H to FFDFFFH FFE000H to FFEFFFH FFF000H to FFFFFFH 10000H to 10FFFH 11000H to 11FFFH 12000H to 12FFFH 13000H to 13FFFH 14000H to 14FFFH 15000H to 15FFFH 16000H to 16FFFH 17000H to 17FFFH 18000H to 18FFFH 19000H to 19FFFH 1A000H to 1AFFFH 1B000H to 1BFFFH 1C000H to 1CFFFH 1D000H to 1DFFFH 1E000H to 1EFFFH 1F000H to 1FFFFH 20000H to 20FFFH 21000H to 21FFFH 22000H to 22FFFH 23000H to 23FFFH 24000H to 24FFFH 25000H to 25FFFH 26000H to 26FFFH 27000H to 27FFFH 28000H to 28FFFH 29000H to 29FFFH 2A000H to 2AFFFH 2B000H to 2BFFFH 2C000H to 2CFFFH 2D000H to 2DFFFH 2E000H to 2EFFFH 2F000H to 2FFFFH 91FW27-12 2007-11-02 TMP91FW27 3.2.4 Single Boot Mode In Single Boot mode, the internal boot ROM (mask ROM) is activated to transfer a program/erase routine (user-created boot program) from an external source into the internal RAM. This program/erase routine is then used to program/erase the flash memory. In this mode, the internal boot ROM is mapped into an area containing the interrupt vector table, in which the boot ROM program is executed. The flash memory is mapped into an address space different from the one into which the boot ROM is mapped (see Figure 3.2.3). 3H The device’s SIO (SIO1) and the controller are connected to transfer the program/erase routine from the controller to the device’s internal RAM. This program/erase routine is then executed to program/erase the flash memory. The program/erase routine is executed by sending commands and write data from the controller. The communications protocol between the device and the controller is described later in this manual. Before the program/erase routine can be transferred to the RAM, user password verification is performed to ensure the security of user ROM data. If the password is not verified correctly, the RAM transfer operation cannot be performed. In Single Boot mode, disable interrupts and use the interrupt request flags to check for an interrupt request. Note: In Single Boot mode, the boot-ROM programs are executed in Normal mode. Do not change to another operation mode in the program/erase routine. 91FW27-13 2007-11-02 TMP91FW27 3.2.4.1 Using the program/erase algorithm in the internal boot ROM (Step-1) Environment setup Since the program/erase routine and write data are transferred via SIO (SIO1), connect the device’s SIO (SIO1) and the controller on the board. The user must prepare the program/erase routine (a) on the controller. New user application program (I/O) (a) Program/erase routine (TMP91FW27) Boot ROM (Controller) SIO1 Flash memory Old user application program (or erased state) RAM (Step-2) Starting up the internal boot ROM Release the reset with the relevant input pins set for entering Single Boot mode. When the internal boot ROM starts up, the program/erase routine (a) is transferred from the controller to the internal RAM via SIO according to the communications procedure for Single Boot mode. Before this can be carried out, the password entered by the user is verified against the password written in the user application program. (If the flash memory has been erased, 12 bytes of “0xFF” are used as the password.) New user application program (a) Program/erase routine (I/O) (TMP91FW27) Boot ROM 0 → 1 RESET (Controller) SIO1 Flash memory Condition for entering Single Boot mode Old user application program (or erased state) RAM 91FW27-14 2007-11-02 TMP91FW27 (Step-3) Copying the program/erase routine to the RAM After password verification is completed, the boot ROM copies the program/erase routine (a) from the controller to the RAM using serial communications. The program/erase routine must be stored within the RAM address range of 001000H to 003DFFH. New user application program (I/O) (a) Program/erase routine (TMP91FW27) Boot ROM (Controller) SIO1 Flash memory Old user application program (or erased state) (a) Program/erase routine RAM (Step-4) Executing the program/erase routine in the RAM Control jumps to the program/erase routine (a) in the RAM. If necessary, the old user application program is erased (sector erase or chip erase). Note: The boot ROM is provided with an erase command, which enables the entire chip to be erased from the controller without using the program/erase routine. If it is necessary to erase data on a sector basis, incorporate the necessary code in the program/erase routine. New user application program (I/O) (a) Program/erase routine (TMP91FW27) Boot ROM (Controller) SIO1 Flash memory (a) Program/erase routine Erased RAM 91FW27-15 2007-11-02 TMP91FW27 (Step-5) Copying the new user application program The program/erase routine (a) loads the new user application program from the controller into the erased area of the flash memory. In the example below, the new user application program is transferred under the same communications conditions as those used for transferring the program/erase routine. However, after the program/erase routine has been transferred, this routine can be used to change the transfer settings (data bus and transfer source). Configure the board hardware and program/erase routine as desired. New user application program (I/O) (a) Program/erase routine (TMP91FW27) Boot ROM (Controller) SIO1 Flash memory New user application program (a) Program/erase routine RAM (Step-6) Executing the new user application program After the programming operation has been completed, turn off the power to the board and remove the cable connecting the device and the controller. Then, turn on the power again and start up the device in Single Chip mode to execute the new user application program. (TMP91FW27) Boot ROM 0 → 1 RESET (Controller) SIO1 Flash memory Condition for entering Single Chip mode (Normal mode) New user application program RAM 91FW27-16 2007-11-02 TMP91FW27 3.2.4.2 Connection Examples for Single Boot Mode In Single Boot mode the flash memory is programmed by serial transfer. Therefore, on-board programming is performed by connecting the device’s SIO (SIO1) and the controller (programming tool) and sending commands from the controller to the device. Figure 3.2.4 shows an example of connection between the target board and a programming controller. Figure 3.2.5 shows an example of connection between the target board and an RS232C board. 4H 5H On-Board Programming Controller Target Board VCC Reg. Power supply VCC VCC TMP91FW27 DVCC AM0 AM1 Mode control MCU Program controller Mode control Target board operation ROM RESET RESET BOOT Boot mode switching circuit BOOT (P30) RAM P95 P92 RXD RS232C P95 P92 RXD1 (P94) TXD TXD1 (P93) VSS DVSS PC Figure 3.2.4 Example of Connection with an External Controller in Single Boot Mode 91FW27-17 2007-11-02 TMP91FW27 Target Board RS232C Board VCC VCC Power supply VCC TMP91FW27 DVCC AM0 AM1 RESET RESET BOOT RXD RS232C Boot mode switching circuit BOOT (P30) RXD1 (P94) TXD TXD1 (P93) VSS VSS DVSS PC Figure 3.2.5 Example of Connection with an RS232C Board in Single Boot Mode 91FW27-18 2007-11-02 TMP91FW27 3.2.4.3 Mode Setting To perform on-board programming, the device must be started up in Single Boot mode by setting the input pins as shown below. ・AM0,AM1 =1 ・ BOOT =0 ・ RESET =0→1 Set the AM0, AM1, and BOOT pins as shown above with the RESET pin held at “0”. Then, setting the RESET pin to “1” will start up the device in Single Boot mode. 3.2.4.4 Memory Maps Figure 3.2.6 shows a comparison of the memory map for Normal mode (in Single Chip mode) and the memory map for Single Boot mode. In Single Boot mode, the flash memory is mapped to addresses 10000H to 2FFFFH (physical addresses) and the boot ROM (mask ROM) is mapped to addresses FFF000H to FFFFFFH. 6H Single Chip mode 000000H 001000H Single Boot mode 000000H Internal I/O Internal RAM 12KB 001000H Internal I/O Internal RAM 12KB 004000H 004000H External Memory 010000H External Memory (予約) Internal内蔵 Flash ROM 128KB Flash ROM 030000H External Memory FE0000H FFFF00H FFFFFFH Internal Flash ROM 128KB FFF000H (Interrupt vector 256B) FFFF00H FFFFFFH Internal Boot ROM 4KB (Interrupt vector 256B) Figure 3.2.6 Comparison of Memory Maps 91FW27-19 2007-11-02 TMP91FW27 3.2.4.5 Interface Specifications The SIO communications format in Single Boot mode is shown below. The device supports the UART (asynchronous communications) serial operation mode. To perform on-board programming, the same communications format must also be set on the programming controller’s side. ● UART (asynchronous ) communications ・Communications channel : SIO channel 1 (For the pins to be used, see Table 3.2.4.) ・Serial transfer mode : UART (asynchronous communications) mode ・Data length : 8 bits ・Parity bit : None ・Stop bit : 1 bit ・Baud rate : See Table 3.2.5 and Table 3.2.6. 7H 8H 9H Table 3.2.4 Pin Connections Pins Power supply pins Mode setting pins UART { { DVCC DVSS AM1,AM0, { BOOT Reset pin RESET { TXD1 RXD1 { { Communications pins Note: Unused pins are in the initial state after reset release. Table 3.2.5 Baud Rate Table SIO Transfer Rate (bps) UART 115200 57600 38400 91FW27-20 19200 9600 2007-11-02 91FW27-21 19176 −0.13 38352 ⎯ 39063 38400 38400 39063 0 ⎯ 57600 ⎯ ⎯ ⎯ ⎯ ⎯ 0 ⎯ ⎯ 57600 0 ⎯ 57600 ⎯ 0 115200 ⎯ ⎯ ⎯ frequencies outside of the supported range. The range of clock frequencies that are detected as each reference frequency. It may not be possible to perform Single Boot operations at clock ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ 0 ⎯ ⎯ ⎯ ⎯ (%) ⎯ ⎯ ⎯ 115200 ⎯ ⎯ ⎯ 57600 ⎯ ⎯ ⎯ ⎯ ⎯ ⎯ To program the flash memory using Single Boot mode, one of the reference frequencies must be selected as a high-speed clock. −0.13 ⎯ +1.73 0 0 +1.73 ⎯ ⎯ ⎯ ⎯ 0 0 38400 38400 ⎯ ⎯ ⎯ (bps) ⎯ (%) ⎯ (bps) 57600 oscillation frequency error must be within ±2% in total. Note: To automatically detect the reference frequency (microcontroller clock frequency), the transfer baud rate error of the flash memory programming controller and the Supported Range: ⎯ ⎯ 0 −0.13 +1.73 0 0 19531 +1.73 19200 19200 +1.73 0 +0.16 0 0 0 +1.73 ⎯ (%) 39063 38400 The frequency of the high-speed oscillation circuit that can be used in Single Boot mode. 9588 26.50∼27.57 27 Reference frequency: 9600 25.29∼26.32 25.8048 25 9766 0 24.09∼25.06 9600 24.5760 0 19531 +1.73 9600 19200 0 21.68∼22.56 19231 +0.16 22.1184 9615 15.66∼16.29 16 19200 19200 19200 0 9766 9600 14.46∼15.04 14.7456 0 19.27∼20.05 9600 12.05∼12.53 12.2880 0 20 9600 10.84∼11.28 11.0592 +1.73 19531 +1.73 9600 9766 9.64∼10.02 10 ⎯ ⎯ ⎯ +0.16 18.07∼18.80 9615 7.83∼8.14 8 (bps) (%) (bps) 19200 Error (%) 18.4320 Baud Rate (bps) Supported Range (MHz) 9600 Reference Frequency (MHz) Reference Baud Rate (bps) TMP91FW27 Table 3.2.6 Correspondence between Operating Frequency and Baud Rate in Single Boot Mode 2007-11-02 TMP91FW27 3.2.4.6 Data Transfer Formats Table 3.2.7 to Table 3.2.13 show the operation command data and the data transfer format for each operation mode. 10H 1H Table 3.2.7 Operation Command Data Operation Command Data 10H 20H 30H 40H 60H Operation Mode RAM Transfer Flash Memory SUM Product Information Read Flash Memory Chip Erase Flash Memory Protect Set 91FW27-22 2007-11-02 TMP91FW27 Table 3.2.8 Transfer Format of Single Boot Program [RAM Transfer] Transfer Byte Number Boot ROM 1st byte Transfer Data from Controller to Device Baud rate setting UART Operation command data Note 4: Transfer Data from Device to Controller ⎯ ACK response to baud rate setting Normal (baud rate OK) ・UART 86H (If the desired baud rate cannot be set, operation is terminated.) (10H) ⎯ ACK response to operation command (Note 2) Normal 10H Error x1H Protection applied (Note 4) x6H Communications error x8H ⎯ 5th byte to 16th byte Password data (12 bytes) 17th byte CHECKSUM value for 5th to 16th bytes (02FEF4H to 02FEFFH) ⎯ 18th byte ⎯ ACK response to CHECKSUM value (Note 2) Normal 10H Error 11H Communications error 18H 19th byte RAM storage start address 31 to 24 (Note 3) ⎯ 20th byte RAM storage start address 23 to 16 (Note 3) ⎯ 21st byte RAM storage start address 15 to 8 (Note 3) ⎯ 22nd byte RAM storage start address 7 to 0 (Note 3) ⎯ 23rd byte RAM storage byte count 15 to 8 (Note 3) ⎯ 24th byte RAM storage byte count 7 to 0 (Note 3) ⎯ 25th byte CHECKSUM value for 19th to 24th bytes (Note 3) ⎯ ⎯ 26th byte Note 1: Note 2: Note 3: Desired baud rate (Note 1) ⎯ 4th byte RAM 86H ⎯ 2nd byte 3rd byte Baud Rate ACK response to CHECKSUM value (Note 2) Normal 10H Error 11H Communications error 18H ⎯ 27th byte to m’th byte RAM storage data (m+1)th byte CHECKSUM value for 27th to m’th bytes (m+2)th byte ⎯ (m+3)th byte ⎯ ⎯ ACK response to CHECKSUM value (Note 2) Normal 10H Error 11H Communications error 18H Jump to RAM storage start address For the desired baud rate setting, see Table 3.2.6. After sending an error response, the device waits for operation command data (3rd byte). The data to be transferred in the 19th to 25th bytes should be programmed within the RAM address range of 001000H to 003DFFH (11.5Kbytes). When read protection or write protection is applied, the device aborts the received operation command and waits for the next operation command data (3rd byte). 91FW27-23 2007-11-02 TMP91FW27 Table 3.2.9 Transfer Format of Single Boot Program [Flash Memory SUM] Transfer Byte Number Boot ROM 1st byte Transfer Data from Controller to Device Baud Rate Transfer Data from Device to Controller ⎯ Desired Baud rate setting UART 86H baud rate (Note1) 2nd byte ⎯ ACK response to baud rate setting Normal (baud rate OK) ・UART 86H (If the desired baud rate cannot be set, operation is terminated.) 3rd byte Note 1: Note 2: Operation command data ⎯ (20H) 4th byte ⎯ 5th byte ⎯ SUM (upper) 6th byte ⎯ SUM (lower) 7th byte ⎯ CHECKSUM value for 5th and 6th bytes 8th byte (Wait for the next operation command data) ACK response to operation command (Note 2) Normal 20H Error x1H x8H Communications error ⎯ For the desired baud rate setting, see Table 3.2.6. After sending an error response, the device waits for operation command data (3rd byte). 91FW27-24 2007-11-02 TMP91FW27 Table 3.2.10 Transfer Format of Single Boot Program [Product Information Read] (1/2) Transfer Byte Number Boot ROM 1st byte Transfer Data from Controller to Device Baud Rate Baud rate setting Desired UART 86H Transfer Data from Device to Controller ⎯ baud rate (Note 1) 2nd byte 3rd byte ⎯ Operation command data ACK response to baud rate setting Normal (baud rate OK) ・UART 86H (If the desired baud rate cannot be set, operation is terminated.) (30H) ⎯ 4th byte ⎯ ACK response to operation command (Note 2) Normal 30H Error x1H Communications error x8H 5th byte ⎯ Flash memory data (address 02FEF0H) 6th byte ⎯ Flash memory data (address 02FEF1H) 7th byte ⎯ Flash memory data (address 02FEF2H) 8th byte ⎯ Flash memory data (address 02FEF3H) 9th byte to 20th byte ⎯ Part number (ASCII code, 12 bytes) ‘TMP91FW27_ _ _ ’ (from 9th byte) 21st byte to 24th byte ⎯ Password comparison start address (4 bytes) F4H, FEH, 02H, 00H (from 21st byte) 25th byte to 28th byte ⎯ RAM start address (4 bytes) 00H, 10H, 00H, 00H (from 25th byte) 29th byte to 32nd byte ⎯ RAM (user area) end address (4 bytes) FFH, 3DH, 00H, 00H (from 29th byte) 33rd byte to 36th byte ⎯ RAM end address (4 bytes) FFH, 3FH, 00H, 00H (from 33rd byte) 37th byte to 40th byte ⎯ Dummy data (4 bytes) 00H,00H,00H,00H (from 37th byte) 41st byte to 44th byte ⎯ Dummy data (4 bytes) 00H, 00H, 00H, 00H (from 41st byte) 45th byte to 46th byte ⎯ FUSE information (2 bytes from 45th byte) Read protection/Write protection 1) Applied/Applied : 00H, 00H 2) Not applied/Applied : 01H, 00H 3) Applied/Not applied : 02H, 00H 4) Not applied/Not applied : 03H, 00H 47th byte to 50th byte ⎯ Flash memory start address (4 bytes) 00H, 00H, 01H, 00H (from 47th byte) 51st byte to 54th byte ⎯ Flash memory end address (4 bytes) FFH, FFH, 02H, 00H (from 51st byte) 55th byte to 56th byte ⎯ Number of sectors in flash memory (2 bytes) 20H, 00H (from 55th byte) 57th byte to 60th byte ⎯ Start address of flash memory sectors of the same size (4 bytes) 00H, 00H, 01H, 00H (from 57th byte) 91FW27-25 2007-11-02 TMP91FW27 Table 3.2.11 Transfer Format of Single Boot Program [Product Information Read] (2/2) Transfer Byte Number Boot ROM 61st byte Transfer Data from Controller to Device ⎯ Transfer Data from Device to Controller Size (in half words) of flash memory sectors of the same size (4 bytes) to 00H, 08H, 00H, 00H (from 61st byte) 64th byte 65th byte Baud Rate ⎯ Number of flash memory sectors of the same size (1 byte) 20H Note 1: Note 2: 66th byte ⎯ 67th byte (Wait for the next operation command data) CHECKSUM value for 5th to 65th bytes ⎯ For the desired baud rate setting, see Table 3.2.6. After sending an error response, the device waits for operation command data (3rd byte). 91FW27-26 2007-11-02 TMP91FW27 Table 3.2.12 Transfer Format of Single Boot Program [Flash Memory Chip Erase] Transfer Byte Number Boot ROM 1st byte Transfer Data from Controller to Device Baud rate setting Baud Rate Transfer Data from Device to Controller ⎯ Desired UART 86H baud rate (Note 1) 2nd byte 3rd byte 4th byte 5th byte ⎯ Operation command data ACK response to baud rate setting Normal (baud rate OK) ・UART 86H (If the desired baud rate cannot be set, operation is terminated.) Erase Enable command data ⎯ (40H) ⎯ ACK response to operation command (Note2) Normal 40H Error x1H Communications error x8H ⎯ (54H) 6th byte ⎯ ACK response to operation command (Note 2) Normal 54H Error x1H Communications error x8H 7th byte ⎯ ACK response to Erase command Normal Error 4FH 4CH ACK response Normal Error 5DH 60H 8th byte 9th byte ⎯ (Wait for the next operation command data) ⎯ Note 1: For the desired baud rate setting, see Table 3.2.6. Note 2: After sending an error response, the device waits for operation command data (3rd byte). 91FW27-27 2007-11-02 TMP91FW27 Table 3.2.13 Transfer Format of Single Boot Program [Flash Memory Protect Set] Transfer Byte Number Boot ROM 1st byte Transfer Data from Controller to Device Baud rate setting Baud Rate Transfer Data from Device to Controller ⎯ Desired UART 86H baud rate (Note 1) 2nd byte ⎯ ACK response to baud rate setting Normal (baud rate OK) ・UART 86H (If the desired baud rate cannot be set, operation is terminated.) 3rd byte 4th byte ⎯ (60H) ⎯ ACK response to operation command (Note2) Normal 60H Error x1H Communications error x8H ⎯ 5th byte to 16th byte Password data (12 bytes) 17th byte CHECKSUM value for 5th to 16th bytes (02FEF4H to 02FEFFH) ⎯ 18th byte ⎯ ACK response to checksum value (Note 2) Normal 60H Error 61H Communications error 68H 19th byte ⎯ ACK response to Protect Set command Normal 6FH Error 6CH 20th byte ⎯ ACK response Normal Error 21st byte Note 1: Note 2: Operation command data (Wait for the next operation command data) 31H 34H ⎯ For the desired baud rate setting, see Table 3.2.6. After sending an error response, the device waits for operation command data (3rd byte). 91FW27-28 2007-11-02 TMP91FW27 3.2.4.7 Boot Program When the device starts up in Single Boot mode, the boot program is activated. The following explains the commands that are used in the boot program to communicate with the controller when the device starts up in Single Boot mode. Use this information for creating a controller for using Single Boot mode or for building a user boot environment. 1. RAM Transfer command In RAM transfer, data is transferred from the controller and stored in the device’s internal RAM. When the transfer completes normally, the boot program will start running the transferred user program. Up to 11.5 Kbytes of data can be transferred as a user program. (This limit is implemented in the boot program to protect the stack pointer area.) The user program starts executing from the RAM storage start address. This RAM transfer function enables a user-created program/erase routine to be executed, allowing the user to implement their own on-board programming method. To perform on-board programming with a user program, the flash memory command sequences (see section 3.2.6) must be used. After the RAM Transfer command has been completed, the entire internal RAM area can be used. If read protection or write protection is applied on the device or a password error occurs, this command will not be executed. 12H 2. Flash Memory SUM command This command calculates the SUM of 128 Kbytes of data in the flash memory and returns the result. There is no operation command available to the boot program for reading data from the entire area of the flash memory. Instead, this Flash Memory SUM command can be used. Reading the SUM value enables revision management of the application program. 3. Product Information Read command This command returns the information about the device including its part number and memory details stored in the flash memory at addresses 02FEF0H to 02FEF3H. This command can also be used for revision management of the application program. 4. Flash Memory Chip Erase command This command erases all the sectors in the flash memory. If read protection or write protection is applied on the device, all the sectors in the flash memory are erased and the read protection or write protection is cleared. Since this command is also used to restore the operation of the boot program when the password is forgotten, it does not include password verification. 5. Flash Memory Protect Set command This command sets both read protection and write protection on the device. However, if a password error occurs, this command will not be executed. When read protection is set, the flash memory cannot be read in Programmer mode. When write protection is set, the flash memory cannot be written in Programmer mode. 91FW27-29 2007-11-02 TMP91FW27 3.2.4.8 RAM Transfer Command (See Table 3.2.8) 13H 1. From the controller to the device The data in the 1st byte is used to determine the baud rate. The 1st byte is transferred with receive operation disabled (SC1MOD0<RXE> = 0). (The baud rate is determined using an internal timer.) • To communicate in UART mode Send the value 86H from the controller to the target board using UART settings at the desired baud rate. If the serial operation mode is determined as UART, the device checks to see whether or not the desired baud rate can be set. If the device determines that the desired baud rate cannot be set, operation is terminated and no communications can be established. 2. From the device to the controller The data in the 2nd byte is the ACK response returned by the device for the serial operation mode setting data sent in the 1st byte. If the data in the 1st byte is found to signify UART and the desired baud rate can be set, the device returns 86H. • Baud rate determination The device determines whether or not the desired baud rate can be set. If it is found that the baud rate can be set, the boot program rewrites the BR1CR and BR1ADD values and returns 86H. If it is found that the desired baud rate cannot be set, operation is terminated and no data is returned. The controller sets a time-out time (5 seconds) after it has finished sending the 1st byte. If the controller does not receive the response (86H) normally within the time-out time, it should be considered that the device is unable to communicate. Receive operation is enabled (SC1MOD0<RXE> = 1) before 86H is written to the transmission buffer. 3. From the controller to the device The data in the 3rd byte is operation command data. In this case, the RAM Transfer command data (10H) is sent from the controller to the device. 4. From the device to the controller The data in the 4th byte is the ACK response to the operation command data in the 3rd byte. First, the device checks to see if the received data in the 3rd byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined (They are the upper four bits of the immediately preceding operation command data). Next, if the data received in the 3rd byte corresponds to one of the operation commands given in Table 3.2.7, the device echoes back the received data (ACK response for normal reception). In the case of the RAM Transfer command, if read or write protection is not applied, 10H is echoed back and then execution branches to the RAM transfer processing routine. If protection is applied, the device returns the corresponding ACK response data (bit 2/1) x6H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) After branching to the RAM transfer processing routine, the device checks the data in the password area. For details, see 3.2.4.15 “Password”. 14H 15H 91FW27-30 16H 2007-11-02 TMP91FW27 If the data in the 3rd byte does not correspond to any operation command, the device returns the ACK response data for operation command error (bit0) x1H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 5. From the controller to the device The 5th to 16th bytes contain password data (12 bytes). The data in the 5th to 16th bytes is verified against the data at addresses 02FEF4H to 02FEFFH in the flash memory, respectively. 6. From the controller to the device The 17th byte contains CHECKSUM data. The CHECKSUM data sent by the controller is the two’s complement of the lower 8-bit value obtained by summing the data in the 5th to 16th bytes by unsigned 8-bit addition (ignoring any overflow). For details on CHECKSUM, see 3.2.4.17 “How to Calculate CHECKSUM.” 17H 7. 18H From the device to the controller The data in the 18th byte is the ACK response data to the 5th to 17th bytes (ACK response to the CHECKSUM value). The device first checks to see whether the data received in the 5th to 17th bytes contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) 18H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are the upper four bits of the immediately preceding operation command data, so the value of these bits is “1”. Next, the device checks the CHECKSUM data in the 17th byte. This check is made to see if the lower 8-bit value obtained by summing the data in the 5th to 17th bytes by unsigned 8-bit addition (ignoring any overflow) is 00H. If the value is not 00H, the device returns the ACK response data for CHECKSUM error (bit 0) 11H and waits for the next operation command data (3rd byte). Finally, the device examines the result of password verification. If all the data in the 5th to 16th bytes is not verified correctly, the device returns the ACK response data for password error (bit 0) 11H and waits for the next operation command data (3rd byte). If no error is found in all the above checks, the device returns the ACK response data for normal reception 10 H. 8. From the controller to the device The data in the 19th to 22nd bytes indicates the RAM start address for storing block transfer data. The 19th byte corresponds to address bits 31 to 24, the 20th byte to address bits 23 to 16, the 21st byte to address bits 15 to 8, and the 22nd byte to address bits 7 to 0. 9. From the controller to the device The data in the 23rd and 24th bytes indicates the number of bytes to be transferred. The 23rd byte corresponds to bits 15 to 8 of the transfer byte count and the 24th byte corresponds to bits 7 to 0. 91FW27-31 2007-11-02 TMP91FW27 10. From the controller to the device The data in the 25th byte is CHECKSUM data. The CHECKSUM data sent by the controller is the two’s complement of the lower 8-bit value obtained by summing the data in the 19th to 24th bytes by unsigned 8-bit addition (ignoring any overflow). For details on CHECKSUM, see 3.2.4.17 “How to Calculate CHECKSUM .” 19H 20H Note: The data in the 19th to 25th bytes should be placed within addresses 001000H to 003DFFH (11.5 Kbytes) in the internal RAM. 11. From the device to the controller The data in the 26th byte is the ACK response data to the data in the 19th to 25th bytes (ACK response to the CHECKSUM value). The device first checks to see whether the data received in the 19th to 25th bytes contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) 18H and waits for the next operation command (3rd byte). The upper four bits of the ACK response data are the upper four bits of the immediately preceding operation command data, so the value of these bits is “1”. Next, the device checks the CHECKSUM data in the 25th byte. This check is made to see if the lower 8-bit value obtained by summing the data in the 19th to 25th bytes by unsigned 8-bit addition (ignoring any overflow) is 00H. If the value is not 00H, the device returns the ACK response data for CHECKSUM error (bit 0) 11H and waits for the next operation command data (3rd byte). 12. From the controller to the device The data in the 27th to m’th bytes is the data to be stored in the RAM. This data is written to the RAM starting at the address specified in the 19th to 22nd bytes. The number of bytes to be written is specified in the 23rd and 24th bytes. 13. From the controller to the device The data in the (m+1)th byte is CHECKSUM data. The CHECKSUM data sent by the controller is the two’s complement of the lower 8-bit value obtained by summing the data in the 27th to m’th bytes by unsigned 8-bit addition (ignoring any overflow). For details on CHECKSUM, see 3.2.4.17 ”How to Calculate CHECKSUM.” 21H 91FW27-32 2H 2007-11-02 TMP91FW27 14. From the device to the controller The data in the (m + 2) th byte is the ACK response data to the 27th to (m+1)th bytes (ACK response to the CHECKSUM value). The device first checks to see whether the data in the 27th to (m+1)th byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) 18H and waits for the next operation command (3rd byte). The upper four bits of the ACK response are the upper four bits of the immediately preceding operation command data, so the value of these bits is “1”. Next, the device checks the CHECKSUM data in the (m+1)th byte. This check is made to see if the lower 8-bit value obtained by summing the data in the 27th to (m+1)th bytes by unsigned 8-bit addition (ignoring any overflow) is 00H. If the value is not 00H, the device returns the ACK response data for CHECKSUM error (bit 0) 11H and waits for the next operation command data (3rd byte). If no error is found in all the above checks, the device returns the ACK response data for normal reception 10H. 15. From the device to the controller If the ACK response data in the (m + 2)th byte is 10H (normal reception), the boot program then jumps to the RAM start address specified in the 19th to 22nd bytes. 91FW27-33 2007-11-02 TMP91FW27 3.2.4.9 Flash Memory SUM command (See Table 3.2.9) 23H 1. The data in the 1st and 2nd bytes is the same as in the case of the RAM Transfer command. 2. From the controller to the device The data in the 3rd byte is operation command data. The Flash Memory SUM command data (20H) is sent here. 3. From the device to the controller The data in the 4th byte is the ACK response data to the operation command data in the 3rd byte. The device first checks to see if the data in the 3rd byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) Then, if the data in the 3rd byte corresponds to one of the operation command values given in Table 3.2.7, the device echoes back the received data (ACK response for normal reception). In this case, 20H is echoed back and execution then branches to the flash memory SUM processing routine. If the data in the 3rd byte does not correspond to any operation command, the device returns the ACK response data for operation command error (bit 0) x1H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 24H 4. From the device to the controller The data in the 5th and 6th bytes is the upper and lower data of the SUM value, respectively. For details on SUM, see 3.2.4.16 “How to Calculate SUM .” 25H 5. 26H From the device to the controller The data in the 7th byte is CHECKSUM data. This is the two’s complement of the lower 8-bit value obtained by summing the data in the 5th and 6th bytes by unsigned 8-bit addition (ignoring any overflow). 6. From the controller to the device The data in the 8th byte is the next operation command data. 91FW27-34 2007-11-02 TMP91FW27 3.2.4.10 Product Information Read command (See Table 3.2.10 and Table 3.2.11) 27H 28H 1. The data in the 1st and 2nd bytes is the same as in the case of the RAM Transfer command. 2. From the controller to the device The data in the 3rd byte is operation command data. The Product Information Read command data (30H) is sent here. 3. From the device to the controller The data in the 4th byte is the ACK response data to the operation command data in the 3rd byte. The device first checks to see if the data in the 3rd byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) Then, if the data in the 3rd byte corresponds to one of the operation command values given in Table 3.2.7, the device echoes back the received data (ACK response for normal reception). In this case, 30H is returned and execution then branches to the product information read processing routine. If the data in the 3rd byte does not correspond to any operation command, the device returns the ACK response data for operation command error (bit 0) x1H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 29H 4. From the device to the controller The data in the 5th to 8th bytes is the data stored at addresses 02FEF0H to 02FEF3H in the flash memory. By writing the ID information of software at these addresses, the version of the software can be managed. (For example, 0002H can indicate that the software is now in version 2.) 5. From the device to the controller The data in the 9th to 20th bytes denotes the part number of the device. ‘TMP91FW27_ _ _’ is sent in ASCII code starting from the 9th byte. Note: An underscore (‘_’) indicates a space. 6. From the device to the controller The data in the 21st to 24th bytes is the password comparison start address. F4H, FEH, 02H and 00H are sent starting from the 21st byte. 7. From the device to the controller The data in the 25th to 28th bytes is the RAM start address. 00H, 10H, 00H and 00H are sent starting from the 25th byte. 8. From the device to the controller The data in the 29th to 32nd bytes is the RAM (user area) end address. FFH, 3DH, 00H and 00H are sent starting from the 29th byte. 91FW27-35 2007-11-02 TMP91FW27 9. From the device to the controller The data in the 33rd to 36th bytes is the RAM end address. FFH, 3FH, 00H and 00H are sent starting from the 33rd byte. 10. From the device to the controller The data in the 37th to 44th bytes is dummy data. 11. From the device to the controller The data in the 45th and 46th bytes contains the protection status and sector division information of the flash memory. ● Bit 0 indicates the read protection status. •0: Read protection is applied. •1: Read protection is not applied. ● Bit 1 indicates the write protection status. •0: Write protection is applied. •1: Write protection is not applied. ● Bit 2 indicates whether or not the flash memory is divided into sectors. •0: The flash memory is divided into sectors. •1: The flash memory is not divided into sectors. ● Bits 3 to 15 are sent as “0”. 12. From the device to the controller The data in the 47th to 50th bytes is the flash memory start address. 00H, 00H, 01H and 00H are sent starting from the 47th byte. 13. From the device to the controller The data in the 51st to 54th bytes is the flash memory end address. FFH, FFH, 02H and 00H are sent starting from the 51st byte. 14. From the device to the controller The data in the 55th and 56th bytes indicates the number of sectors in the flash memory. 20H and 00H are sent starting from the 55th byte. 15. From the device to the controller The data in the 57th to 65th bytes contains sector information of the flash memory. Sector information is comprised of the start address (starting from the flash memory start address), sector size and number of consecutive sectors of the same size. Note that the sector size is represented in word units. The data in the 57th to 65th bytes indicates 4 Kbytes of sectors (sector 0 to sector 31). For the data to be transferred, see Table 3.2.10 and Table 3.2.11. 30H 31H 16. From the device to the controller The data in the 66th byte is CHECKSUM data. This is the two’s complement of the lower 8-bit value obtained by summing the data in the 5th to 65th bytes by unsigned 8-bit addition (ignoring any overflow). 17. From the controller to the device The data in the 67th byte is the next operation command data. 91FW27-36 2007-11-02 TMP91FW27 3.2.4.11 Flash Memory Chip Erase Command (See Table 3.2.12) 32H 1. The data in the 1st and 2nd bytes is the same as in the case of the RAM Transfer command. 2. From the controller to the device The data in the 3rd byte is operation command data. The Flash Memory Chip Erase command data (40H) is sent here. 3. From the device to the controller The data in the 4th byte is the ACK response data to the operation command data in the 3rd byte. The device first checks to see if the data in the 3rd byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) Then, if the data in the 3rd byte corresponds to one of the operation command values given in Table 3.2.7, the device echoes back the received data (ACK response for normal reception). In this case, 40H is echoed back. If the data in the 3rd byte does not correspond to any operation command, the device returns the ACK response data for operation command error (bit 0) x1H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 3H 4. From the controller to the device The data in the 5th byte is Erase Enable command data (54H). 5. From the device to the controller The data in the 6th byte is the ACK response data to the Erase Enable command data in the 5th byte. The device first checks to see if the data in the 5th byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined (They are the upper four bits of the immediately preceding operation command data.) Then, if the data in the 5th byte corresponds to the Erase Enable command data, the device echoes back the received data (ACK response for normal reception). In this case, 54H is echoed back and execution jumps to the flash memory chip erase processing routine. If the data in the 5th byte does not correspond to the Erase Enable command data, the device returns the ACK response data for operation command error (bit 0 ) x1H and waits for the next operation command (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 91FW27-37 2007-11-02 TMP91FW27 6. From the device to the controller The data in the 7th byte indicates whether or not the erase operation has completed successfully. If the erase operation has completed successfully, the device returns the end code (4FH). If an erase error has occurred, the device returns the error code (4CH). 7. From the device to the controller The data in the 8th byte is ACK response data. If the erase operation has completed successfully, the device returns the ACK response for erase completion (5DH). If an erase error has occurred, the device returns the ACK response for erase error (60H). 8. From the controller to the device The data in the 9th byte is the next operation command data. 91FW27-38 2007-11-02 TMP91FW27 3.2.4.12 Flash Memory Protect Set command (See Table 3.2.13) 34H 1. The data in the 1st and 2nd bytes is the same as in the case of the RAM Transfer command. 2. From the controller to the device The data in the 3rd byte is operation command data. The Flash Memory Protect Set command data (60H) is sent here. 3. From the device to the controller The data in the 4th byte is the ACK response data to the operation command data in the 3rd byte. The device first checks to see if the data in the 3rd byte contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) x8H and waits for the next operation command data. The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) Then, if the data in the 3rd byte corresponds to one of the operation command data values given in Table 3.2.7, the device echoes back the received data (ACK response for normal reception). In this case, 60H is echoed back and execution branches to the flash memory protect set processing routine. After branching to this routine, the data in the password area is checked. For details, see 3.2.4.15 ”Password.” If the data in the 3rd byte does not correspond to any operation command, the device returns the ACK response data for operation command error (bit 0) x1H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are undefined. (They are the upper four bits of the immediately preceding operation command data.) 35H 36H 4. 37H From the controller to the device The data in the 5th to 16th bytes is password data (12 bytes). The data in the 5th byte is verified against the data at address 02FEF4H in the flash memory and the data in the 6th byte against the data at address 02FEF5H. In this manner, the received data is verified consecutively against the data at the specified address in the flash memory. The data in the 16th byte is verified against the data at address 02FEFFH in the flash memory. 5. From the controller to the device The data in the 17th byte is CHECKSUM data. The CHECKSUM data sent by the controller is the two’s complement of the lower 8-bit value obtained by summing the data in 5th to 16th bytes by unsigned 8-bit addition (ignoring any overflow). For details on CHECKSUM, see 3.2.4.17 ”How to Calculate CHECKSUM.” 38H 91FW27-39 39H 2007-11-02 TMP91FW27 6. From the device to the controller The data in the 18th byte is the ACK response data to the data in the 5th to 17th bytes (ACK response to the CHECKSUM value). The device first checks to see whether the data in the 5th to 17th bytes contains any error. If a receive error is found, the device returns the ACK response data for communications error (bit 3) 68H and waits for the next operation command data (3rd byte). The upper four bits of the ACK response data are the upper four bits of the immediately preceding operation command data, so the value of these bits is “6”. Then, the device checks the CHECKSUM data in the 17th byte. This check is made to see if the lower 8 bits of the value obtained by summing the data in the 5th to 17th bytes by unsigned 8-bit addition (ignoring any overflow) is 00H. If the value is not 00H, the device returns the ACK response data for CHECKSUM error (bit 0) 61H and waits for the next operation command data (3rd byte). Finally, the device examines the result of password verification. If all the data in the 5th to 16th bytes is not verified correctly, the device returns the ACK response data for password error (bit 0) 61H and waits for the next operation command data (3rd byte). If no error is found in the above checks, the device returns the ACK response data for normal reception 60H. 7. From the device to the controller The data in the 19th byte indicates whether or not the protect set operation has completed successfully. If the operation has completed successfully, the device returns the end code (6FH). If an error has occurred, the device returns the error code (6CH). 8. From the device to the controller The data in the 20th byte is ACK response data. If the protect set operation has completed successfully, the device returns the ACK response data for normal completion (31H). If an error has occurred, the device returns the ACK response data for error (34H). 9. From the device to the controller The data in the 21st byte is the next operation command data. 91FW27-40 2007-11-02 TMP91FW27 3.2.4.13 ACK Response Data The boot program notifies the controller of its processing status by sending various response data. Table 3.2.14 to Table 3.2.19 show the ACK response data returned for each type of received data. The upper four bits of ACK response data are a direct reflection of the upper four bits of the immediately preceding operation command data. Bit 3 indicates a receive error and bit 0 indicates an operation command error, CHECKSUM error or password error. 40H 41H Table 3.2.14 ACK Response Data to Serial Operation Mode Setting Data Transfer Data 86H Meaning The device can communicate in UART mode. (Note) Note: If the desired baud rate cannot be set, the device returns no data and terminates operation. Table 3.2.15 ACK Response Data to Operation Command Data Transfer Data x8H (Note) x6H (Note) x1H (Note) 10H 20H 30H 40H 60H Meaning A receive error occurred in the operation command data. Terminated receive operation due to protection setting. Undefined operation command data was received normally. Received the RAM Transfer command. Received the Flash Memory SUM command. Received the Product Information Read command. Received the Flash Memory Chip Erase command. Received the Flash Memory Protect Set command. Note: The upper four bits are a direct reflection of the upper four bits of the immediately preceding operation command data. Table 3.2.16 ACK Response data to CHECKSUM Data for RAM Transfer Command Transfer Data 18H 11H 10H Meaning A receive error occurred. A CHECKSUM error or password error occurred. Received the correct CHECKSUM value. Table 3.2.17 ACK Response Data to Flash Memory Chip Erase Operation Transfer Data 54H 4FH 4CH 5DH (Note) 60H (Note) Meaning Received the Erase Enable command. Completed erase operation. An erase error occurred. Reconfirmation of erase operation Reconfirmation of erase error Note: These codes are returned for reconfirmation of communications. 91FW27-41 2007-11-02 TMP91FW27 Table 3.2.18 ACK Response Data to CHECKSUM Data for Flash Memory Protect Set Command Transfer Data 68H 61H 60H Meaning A receive error occurred. A CHECKSUM or password error occurred. Received the correct CHECKSUM value. Table 3.2.19 ACK Response Data to Flash Memory Protect Set Operation Transfer Data 6FH 6CH 31H (Note) 34H (Note) Meaning Completed the protect (read/write) set operation. A protect (read/write) set error occurred. Reconfirmation of protect (read/write) set operation Reconfirmation of protect (read/write) set error Note: These codes are returned for reconfirmation of communications. 91FW27-42 2007-11-02 TMP91FW27 3.2.4.14 Determining Serial Operation Mode To communicate in UART mode, the controller should transmit the data value 86H as the first byte at the desired baud rate. Figure 3.2.7 shows the waveform of this operation. 42H Start bit 0 Point A bit 1 bit 2 Point B bit 3 bit 4 bit 5 Point C bit 6 bit 7 Stop Point D UART (86H) tAB tAC tAD Figure 3.2.7 Data for Determining Serial Operation Mode The boot program receives the first byte (86H) after reset release not as serial communications data. Instead, the boot program uses the first byte to determine the baud rate. The baud rate is determined by the output periods of tAB, tAC and tAD as shown in Figure 3.2.7 using the procedure shown in Figure 3.2.8. 43H 4H The CPU monitors the level of the receive pin. Upon detecting a level change, the CPU captures the timer value to determine the baud rate. 91FW27-43 2007-11-02 TMP91FW27 Start Initialize 16-bit timer B0 (φT1 = 8/fc, clear counter) Start the prescaler Point A Receive pin changed from High to Low? YES Start counting up of 16-bit timer B0 Point B Receive pin changed from Low to High? YES Capture timer value (tAB) by software Point C Receive pin changed from High to Low? YES Capture timer value (tAC) by software Point D Receive pin changed from Low to High? YES Capture timer value (tAD) by software Stop 16-bit timer B0 tAC ≥ tAD? YES Back up tAD value Stop operation (Endless loop) End Figure 3.2.8 Flowchart for Serial Operation Mode Receive Operation 91FW27-44 2007-11-02 TMP91FW27 3.2.4.15 Password When the RAM Transfer command (10H) or the Flash Memory Protect Set command (60H) is received as operation command data, password verification is performed. First, the device echoes back the operation command data (10H to 60H) and checks the data (12 bytes) in the password area (addresses 02FEF4H to 02FEFFH). Then, the device verifies the password data received in the 5th to 16th bytes against the data in the password area as shown in Table 3.2.20. 45H Unless all the 12 bytes are verified correctly, a password error will occur. A password error will also occur if all the 12 bytes of password data contain the same value. Only exception is when all the 12 bytes are “FFH” and verified correctly and the reset vector area (addresses 02FF00H to 02FF02H) is all “FFH”. In this case, a blank device will be assumed and no password error will occur. If a password error has occurred, the device returns the ACK response data for password error in the 18th byte. Table 3.2.20 Password Verification Table Receive data 5th byte 6th byte 7th byte 8th byte 9th byte 10th byte 11th byte 12th byte 13th byte 14th byte 15th byte 16th byte Data to be verified against Data at address 02FEF4H Data at address 02FEF5H Data at address 02FEF6H Data at address 02FEF7H Data at address 02FEF8H Data at address 02FEF9H Data at address 02FEFAH Data at address 02FEFBH Data at address 02FEFCH Data at address 02FEFDH Data at address02FEFEH Data at address 02FEFFH Example of data that cannot be specified as a password For blank products (Note) ・The password of a blank product must be all “FFH” (FFH, FFH, FFH, FFH, FFH, FFH, FFH, FFH, FFH, FFH, FFH, FFH). Note: A blank product is a product in which all the bytes in the password area (addresses 02FEF4H to 02FEFFH) and the reset vector area (addresses 02FF00H to 02FF02H) are “FFH”. For programmed products ・The same 12 consecutive bytes cannot be specified as a password. The table below shows password error examples. Programmed product Error example 1 Error example 2 Error example 3 1 2 3 4 5 6 7 8 9 10 11 12 Note FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH FFH 00H 5AH All ”FF” All ”00” All ”5A” 91FW27-45 2007-11-02 TMP91FW27 3.2.4.16 How to Calculate SUM SUM is calculated by summing the values of all data read from the flash memory by unsigned 8-bit addition and is returned as a word (16-bit) value. The resulting SUM value is sent to the controller in order of upper 8 bits and lower 8 bits. All the 128 Kbytes of data in the flash memory are included in the calculation of SUM. When the Flash Memory SUM command is executed, SUM is calculated in this way. Example: A1H When SUM is calculated from the four data entries shown to the left, the result is as follows: A1H + B2H + C3H + D4H = 02EAH SUM upper 8 bits: 02H SUM lower 8 bits: EAH B2H C3H D4H 3.2.4.17 Thus, the SUM value is sent to the controller in order of 02H and EAH. How to Calculate CHECKSUM CHECKSUM is calculated by taking the two’s complement of the lower 8-bit value obtained by summing the values of received data by unsigned 8-bit addition (ignoring any overflow). When the Flash Memory SUM command or the Product Information Read command is executed, CHECKSUM is calculated in this way. The controller should also use this CHECKSUM calculation method for sending CHECKSUM values. Example: Calculating CHECKSUM for the Flash Memory SUM command When the upper 8-bit data of SUM is E5H and the lower 8-bit data is F6H, CHECKSUM is calculated as shown below. First, the upper 8 bits and lower 8 bits of the SUM value are added by unsigned operation. E5H + F6H = 1DBH Then, the two’s complement of the lower 8 bits of this result is obtained as shown below. The resulting CHECKSUM value (25H) is sent to the controller. 0 − DBH = 25H 91FW27-46 2007-11-02 TMP91FW27 3.2.5 User Boot Mode (in Single Chip Mode) User Boot mode, which is a sub mode of Single Chip mode, enables a user-created flash memory program/erase routine to be used. To do so, the operation mode of Single Chip mode must be changed from Normal mode for executing a user application program to User Boot mode for programming/erasing the flash memory. For example, the reset processing routine of a user application program may include a routine for selecting Normal mode or User Boot mode upon entering Single Chip mode. Any mode-selecting condition may be set using the device’s I/O to suit the user system. To program/erase the flash memory in User Boot mode, a program/erase routine must be incorporated in the user application program in advance. Since the processor cannot read data from the internal flash memory while it is being programmed or erased, the program/erase routine must be executed from the outside of the flash memory. While the flash memory is being programmed/erased in User Boot mode, interrupts must be disabled. The pages that follow explain the procedure for programming the flash memory using two example cases. In one case the program/erase routine is stored in the internal flash memory (1-A); in the other the program/erase routine is transferred from an external source (1-B). 91FW27-47 2007-11-02 TMP91FW27 3.2.5.1 (1-A) Program/Erase Procedure Example 1 When the program/erase routine is stored in the internal flash memory (Step-1) Environment setup First, the condition (e.g. pin status) for entering User Boot mode must be set and the I/O bus for transferring data must be determined. Then, the device’s peripheral circuitry must be designed and a corresponding program must be written. Before mounting the device on the board, it is necessary to write the following four routines into one of the sectors in the flash memory. (a) Mode select routine : Selects Normal mode or User Boot mode. (b) Program/erase routine : Loads program/erase data from an external source and programs/erases the flash memory. (c) Copy routine 1 (d) Copy routine 2 : Copies routines (a) to (d) into the internal RAM or external memory. : Copies routines (a) to (d) from the internal RAM or external memory into the flash memory. Note: The above (d) is a routine for reconstructing the program/erase routine on the flash memory. If the entire flash memory is always programmed and the program/erase routine is included in the new user application program, this copy routine is not needed. New user application program (TMP91FW27) (I/O) Flash memory (Controller) Old user application program [Reset processing program] (a) Mode select routine (b) Program/erase routine RAM (c) Copy routine 1 (d) Copy routine 2 (Step-2) Entering User Boot mode (using the reset processing) After reset release, the reset processing program determines whether or not the device should enter User Boot mode. If the condition for entering User Boot mode is true, User Boot mode is entered to program/erase the flash memory. New user application program (TMP91FW27) (I/O) 0 → 1 RESET Flash memory (Controller) Old user application program [Reset processing program] (a) Mode select routine (b) Program/erase routine RAM Condition for entering User Boot mode (user-specified) (c) Copy routine 1 (d) Copy routine 2 91FW27-48 2007-11-02 TMP91FW27 (Step-3) Copying the program/erase routine After the device has entered User Boot mode, the copy routine 1 (c) copies the routines (a) to (d) into the internal RAM or external memory (The routines are copied into the internal RAM here.) New user application program (I/O) (TMP91FW27) Flash memory (Controller) Old user application program (a) Mode select routine [Reset processing program] (b) Program/erase routine (c) Copy routine 1 (a) Mode select routine (d) Copy routine 2 (b) Program/erase routine RAM (c) Copy routine 1 (d) Copy routine 2 (Step-4) Erasing the flash memory by the program/erase routine Control jumps to the program/erase routine in the RAM and the old user program area is erased (sector erase or chip erase). (In this case, the flash memory erase command is issued from the RAM.) Note: If data is erased on a sector basis and the routines (a) to (d) are left in the flash memory, only the program/erase routine (b) need be copied into the RAM. New user application program (TMP91FW27) (I/O) Flash memory (Controller) (a) Mode select routine (b)Program/erase routine (c) Copy routine 1 Erased (d) Copy routine 2 RAM 91FW27-49 2007-11-02 TMP91FW27 (Step-5) Restoring the user boot program in the flash memory The copy routine 2 (d) in the RAM copies the routines (a) to (d) into the flash memory. Note: If data is erased on a sector basis and the routines (a) to (d) are left in the flash memory, step 5 is not needed. New user application program (I/O) (TMP91FW27) (Controller) Flash memory (a) Mode select routine [Reset processing program] (a) Mode select routine (b) Program/erase routine (c) Copy routine 1 (d) Copy routine 2 (b) Program/erase routine RAM (c) Copy routine 1 (d) Copy routine 2 (Step-6) Writing the new user application program to the flash memory The program/erase routine in the RAM is executed to load the new user application program from the controller into the erased area of the flash memory. New user application program (TMP91FW27) (I/O) (Controller) Flash memory New user application program (a) Mode select routine [Reset processing program] (a) Mode select routine (b) Program/erase routine (c) Copy routine 1 (d) Copy routine 2 (b) Program/erase routine RAM (c) Copy routine 1 (d) Copy routine 2 91FW27-50 2007-11-02 TMP91FW27 (Step-7) Executing the new user application program The RESET input pin is driven Low (“0”) to reset the device. The mode setting condition is set for Normal mode. After reset release, the device will start executing the new user application program. (TMP91FW27) (I/O) 0 → 1 RESET Flash memory (Controller) New user application program Condition for entering Normal mode [Reset processing program (a) Mode select routine (b) Program/erase routine RAM (c) Copy routine 1 (d) Copy routine 2 91FW27-51 2007-11-02 TMP91FW27 3.2.5.2 (1-B) Program/Erase Procedure Example 2 In this example, only the boot program (minimum requirement) is stored in the flash memory and other necessary routines are supplied from the controller. (Step-1) Environment setup First, the condition (e.g. pin status) for entering User Boot mode must be set and the I/O bus for transferring data must be determined. Then, the device’s peripheral circuitry must be designed and a corresponding program must be written. Before mounting the device on the board, it is necessary to write the following two routines into one on the sectors in the flash memory. (a) Mode select routine : Selects Normal mode or User Boot mode. (b) Transfer routine : Loads the program/erase routine from an external source. The following routines are prepared on the controller. (c) Program/erase routine : Programs/erases the flash memory. (d) Copy routine 1 : Copies routines (a) and (b) into the internal RAM or external memory. (e) Copy routine 2 : Copies routines (a) and (b) from the internal RAM or external memory into the flash memory. New user application program (I/O) (c) Program/erase routine (TMP91FW27) (d) Copy routine 1 Flash memory (e) Copy routine 2 Old user application program (Controller) [Reset processing routine] (a) Mode select routine RAM (b) Transfer routine (Step-2) Entering User Boot mode (using the reset processing) The following explanation assumes that these routines are incorporated in the reset processing program. After reset release, the reset processing program first determines whether or not the device should enter User Boot mode. If the condition for entering User Boot mode is true, User Boot mode is entered to program/erase the flash memory. New user application program (I/O) (TMP91FW27) 0 → 1 RESET Flash memory Old user application program (d) Copy routine 1 (e) Copy routine 2 (Controller) [Reset processing routine] (a)Mode Select routine (c) Program/erase routine RAM Condition for entering User Boot mode (user-specified) (b)Transfer routine 91FW27-52 2007-11-02 TMP91FW27 (Step-3) Copying the program/erase routine to the internal RAM After the device has entered User Boot mode, the transfer routine (b) transfers the routines (c) to (e) from the controller to the internal RAM (or external memory). (The routines are copied into the internal RAM here.) New user application program (c) Program/erase routine (d) Copy routine 1 (TMP91FW27) (e) Copy routine 2 (I/O) (Controller) Flash memory Old user application program (c) Program/erase routine [Reset processing routine] (a) Mode select routine (d) Copy routine 1 (e) Copy routine 2 (b) Transfer routine RAM (Step-4) Executing the copy routine 1 in the internal RAM Control jumps to the internal RAM and the copy routine 1 (d) copies the routines (a) and (b) into the internal RAM. New user application program (c) Program/erase routine (TMP91FW27) (d) Copy routine 1 (I/O) (e) Copy routine 2 (Controller) Flash memory Old user application program (a)Mode select routine (b) Transfer routine (c) Program/erase routine [Reset processing routine] (a) Mode select routine (b) Transfer routine (d) Copy routine 1 (e) Copy routine 2 RAM 91FW27-53 2007-11-02 TMP91FW27 (Step-5) Erasing the flash memory by the program/erase routine The program/erase routine (c) erases the old user program area. New user application program (TMP91FW27) (c) Program/erase routine (I/O) (d) Copy routine 1 (e) Copy routine 2 (Controller) Flash memory (a)Mode select routine (b)Transfer routine (c) Program/erase routine Erased (d) Copy routine 1 (e) Copy routine 2 RAM (Step-6) Restoring the user boot program in the flash memory The copy routine (e) copies the routines (a) and (b) from the internal RAM into the flash memory. New user application program (c) Program/erase routine (d) Copy routine 1 (TMP91FW27) (I/O) (e) Copy routine 2 (Controller) Flash memory (a)Mode select routine (b) Transfer routine (c) Program/erase routine [Reset processing program] (a) Mode select routine (b) Transfer routine (d) Copy routine 1 (e) Copy routine 2 RAM 91FW27-54 2007-11-02 TMP91FW27 (Step-7) Writing the new user application program to the flash memory The program/erase routine (c) in the RAM is executed to load the new user application program from the controller into the erased area of the flash memory. New user application program (c) Program/erase routine (d) Copy routine 1 (I/O) (e) Copy routine 2 (TMP91FW27) Flash memory New user application program (Controller) (a)Mode select routine (b)Transfer routine (c) Program/erase routine [Reset processing program] (a) Mode select routine (d) Copy routine 1 (e) Copy routine 2 (b) Transfer routine RAM (Step-8) Executing the new user application program The RESET input pin is driven Low (“0”) to reset the device. The mode setting condition is set for Normal mode. After reset release, the device will start executing the new user application program. (TMP91FW27) (I/O) 0 → 1 RESET Flash memory (Controller) New user application program Condition for entering Normal mode [Reset processing program] (a)Mode select routine RAM (b) Transfer routine 91FW27-55 2007-11-02 TMP91FW27 3.2.6 Flash Memory Command Sequences The operation of the flash memory is comprised of six commands, as shown in Table 3.2.21. Addresses specified in each command sequence must be in an area where the flash memory is mapped. For details, see Table 3.2.3. 46H 47H Table 3.2.21 Command Sequences 1st Bus Write Cycle Command 2nd Bus Write Cycle 3rd Bus Write Cycle 4th Bus Write Cycle 5th Bus Write Cycle 6th Bus Write Cycle Addr. Addr. Data Addr. Data Sequence Addr. Data Addr. Data Addr. Data Data PA PD (Note 1) (Note 1) 1 Single Word Program AAAH AAH 554H 55H AAAH A0H 2 Sector Erase (4-KB Erase) AAAH AAH 554H 55H AAAH 80H AAAH AAH 554H 55H SA (Note 2) 30H 3 Chip Erase (All Erase) AAAH AAH 554H 55H AAAH 80H AAAH AAH 554H 55H AAAH 10H 4 Product ID Entry AAAH AAH 554H 55H AAAH 90H Product ID Exit xxH F0H Product ID Exit AAAH AAH 554H 55H AAAH F0H Read Protect Set AAAH AAH 554H 55H AAAH A5H 77EH F0H (Note3) Write Protect Set AAAH AAH 554H 55H AAAH A5H 77EH 0FH (Note3) 5 6 Note 1: PA = Program Word address, PD = Program Word data Set the address and data to be programmed. Even-numbered addresses should be specified here. Note 2: SA = Sector Erase address, Each sector erase range is selected by address A23 to A12. Note 3: When apply read protect and write protect, be sure to program the data of 00H. Table 3.2.22 Hardware Sequence Flags Status During auto operation D7 D6 Single Word Program D7 Toggle Sector Erase/Chip Erase 0 Toggle Read Protect Set/Write Protect Set Cannot be used Toggle Note: D15 to D8 and D5 to D0 are “don’t care”. 91FW27-56 2007-11-02 TMP91FW27 3.2.6.1 Single Word Program The Single Word Program command sequence programs the flash memory on a word basis. The address and data to be programmed are specified in the 4th bus write cycle. It takes a maximum of 60 μs to program a single word. Another command sequence cannot be executed until the write operation has completed. This can be checked by reading the same address in the flash memory repeatedly until the same data is read consecutively. While a write operation is in progress, bit 6 of data is toggled each time it is read. Note: To rewrite data to Flash memory addresses at which data (including FFFFH) is already written, make sure to erase the existing data by “sector erase” or “chip erase” before rewriting data. 3.2.6.2 Sector Erase (4-Kbyte Erase) The Sector Erase command sequence erases 4 Kbytes of data in the flash memory at a time. The flash memory address range to be erased is specified in the 6th bus write cycle. For the address range of each sector, see Table 3.2.3. This command sequence cannot be used in Programmer mode. 48H It takes a maximum of 75 ms to erase 4 Kbytes. Another command sequence cannot be executed until the erase operation has completed. This can be checked by reading the same address in the flash memory repeatedly until the same data is read consecutively. While a erase operation is in progress, bit 6 of data is toggled each time it is read. 3.2.6.3 Chip Erase (All Erase) The Chip Erase command sequence erases the entire area of the flash memory. It takes a maximum of 300 ms to erase the entire flash memory. Another command sequence cannot be executed until the erase operation has completed. This can be checked by reading the same address in the flash memory repeatedly until the same data is read consecutively. While an erase operation is in progress, bit 6 of data is toggled each time it is read. Erase operations clear data to FFH. 3.2.6.4 Product ID Entry When the Product ID Entry command is executed, Product ID mode is entered. In this mode, the vendor ID, flash macro ID, flash size ID, and read/write protect status can be read from the flash memory. In Product ID mode, the data in the flash memory cannot be read. 3.2.6.5 Product ID Exit This command sequence is used to exit Product ID mode. 91FW27-57 2007-11-02 TMP91FW27 3.2.6.6 Read Protect Set The Read Protect Set command sequence applies read protection on the flash memory. When read protection is applied, the flash memory cannot be read in Programmer mode and the RAM Transfer command cannot be executed in Single Boot mode. To cancel read protection, it is necessary to execute the Chip Erase command sequence. To check whether or not read protection is applied, read xxx77EH in Product ID mode. It takes a maximum of 60 μs to set read protection on the flash memory. Another command sequence cannot be executed until the read protection setting has completed. This can be checked by reading the same address in the flash memory repeatedly until the same data can be read consecutively. While a read protect operation is in progress, bit 6 of data is toggled each time it is read. 3.2.6.7 Write Protect Set The Write Protect Set command sequence applies write protection on the flash memory. When write protection is applied, the flash memory cannot be written to in Programmer mode and the RAM Transfer command cannot be executed in Single Boot mode. To cancel write protection, it is necessary to execute the Chip Erase command sequence. To check whether or not write protection is applied, read xxx77EH in Product ID mode. It takes a maximum of 60 μs to set write protection. Another command sequence cannot be executed until the write protection setting has completed. This can be checked by reading the same address in the flash memory repeatedly until the same data can be read consecutively. While a write protect operation is in progress, bit 6 of data is toggled each time it is read. 3.2.6.8 Hardware Sequence Flags The following hardware sequence flags are available to check the auto operation execution status of the flash memory. 1) Data polling (D7) When data is written to the flash memory, D7 outputs the complement of its programmed data until the write operation has completed. After the write operation has completed, D7 outputs the proper cell data. By reading D7, therefore, the operation status can be checked. While the Sector Erase or Chip Erase command sequence is being executed, D7 outputs “0”. After the command sequence is completed, D7 outputs “1” (cell data). Then, the data written to all the bits can be read after waiting for 1 μs. When read/write protection is applied, the data polling function cannot be used. Instead, use the toggle bit (D6) to check the operation status. 91FW27-58 2007-11-02 TMP91FW27 2) Toggle bit (D6) When the Flash Memory Program, Sector Erase, Chip Erase, Write Protect Set, or Read Protect Set command sequence is executed, bit 6 (D6) of the data read by read operations outputs “0” and “1” alternately each time it is read until the processing of the executed command sequence has completed. The toggle bit (D6) thus provides a software means of checking whether or not the processing of each command sequence has completed. Normally, the same address in the flash memory is read repeatedly until the same data is read successively. The initial read of the toggle bit always returns “1”. Note: The flash memory incorporated in the TMP91FW27 does not have an exceed-time-limit bit (D5). It is therefore necessary to set the data polling time limit and toggle bit polling time limit so that polling can be stopped if the time limit is exceeded. 3.2.6.9 Data Read Data is read from the flash memory in byte units or word units. It is not necessary to execute a command sequence to read data from the flash memory. 91FW27-59 2007-11-02 TMP91FW27 3.2.6.10 Programming the Flash Memory by the Internal CPU The internal CPU programs the flash memory by using the command sequences and hardware sequence flags described above. However, since the flash memory cannot be read during auto operation mode, the program/erase routine must be executed outside of the flash memory. The CPU can program the flash memory either by using Single Boot mode or by using a user-created protocol in Single Chip mode (User Boot). 1) Single Boot: The microcontroller is started up in Single Boot mode to program the flash memory by the internal boot ROM program. In this mode, the internal boot ROM is mapped to an area including the interrupt vector table, in which the boot ROM program is executed. The flash memory is mapped to an address area different from the boot ROM area. The boot ROM program loads data into the flash memory by serial transfer. In Single Boot mode, interrupts must be disabled including non-maskable interrupts ( NMI , etc.). For details, see 3.2.4“Single Boot Mode” 49H 50H 2) User Boot: In this method, the flash memory is programmed by executing a user-created routine in Single Chip mode (normal operation mode). In this mode, the user-created program/erase routine must also be executed outside of the flash memory. It is also necessary to disable interrupts including non-maskable interrupts. The user should prepare a flash memory program/erase routine (including routines for loading write data and writing the loaded data into the flash memory). In the main program, normal operation is switched to flash memory programming operation to execute the flash memory program/erase routine outside of the flash memory area. For example, the flash memory program/erase routine may be transferred from the flash memory to the internal RAM and executed there or it may be prepared and executed in external memory. For details, see 3.2.5“Flash Memory”. 51H 52H 91FW27-60 2007-11-02 TMP91FW27 Flowcharts: Flash memory access by the internal CPU Single Word Program Start Program Program command command sequence sequence (See (See the the flowchart flowchart below) below) Toggle bit (D6) Timeout (60 μs) Word read Addr. = Program address Read data matched program data? No Yes Word read Addr. = Program address Read data matched program data? No Yes Address = Address + 2 (Even-numbered address/ word units) No Last address? Yes Program end Abnormal end Program Command Sequence (Address/Data) xxxAAAH/AAH xxx554H/55H xxxAAAH/A0H Even-numbered program address (A0 = 0) / program data (word units) 91FW27-61 2007-11-02 TMP91FW27 Chip Erase/Sector Erase Start Erase command sequence (See the flowchart below) Timeout (Chip: 300 ms, Sector: 75 ms) Toggle bit (D6) Read data = blank? No Yes Erase end Abnormal end Note: In Chip Erase, whether or not the entire flash memory is blank is checked. In Sector Erase, whether or not the selected sector is blank is checked. Chip Erase Command Sequence (Address/Data) Sector Erase Command Sequence (Address/Data) xxxAAAH/AAH xxxAAAH/AAH xxx554H/55H xxx554H/55H xxxAAAH/80H xxxAAAH/80H xxxAAAH/AAH xxxAAAH/AAH xxx554H/55H xxx554H/55H xxxAAAH/10H Sector address/30H 91FW27-62 2007-11-02 TMP91FW27 Read/Write Protect Set Start Protect Set command sequence (See the flowchart below) Timeout (60 μs) Toggle bit (D6) Product ID Entry Byte read (D7 to D0) Addr. = xxx77EH Product ID Exit Read data matched program data? No Yes Protect Set end Abnormal end Protect Set Command Sequence (Address/Data) xxxAAAH/AAH xxx554H/55H xxxAAAH/A5H Set read protect xxx77EH/F0H Set write protect xxx77EH/0FH Set both read protect and write protect xxx77EH/00H 91FW27-63 2007-11-02 TMP91FW27 Data Polling (D7) Start Byte read (D7 to D0) Addr. = VA (VA: Valid Address) No D7 = Data? Yes Operation end Toggle Bit (D6) Start Byte read (D7 to D0) Addr. = VA Byte read (D7 to D0) Addr. = VA Yes D6 = Toggle? No Operation end Note: Hardware sequence flags are read from the flash memory in byte units or word units. VA: In Single Word Program, VA denotes the address to be programmed. In Sector Erase, VA denotes any address in the selected sector. In Chip Erase, VA denotes any address in the flash memory. In Read Protect Set, VA denotes the protect set address (xx77EH). In Write Protect Set, VA denotes the protect set address (xx77EH). 91FW27-64 2007-11-02 TMP91FW27 Product ID Entry Start xxxAAAH/AAH xxx554H/55H xxxAAAH/90H Wait for 300 nsec or longer (ID access and exit time = max. 300 nsec) [Product ID mode start] Product ID read (See the table below) Read Values in Product ID Mode Vendor ID Flash macro ID Flash size ID Read/Write Protect status Address xxxx00H xxxx02H xxxx04H xxx77EH Read Value 98H 42H 1FH Data programmed when protection is set. When protection is not set, FFH. Product ID Exit Start Start xxxAAAH/AAH xxxxxxH/F0H xxx554H/55H Wait for 300 nsec or longer (ID access and exit time = max. 300 nsec) xxxAAAH/F0H Product ID mode end Wait for 300fnsec or longer (ID access and exit time = max.300 nsec) Product ID mode end 91FW27-65 2007-11-02 TMP91FW27 (Example: Program to be loaded and executed in RAM) Erase the flash memory (chip erase) and then write 0706H to address FE0000H. ;#### Flash memory chip erase processing #### ld XIX, 0xFE0000 CHIPERASE: ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0x80 ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0x10 cal TOGGLECHK CHIPERASE_LOOP: ld WA, (XIX+) cp WA, 0xFFFF j ne, CHIPERASE_ERR cp XIX, 0xFFFFFF j ULT, CHIPERASE_LOOP ;#### Flash memory program processing #### ld XIX, 0xFE0000 ld WA, 0x0706 PROGRAM: ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0xA0 ld (XIX), WA cal TOGGLECHK ld cp j ld cp j BC, (XIX) WA, BC. ne, PROGRAM_ERR BC, (XIX) WA, BC ne, PROGRAM_ERR PROGRAM_END: j PROGRAM_END ;#### Toggle bit (D6) check processing #### TOGGLECHK: ld L, (XIX) and L, 0y01000000 ld H, L TOGGLECHK1: ld L, (XIX) and L, 0y01000000 cp L, H j z, TOGGLECHK2 ld H, L j TOGGLECHK1 TOGGLECHK2: ret ; set start address ; 1st bus write cycle ; 2nd bus write cycle ; 3rd bus write cycle ; 4th bus write cycle ; 5th bus write cycle ; 6th bus write cycle ; check toggle bit ; read data from flash memory ; blank data? ; if not blank data, jump to error processing ; end address (0xFFFFFF)? ; check entire memory area and then end loop processing ; set program address ; set program data ; 1st bus write cycle ; 2nd bus write cycle ; 3rd bus write cycle ; 4th bus write cycle ; check toggle bit ; read data from flash memory ; if programmed data cannot be read, error is determined ; read data from flash memory ; if programmed data cannot be read, error is determined ; program operation end ; check toggle bit (D6) ; save first toggle bit data ; check toggle bit (D6) ; toggle bit = toggled? ; if not toggled, end processing ; save current toggle bit state ; recheck toggle bit ;#### Error processing #### CHIPERASE_ERR: j CHIPERASE_ERR ; chip erase error PROGRAM_ERR: j PROGRAM_ERR ; program error 91FW27-66 2007-11-02 TMP91FW27 (Example: Program to be loaded and executed in RAM) Erase data at addresses FF0000H to FF0FFFH (sector erase) and then write 0706H to address FF0000H. ;#### Flash memory sector erase processing #### ld XIX, 0xFF0000 SECTORERASE: ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0x80 ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (XIX), 0x30 cal TOGGLECHK SECTORERASE_LOOP: ld WA, (XIX+) cp WA, 0xFFFF j ne, SECTORERASE_ERR cp XIX, 0xFF0FFF j ULT, SECTORERASE_LOOP ;#### Flash memory program processing #### ld XIX, 0xFF0000 ld WA, 0x0706 PROGRAM: ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0xA0 ld (XIX), WA ; set start address ; 1st bus write cycle ; 2nd bus write cycle ; 3rd bus write cycle ; 4th bus write cycle ; 5th bus write cycle ; 6th bus write cycle ; check toggle bit ; read data from flash memory ; blank data? ; if not blank data, jump to error processing ; end address (0xFF0FFF)? ; check erased sector area and then end loop processing ; set program address ; set program data ; 1st bus write cycle ; 2nd bus write cycle ; 3rd bus write cycle ; 4th bus write cycle cal TOGGLECHK ; check toggle bit ld cp j ld cp j BC, (XIX) WA, BC ne, PROGRAM_ERR BC, (XIX) WA, BC ne, PROGRAM_ERR ; read data from flash memory PROGRAM_END: j PROGRAM_END ;#### Toggle bit (D6) check processing #### TOGGLECHK: ld L, (XIX) and L, 0y01000000 ld H, L TOGGLECHK1: ld L, (XIX) and L, 0y01000000 cp L, H j z, TOGGLECHK2 ld H, L j TOGGLECHK1 TOGGLECHK2: ret ; if programmed data cannot be read, error is determined ; read data from flash memory ; if programmed data cannot be read, error is determined ; program operation end ; check toggle bit (D6) ; save first toggle bit data ; check toggle bit (D6) ; toggle bit = toggled? ; If not toggled, end processing ; save current toggle bit state ; Recheck toggle bit ;#### Error processing #### SECTORERASE_ERR: j SECTORERASE_ERR ; sector erase error PROGRAM_ERR: j PROGRAM_ERR ; program error 91FW27-67 2007-11-02 TMP91FW27 (Example: Program to be loaded and executed in RAM) Set read protection and write protection on the flash memory. ;#### Flash Memory Protect Set processing #### ld XIX, 0xFE077E PROTECT: ld (0xFE0AAA), 0xAA ld (0xFE0554), 0x55 ld (0xFE0AAA), 0xA5 ld (XIX), 0x00 cal cal ld cal cp j TOGGLECHK PID_ENTRY A, (XIX) PID_EXIT A, 0x00 ne, PROTECT_ERR ; set protect address ; 1st bus write cycle ; 2nd bus write cycle ; 3rd bus write cycle ; 4th bus write cycle ; check toggle bit ; ; read protected address ; ;(0xFE077E)=0x00? ; protected? PROTECT_END: j PROTECT_END ; protect set operation completed PROTECT_ERR: j PROTECT_ERR ; protect set error ;#### Product ID Entry processing #### PID_ENTRY: ld (0xFE0AAA), 0xAA ; 1st bus write cycle ld (0xFE0554), 0x55 ; 2nd bus write cycle ld (0xFE0AAA), 0x90 ; 3rd bus write cycle ; --- wait for 300 nsec or longer (execute NOP instruction [148nsec/@fFPH=27MHz] three times) --nop nop nop ; wait for 444 nsec ret ;#### Product ID Exit processing #### PID_EXIT: ld (0xFE0000), 0xF0 ; 1st bus write cycle ; --- wait for 300 nsec or longer (execute NOP instruction [148nsec/@fFPH=27MHz] three times) --nop nop nop ; wait for 444 nsec ret ;#### Toggle bit (D6) check processing #### TOGGLECHK: ld L, (XIX) and L, 0y01000000 ld H, L TOGGLECHK1: ld L, (XIX) and L, 0y01000000 cp L, H j z, TOGGLECHK2 ld H, L j TOGGLECHK1 TOGGLECHK2: ret ; check toggle bit (D6) ; save first toggle bit data ; check toggle bit (D6) ; toggle bit = toggled? ; if not toggled, end processing ; save current toggle bit state ; recheck toggle bit (Example: Program to be loaded and executed in RAM) Read data from address FE0000H. ;#### Flash memory read processing #### READ: ld WA, (0xFE0000) ; read data from flash memory 91FW27-68 2007-11-02 TMP91FW27 4. 4.1 Electrical Characteristics Absolute Maximum Ratings Parameter Symbol Rating Power supply voltage Vcc −0.5 to 4.0 Input voltage VIN −0.5 to Vcc + 0.5 Output current (1 pin) IOL 2 Output current (1 pin) IOH −2 Output current (Total) ΣIOL 80 Output current (Total) ΣIOH −80 Power dissipation (Ta = 85°C) PD 600 Soldering temperature (10 s) TSOLDER 260 Storage temperature TSTG −65 to 150 Operation temperature TOPR −40 to 85 Number of Times Program Erase NEW Unit V mA mW °C 100 Cycle Note: The absolute maximum ratings are rated values that must not be exceeded during operation, even for an instant. Any one of the ratings must not be exceeded. If any absolute maximum rating is exceeded, a device may break down or its performance may be degraded, causing it to catch fire or explode resulting in injury to the user. Thus, when designing products that include this device, ensure that no absolute maximum rating value will ever be exceeded. Solderability of lead free products Test parameter Solderability Test condition Note Use of Sn−37Pb solder Bath Pass: Solder bath temperature =230°C, Dipping time = 5 seconds solderability rate until forming ≥ 95% The number of times = one, Use of R-type flux Use of Sn−3.0Ag−0.5Cu solder bath Solder bath temperature = 245°C, Dipping time = 5 seconds The number of times = one, Use of R-type flux (use of lead free) 91FW27-69 2007-11-02 TMP91FW27 4.2 DC Characteristics (1/2) Parameter Power supply voltage AVCC = DVCC AVSS = DVSS = 0 V Power supply voltage AVCC = DVCC AVSS = DVSS = 0 V Symbol VCC VCC for erase/program Condition fc = 4 to 27 MHz fc = 2 to 16 MHz Min fs = 30 to 34 kHz fc = 4 to 27 MHz Typ.(Note) Unit 3.6 V 3.6 V 2.7 2.2 2.7 Ta = −10∼40°C Max operations of flash memory P00 to P17 Input low voltage (AD0 to AD15) P20 to P97 (Except P63) RESET , NMI P63 (INT0) VIL1 VIL2 AM0 and AM1 VIL3 X1 VIL4 P00 to P17 (AD0 to AD15) Input high voltage VIL P20 to P97 (Except P63) RESET , NMI , P63 (INT0) VIH VIH1 VIH2 AM0 and AM1 VIH3 X1 VIH4 Output low voltage VOL Output high voltage VOH Vcc ≥ 2.7 V 0.6 Vcc < 2.7 V Vcc ≥ 2.7 V 0.2 Vcc 0.3 Vcc Vcc < 2.7 V 0.2 Vcc Vcc ≥ 2.7 V 0.25 Vcc −0.3 Vcc < 2.7 V 0.15 Vcc Vcc ≥ 2.7 V 0.3 Vcc < 2.7 V 0.3 Vcc ≥ 2.7 V 0.2 Vcc Vcc < 2.7 V 0.1 Vcc Vcc ≥ 2.7 V 2.0 Vcc < 2.7 V 0.7 Vcc Vcc ≥ 2.7 V 0.7 Vcc Vcc < 2.7 V 0.8 Vcc Vcc ≥ 2.7 V 0.75 Vcc Vcc < 2.7 V 0.85 Vcc Vcc ≥ 2.7 V Vcc − 0.3 Vcc < 2.7 V Vcc − 0.3 Vcc ≥ 2.7 V 0.8 Vcc Vcc < 2.7 V 0.9 Vcc IOL = 1.6mA V Vcc + 0.3 Vcc ≥ 2.7 V 0.45 0.15 Vcc IOL = 0.4mA Vcc < 2.7 V IOH = −400 μA Vcc ≥ 2.7 V Vcc − 0.3 IOH = −200 μA Vcc < 2.7 V 0.8 Vcc V V Note: Typical values are for when Ta = 25°C and VCC = 3.0 V uncles otherwise noted. 91FW27-70 2007-11-02 TMP91FW27 DC Characteristics (2/2) Parameter Symbol Condition Min Typ. (Note1) Max Input leakage current ILI 0.0 ≤ VIN ≤ Vcc 0.02 ±5 Output leakage current ILO 0.2 ≤ VIN ≤ Vcc − 0.2 0.05 ±10 Power down voltage RRST RESET pull-up resistor Pin capacitance VTH RESET , NMI , INT0 Programmable pull-up resistor V IH2 = 0.8 Vcc 2.2 3.6 Vcc = 2.7 V to 3.6 V 100 400 Vcc = 2.2 V 200 1000 fc = 1 MHz CIO Schmitt width NORMAL V IL2 = 0.2 Vcc, VSTOP (@STOP, RAM back up) RKH (Note 2) IDLE2 10 1.0 Vcc < 2.7 V 0.3 0.8 Vcc = 2.7 V to 3.6 V 100 400 Vcc = 2.2 V 200 1000 IDLE1 NORMAL (Note 2) IDLE1 SLOW (Note 2) Iccp-p 9 3.4 4.5 1.5 2.9 20 55 20 44 10 40 Vcc = 2.2 V to 3.6 V 1 25 Vcc = 2.2V to 3.6V 20 fs = 32.768 kHz Peak current by intermitt operation 7 8 IDLE1 STOP 20 4.8 Vcc = 2.2 V to 3.6 V IDLE2 13 3.0 fc = 16 MHz Icc V 5.5 Vcc = 2.2 V (Typ. = 2.2V) IDLE2 kΩ PF 0.4 fc = 27 MHz μA V Vcc ≥ 2.7 V Vcc = 2.7 V to 3.6 V Unit kΩ mA mA μA μA mA Note 1: Typical values are for when Ta = 25°C and VCC = 3.0 V unless otherwise noted. Note 2: Icc measurement conditions (NORMAL, SLOW): All functions are operational; output pins are open and input pins are fixed. When the program is operating by the flash memory, or when data reed from the flash memory, the flash memory operate intermittently. Therefore, it outputs a peak current like a following diagram, momentarily. In this case, the power supply current; Icc (NORMAL/SLOW mode) is the sum of average value of a peak current and a MCU current value. When designing the power supply, set to a circuit which a peak current can be supplyed. In SLOW mode, a defference of peak current and average current is large. Program counter (PC) n n+2 n+4 Flash current which flows momentarily. Max. current Iccp-p [mA] Typ. current The average of Peak current + MCU current MCU current Flash memory intermittent operation 91FW27-71 2007-11-02 TMP91FW27 4.3 AC Characteristics (1) Vcc = 2.7 V to 3.6 V No. Parameter Variable Symbol fFPH = 27 MHz Min Max Min 31250 37.0 Unit Max 1 fFPH period ( = x) tFPH 37.0 2 A0 to A15 valid → ALE falling tAL 0.5x − 6 12 ns 3 ALE falling → A0 to A15 hold tLA 0.5x − 16 2 ns 4 ALE high pulse width tLL x − 20 17 ns 5 ALE falling → RD / WR falling tLC 0.5x − 14 4 ns 6 RD rising → ALE rising tCLR 0.5x − 10 8 ns 7 WR rising → ALE rising tCLW x − 10 27 ns 8 A0 to A15 vlalid → RD / WR falling tACL x − 23 14 ns 9 A0 to A21 valid → RD / WR falling tACH 1.5x − 26 29 ns 10 RD rising → A0 to A21 hold tCAR 0.5x − 13 5 ns 11 WR rising → A0 to A21 hold tCAW x − 13 12 A0 to A15 valid → D0 to D15 input tADL 3.0x − 38 73 ns 13 A0 to A21 valid → D0 to D15 input tADH 3.5x − 41 88 ns 14 RD falling → D0 to D15 input tRD 2.0x − 30 44 ns 15 RD low puse width tRR 2.0x − 15 59 ns 16 RD rising → D0 to D15 hold tHR 0 0 ns 17 RD rising → A0 to A15 output tRAE x − 15 22 ns 18 WR low pulse width tWW 1.5x − 15 40 ns 19 D0 to D15 valid → WR rising tDW 1.5x − 35 20 ns 20 WR rising → D0 to D15 hold tWD x − 25 12 ns 21 A0 to A21 valid → Port input tAPH 22 A0 to A21 valid → Port hold tAPH2 23 A0 to A21 valid → Port valid tAP Ns 24 3.5x − 89 3.5x ns 40 ns 209 ns 129 3.5x + 80 ns AC measurement conditions ・Output level: High 0.7 × Vcc/Low 0.3 × VCC, CL = 50 pF ・Input level: High 0.9 × Vcc/Low 0.1 × VCC Note: Symbol [x] in the above table means the period of clock fFPH. It’s half period the system clock fSYS for CPU core. The period of clock fFPH depends on the clock gear setting or the selection of high/low oscillator frequency. 91FW27-72 2007-11-02 TMP91FW27 (2) Vcc = 2.2 V to 3.6 V No. Parameter Variable Symbol fFPH = 16 MHz Unit Min Max Min 62.5 31250 62.5 ns 13 ns 1 fFPH period ( = x) tFPH 2 A0 to A15 valid → ALE falling tAL 0.5x − 18 Max 3 ALE falling → A0 to A15 hold tLA 0.5x − 25 6 ns 4 ALE high pulse width tLL x − 30 32 ns 5 ALE falling → RD / WR falling tLC 0.5x − 25 6 ns 6 RD rising → ALE rising tCLR 0.5x − 15 16 ns 7 WR rising → ALE rising tCLW x − 15 47 ns 8 A0 to A15 vlalid → RD / WR falling tACL x − 30 32 ns 9 ns A0 to A21 valid → RD / WR falling tACH 1.5x − 30 63 10 RD rising → A0 to A21 hold tCAR 0.5x − 21 10 ns 11 WR rising → A0 to A21 hold tCAW x − 25 37 ns 12 A0 to A15 valid → D0 to D15 input tADL 3.0x − 50 137 ns 13 A0 to A21 valid → D0 to D15 input tADH 3.5x − 56 162 ns 14 RD falling → D0 to D15 input tRD 75 ns 15 RD low puse width tRR 2.0x − 28 97 ns 16 RD rising → D0 to D15 hold tHR 0 0 ns 17 RD rising → A0 to A15 output tRAE x − 25 37 ns 18 WR low pulse width tWW 1.5x − 29 64 ns 19 D0 to D15 valid → WR rising tDW 1.5x − 60 33 ns 20 WR rising → D0 to D15 hold tWD x − 40 22 ns 21 A0 to A21 valid → Port input tAPH 22 A0 to A21 valid → Port hold tAPH2 23 A0 to A21 valid → Port valid tAP 2.0x − 50 3.5x − 100 3.5x 68 ns 368 ns 218 3.5x + 150 ns AC measurement conditions ・Output level: High 0.7 × Vcc/Low 0.3 × VCC, CL = 50 pF ・Input level: High 0.9 × Vcc/Low 0.1 × VCC Note: Symbol [x] in the above table means the period of clock fFPH. It’s half period the system clock fSYS for CPU core. The period of clock fFPH depends on the clock gear setting or the selection of high/low oscillator frequency. 91FW27-73 2007-11-02 TMP91FW27 (3) Read cycle tFPH fFPH A0 to A21 CS0 to CS2 tAPH tAPH2 Port input (Note) tADH RD tCAR tRR tAC tRAE tACL tRD tADL tLC A0 to A15 AD0 to AD15 tAL ALE tHR D0 to D15 tLA tCLR tLL Note: Since the CPU accesses the internal area to read data from a port, the control signals of external pins such as RD and CS are not enabled. Therefore, the above waveform diagram should be regarded as depicting internal operation. Please also note that the timing and AC characteristics of port input/output shown above are typical representation. For details, contact your local Toshiba sales representative. 91FW27-74 2007-11-02 TMP91FW27 (4) Write cycle fFPH A0 to A21 CS0 to CS2 tAP Port output (Note) tCAW tWW WR , HWR tDW AD0 to AD15 A0 to A15 tWD D0 to D15 tCLW ALE Note: Since the CPU accesses the internal area to write data to a port, the control signals of external pins such as WR and CS are not enabled. Therefore, the above waveform diagram should be regarded as depicting internal operation. Please also note that the timing and AC characteristics of port input/output shown above are typical representation. For details, contact your local Toshiba sales representative. 91FW27-75 2007-11-02 TMP91FW27 4.4 AD Conversion Characteristics AVCC = VCC, AVSS = VSS Parameter Analog input voltage Error (Not including quantization errors) Symbol Condition VAIN − Min Typ. AVSS VCC = 2.2 V to 3.6 V ±1.0 Max Unit AVCC V ±4.0 LSB Note 1: 1 LSB = (AVCC − AVSS)/1024 [V] Note 2: Minimum operation frequency: The operaion of AD converter is guranteed only using fc (High frequency oscillator). fs (Low frequency oscillator) is not guranteed. But When frequency of clock selected by clock gear is more than and eqaull 4 MHz in using fc, it is guranteed (fFPH ≥ 4 MHz). Note 3: The value for Icc (Current of VCC pin) includes the current which flows through the AVCC pin. 91FW27-76 2007-11-02 TMP91FW27 4.5 Serial Channel Timing (I/O interface mode) (1) SCLK input mode Parameter Symbol SCLK period tSCY Variable Min 10 MHz Max 16X → Output data hold SCLK rising /falling → Input data hold SCLK rising/falling 290 38 (VCC = 2.2 V) 220 − tOHS tSCY/2 + 2X + 0 1000 370 ns tHSR 3X + 10 310 121 ns → Valid data input tSRD → SCLK rising/falling tRDS Valid data input μs 0.59 tOSS SCLK rising/falling Unit Min Max Min Max 1.6 tSCY/2 − 4X − 110 Output data → SCLK rising/falling 27 MHz (VCC = 2.7 V to 3.6 V) ns tSCY/2 − 4X − 180 tSCY − 0 0 1600 592 0 0 10 MHz 27 MHz ns ns (2) SCLK ouptut mode Parameter SCLK period Output data → SCLK rising/falling SCLK rising/falling → Output data hold SCLK rising/falling → Input data hold SCLK rising/falling → Valid data input Valid data input → SCLK rising/falling Symbol Variable Unit Min Max tSCY 16X 8192X tOSS tSCY/2 − 40 760 256 ns tOHS tSCY/2 − 40 760 256 ns tHSR 0 0 0 ns 1.6 tSCY − 1X − 180 tSRD tRDS Min Max Min Max 1X + 180 819 0.59 1320 280 μs 303 375 ns 217 ns Note 1: SCLK rising/falling: The rising edge is used in SCLK rising mode. The falling edge is used in SCLK falling mode. Note 2: 27 MHz and 10 MHz values are calculated from tSCY = 16X case. Note 3: Symbol [x] in the above table means the period of clock fFPH. It’s half period the system clock fSYS for CPU core. The period of clock fFPH depends on the clock gear setting or the selection of high/low oscillator frequency. tSCY SCLK Output mode/ input rising mode SCLK (Input falling mode) tOHS tOSS Output data TXD 0 Input data RXD 0 1 tSRD Valid 91FW27-77 tRDS 1 Valid 2 3 2 3 Valid Valid tHSR 2007-11-02 TMP91FW27 4.6 Event Counter (TA0IN, TA4IN, TB0IN0 and TB0IN1) Parameter Clock period 4.7 Variable Symbol Min tVCK 10 MHz Max 27 MHz Max Unit Min Max Min 8X + 100 900 396 ns Clock low level pulse width tVCKL 4X + 40 440 188 ns Clock high level pulse width tVCKH 4X + 40 440 188 ns Interrupt and Capture (1) NMI and INT0 Interrupts Parameter Variable Symbol Min 10 MHz Max 27 MHz Min Max Min Unit Max NMI and INT0 low level pulse width tINTAL 4X + 40 440 188 ns NMI and INT0 high level pulse width tINTAH 4X + 40 440 188 ns (2) INT5 and INT6 interrupts, capture INT5 and INT6 input pulse width depend on the system clock selection and clock selection for prescaler. Below table show pulse width of each operation clock. System Clock Selection SYSCR1 <SYSCK> Clock Selection for Prescaler SYSCR0 <PRCK1:0> 0 (fc) 1 (fs) tINTBL tINTBH (INT5 and INT6 low level pulse width) (INT5 and INT6 high level pulse width ) Valiable fFPH = 27MHz Valiable fFPH = 27MHz Min Min Min Min Unit 00 (fFPH) 8X + 100 396 8X + 100 396 ns 10 (fc/16) 128Xc + 0.1 4.8 128Xc + 0.1 4.8 00 (fFPH) 8X + 0.1 244.3 8X + 0.1 244.3 μs Note 1: “Xc” shows period of clock fc in high frequency oscillator. Note 2: Symbol [x] in the above table means the period of clock fFPH. It’s half period the system clock fSYS for CPU core. The period of clock fFPH depends on the clock gear setting or the selection of high/low oscillator frequency. 4.8 Flash Characteristics (1) Rewriting Parameter Guarantee on Flash-memory rewriting Condition Min Typ Max Unit − − 100 Times Vcc = 2.7V to 3.6V, fc = 4 to 27 MHz Ta = −10 to 40 ºC 91FW27-78 2007-11-02 TMP91FW27 5. Port Section Equivalent Circuit Diagrams • Reading the circuit diagrams Basically, the gate symbols written are the same as those used for the standard CMOS logic IC [74HCXX] series. The dedicated signal is described below. STOP : This signal becomes active 1 when the HALT mode setting register is set to the STOP mode (SYSCR2<HALTM1:0> = “01”) and the CPU executes the HALT instruction. When the drive enable bit SYSCR2<DRVE> is set to “1”, however STOP remains at “0”. • The input protection resistance ranges from several tens of ohms to several hundreds of ohms. ■ P0 (AD0~AD7), P1 (AD8~AD15, A8~A15), P2 (A16~A21, A0~A5), P60, P70~P74, P80~P83, P91~P92, P94~P95 VCC Output data P-ch Output enable STOP N-ch I/O Input data Input enable ■ P30 ( RD ), P31 ( WR ) Vcc Output data P-ch Output STOP N-ch 91FW27-79 2007-11-02 TMP91FW27 ■ P32, P40~P42 Vcc Output data Vcc Programmable pull-up resistor Output enable STOP I/O Input data Input enable ■ P5 (AN0~AN3) Analog input channel select Analog input Input Input data Input enable ■ P63 (INT0) Vcc Output data P-ch Output enable STOP N-ch I/O Input data Schmitt 91FW27-80 2007-11-02 TMP91FW27 ■ P61 (SO/SDA), P62 (SI/SCL), P90 (TXD0), P93 (TXD1) Vcc Output data P-ch Open-drain Output enable N-ch Output enable STOP I/O Input enable Input enable ■ P96 (XT1), P97 (XT2) Input enable Clock Oscillator Input enable P97 (XT2) Ouput data Output enable N-ch Input enable Input enable P96 (XT1) Ouput data Output enable N-ch STOP Low-frequency oscillation enable ■ NMI NMI Input Schmitt 91FW27-81 2007-11-02 TMP91FW27 ■ AM0~AM1 Input ■ ALE Vcc Internal ALE P-ch Output N-ch Output enable ■ RESET Vcc P-ch Input Reset Schmitt WDTOUT Reset enable ■ X1, X2 Oscillator X2 High-frequen cy oscillation STOP P-ch N-ch X1 Clock 91FW27-82 2007-11-02 TMP91FW27 ■ VREFH, VREFL VREFON P-ch AVCC String resistance AVSS 91FW27-83 2007-11-02 TMP91FW27 Package Dimensions LQFP64-P-1010-0.50D Unit: mm 1.25 typ 10.0 0.2 48 33 49 32 64 17 0.6 0.15 91FW27-84 1.6max 0.25 (0~10 ) 0.145 0.055 0.08 1.4 0.05 16 0.1 0.05 1 12.0 0.2 10.0 0.2 0.5 0.08 M 12.0 0.2 0.22 0.05 6. 2007-11-02 TMP91FW27 QFP64-P-1414-0.80A Unit: mm 91FW27-85 2007-11-02