Introduction to the S12G Family EEPROM Including a Comparison between the S08DZ, S12XE, and S12P Families

Similar documents
MC56F825x/MC56F824x (2M53V) Chip Errata

Updating the Firmware on USB SPI Boards (KITUSBSPIEVME, KITUSBSPIDGLEVME)

MTIM Driver for the MC9S08GW64

MPC5200(b) ATA MDMA, UDMA Functionality BestComm Setup Recommendations

Using the ColdFire+ Family Enhanced EEPROM Functionality Melissa Hunter Derrick Klotz

Design Recommendations to Implement Compatibility Between the MC13783VK and the MC13783VK5

Using the Kinetis Family Enhanced EEPROM Functionality

1 Introduction. 2 Problem statement. Freescale Semiconductor Engineering Bulletin. Document Number: EB727 Rev. 0, 01/2010

MPC7410 RISC Microprocessor Hardware Specifications Addendum for the MPC7410TxxnnnLE Series

IIC Driver for the MC9S08GW64

USB Bootloader GUI User s Guide

SGTL5000 I 2 S DSP Mode

Utilizing Extra FC Credits for PCI Express Inbound Posted Memory Write Transactions in PowerQUICC III Devices

Upgrade the Solution With No Changes 2 Upgrade the Solution With No Changes If a Codebase does not contain updates to its properties, it is possible t

PDB Driver for the MC9S08GW64

MPR121 Jitter and False Touch Detection

16-bit MCU: S12XHY256 Automotive Cluster Demo by: Jose M. Cisneros Steven McLaughlin Applications Engineer Microcontroller Solutions Group, Scotland

MC33696MODxxx Kit. 1 Overview. Freescale Semiconductor Quick Start Guide. Document Number: MC33696MODUG Rev. 0, 05/2007

Using the CAU and mmcau in ColdFire, ColdFire+ and Kinetis

PCB Layout Guidelines for the MC1321x

Managing Failure Detections and Using Required Components to Meet ISO7637 pulse 1 on MC33903/4/5 Common Mode Choke Implementation

MC9S08DZ60 Flash Usage Considerations Andy McKechan Applications Engineer East Kilbride

MCF54451, MCF54452, MCF54453, MCF54454,

Using DMA to Emulate ADC Flexible Scan Mode on Kinetis K Series

Interfacing MPC5500 Microcontrollers to the MFR4310 FlexRay Controller Robert Moran MCD Applications, East Kilbride, Scotland

Mask Set Errata for Mask 2M40J

MPR121 Proximity Detection

Use of PGA on MC56F800x Interaction of PDB, PGA and ADC

Using the PowerQUICC II Auto-Load Feature

Differences Between the DSP56301, DSP56311, and DSP56321

Using an I 2 C EEPROM During MSC8157 Initialization

Electrode Graphing Tool IIC Driver Errata Microcontroller Division

Using the Asynchronous DMA features of the Kinetis L Series

SCI Driver for the MC9S08GW64

etpu Automotive Function Set (Set 2)

Mask Set Errata for Mask 5L35K

etpu General Function Set (Set 1) David Paterson MCD Applications Engineer

MPC8349E-mITX-GP Board Errata

EchoRemote Evaluation Software for Windows

Using the Project Board LCD Display at 3.3 volts

MC9S08DZ60 Migrating from the 3M05C to M74K Mask Set D. Scott Brown Applications Engineering Microcontrollers Solutions Group Austin, TX, USA

Interrupts in Decoupled Parallel Mode for MPC5675K Configuration and Usage

VortiQa Enterprise Quick Start Guide

Component Development Environment Installation Guide

Mask Set Errata for Mask 2M84G

PowerQUICC HDLC Support and Example Code

Mechanical Differences Between the 196-pin MAP-BGA and 196-pin PBGA Packages

56F8300 BLDC Motor Control Application

Mask Set Errata for Mask 2N40C

Changing the i.mx51 NAND Flash Model for Windows Embedded CE TM 6.0

HC912D60A / HC912Dx128A 0.5µ Microcontrollers Mask sets 2K38K, 1L02H/2L02H/3L02H & K91D, 0L05H/1L05H/2L05H

MSC8144AMC-S Getting Started Guide

Pad Configuration and GPIO Driver for MPC5500 Martin Kaspar, EMEAGTM, Roznov Daniel McKenna, MSG Applications, East Kilbride

ColdFire Convert 1.0 Users Manual by: Ernest Holloway

Optically-Isolated Multilink BDM Interface for the S08/S12 Microcontrollers by Michael A. Steffen

Using IIC to Read ADC Values on MC9S08QG8

Converting Earlier Versions of CodeWarrior for StarCore DSPs Projects to Version

Emulated EEPROM Quick Start Guide Matthew Grant 16-Bit Applications Freescale Semiconductor

i.mx31 PDK Power Measurement with GUI

Power Cycling Algorithm using the MMA73x0L 3-Axis Linear Accelerometer

Sensorless BLDC Motor Control Based on MC9S08PT60 Tower Board User Guide

Keil uvision 4 Kinetis Support for Freescale MQX RTOS Release Notes

56F805. BLDC Motor Control Application with Quadrature Encoder using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers

Using the Multi-Axis g-select Evaluation Boards

Mask Set Errata for Mask REV3.1_2N89D

Using the Knock Window etpu Function

MCF5445x Configuration and Boot Options Michael Norman Microcontroller Division

MPC8260 IDMA Timing Diagrams

Migrating from the MPC852T to the MPC875

Interfacing MPC5xx Microcontrollers to the MFR4310 FlexRay Controller David Paterson MCD Applications, East Kilbride

Integrating the MC9S08JS16/8 USB Bootloader to Your Application

Writing Touch Sensing Software Using TSI Module

Using GCR4 to Adjust Ethernet Timing in MSC8144 DSPs

MC9S12VR Family Demonstration Lab Training Carlos Aceff Automotive & Industrial Solutions Group, Mexico

ADC Driver for MC9S08GW64

Errata to MPC8569E PowerQUICC III Integrated Processor Reference Manual, Rev. 2

Clock Mode Selection for MSC8122 Mask Set K98M

Interfacing and Configuring the i.mx25 Flash Devices

MC33897 Single-Wire CAN Transceiver Reliability and Quality Documents

Interfacing HCS12 Microcontrollers to the MFR4200 FlexRay Controller

MC33794 Touch Panel System Using E-Field Sensor Setup Instructions

MCF5216 Device Errata

Functional Differences Between the DSP56307 and DSP56L307

MPC8569E Instruction RAM Microcode Package Release 169

Mask Set Errata for Mask 4L35K

Errata to the MPC8280 PowerQUICC II Family Reference Manual, Rev. 1

Symphony SoundBite: Quick Start with Symphony Studio. Installation and Configuration

MPR083 Proximity Evaluation Kit User s Guide

56F805. Digital Power Factor Correction using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers. freescale.

Configuring the MCF5445x Family for PCI Host Operation

Freescale Semiconductor. Integrated Silicon Pressure Sensor On-Chip Signal Conditioned, Temperature Compensated and Calibrated MP3V5050.

XGATE Library: ATD Average Calculating a rolling average from ATD results

Programming the Keyboard Interrupt Module (KBI) on HC(S)08 MCUs

Introduction to the 16-bit Tower Boards Using the MC9S12GN32

PowerQUICC II Parity and ECC Capability

Introduction to LIN 2.0 Connectivity Using Volcano LTP

LFAE Bootloader Example and Interface for use with AN2546 Daniel McKenna MCD Applications, East Kilbride Scotland

Interfacing MC33903/4/5 With MC9S08DZ60

DSP56F827 Digital Signal Controller

PMSM Vector Control with Encoder on Kinetis Setup Guide for Demo Kits without a Tablet PC

Transcription:

Freescale Semiconductor Application Note Document Number: AN4302 Rev. 0, 04/2011 Introduction to the S12G Family EEPROM Including a Comparison between the S08DZ, S12XE, and S12P Families by: Victor Hugo Osornio López Guadalajara, Mexico 1 Introduction The MC9S12G family is intended as a bridge between high-end 8-bit microcontrollers, such as the S08DZ family, and high-performance 16-bit microcontrollers, such as the MC9S12XS family. It uses features found on the MC9S12XS and MC9S12P families, including error correction code (ECC) on flash memory, a fast analog-to-digital converter (ADC), and a frequency modulated phase locked loop (IPLL) that improves the EMC performance. This application note explains the differences in nonvolatile memory (NVM) storage, more specifically regarding EEPROM storage, between the four families, and introduces the user to the S12G family EEPROM. A simple driver is included to provide the basic tools to manage a S12G family EEPROM. Contents 1 Introduction................................... 1 2 Device Comparison............................. 2 3 S12G EEPROM Overview........................ 3 3.1 EEPROM features.......................... 3 3.2 Launching a flash command.................. 3 4 Migrating to the S12G........................... 8 5 EEPROM Driver............................... 9 Freescale Semiconductor, Inc., 2011. All rights reserved.

Device Comparison 2 Device Comparison The main feature of an EEPROM is its small sector size; an EEPROM sector is the smallest portion of the EEPROM memory that can be erased. For the S12G family, this portion is 4 bytes long. Table 1. Differences between MCU families S12G S12XE 1 S12P S08DZ D-FLASH No Yes Yes No EEPROM Yes No No Yes Alternate Scheme No Hardware & software supported Software supported No Sector Size (Bytes) 4 256 256 4/8 selectable Maximum size (bytes) 4000 4000 4000 8000 Programming Scheme FCCOB FCCOB FCCOB FCMD Program /erase cycles 500K typical, 100K min 500K typical, 50K min 500K typical, 50K min 100K typical, 50K min Operating Frequency (MHz) Min: 0.8 Typ: 1.0 Max: 1.05 Min: 0.8 Max: 1.05 Min: 0.8 Typ: 1.0 Max: 1.05 Min:.150 Max:.200 Word Programming time (us) Typ: 90 Max: 100 Typ: 88 Max: 95 Typ: 100 Max: 107 Min: ~90 Max: ~120.06 Sector Erase time (us) Typ: 5 Max: 26 Typ: 5.2 Max: 21 Typ: 5 Max: 26 NA Memory Protection Yes Yes Yes Yes 1 Not using emulated EEPROM support. The S12G, S12XE, and S12P use the same indexed command execution scheme. They are also equal in terms of erase/program speeds, operating frequency, and memory protection scheme. The S12XE and S12P families do not have an EEPROM. They have a D-flash with a sector size of 256 bytes; that means that every time the user needs to erase a single byte, 255 extra bytes are erased; therefore, an additional memory management scheme is recommended. The S12G family erases 4 bytes instead of 256, decreasing the need for a memory management algorithm/scheme. The S08DZ family does not share the indexed command scheme with the other compared families. It is also different in terms of writing speed, programming cycles, and operating frequency. As with the S12G family, S08DZ devices contain an EEPROM with a configurable sector size of 4/8 bytes. In order to change EEPROM contents, the S12G, S12XE, and S12P use an indexed FCCOB register to provide a command code and its relevant parameters to the memory controller. The S08DZ requires an attempt to write data to a memory address. The address determines where the command is going to be 2 Freescale Semiconductor

S12G EEPROM Overview executed, and the data written is taken as a parameter for the command; after providing that data, the flash command register needs to be updated and then the command is launched. Please refer to Section 4, Migrating to the S12G, for details on how to use the FCCOB for EEPROM command execution. 3 S12G EEPROM Overview 3.1 EEPROM features S12G family EEPROM sizes range from 512 bytes to 4 Kbytes 4 bytes sector size Single-bit fault correction and double-bit fault detection within a word during read operations Automated program and erase algorithm with verify and generation of ECC parity bits Fast sector erase and word program operation Protection scheme to prevent accidental program or erase of EEPROM memory Ability to program up to four words in a burst sequence 3.2 Launching a flash command The FCCOB is a six word array addressed via the CCOBIX index found in the FCCOBIX register. To launch a flash command, first set up all required FCCOB fields and then initiate the command s execution by writing a 1 to the CCIF bit in the FSTAT register (a 1 written by the user clears the CCIF command completion flag to 0). When the CCIF bit in the FSTAT register has been cleared, all FCCOB parameter fields are locked and cannot be changed until the command completes (the completion is indicated by the memory controller returning CCIF to 1). Table 2 shows the generic flash command format. For details on specific command format, refer to Section 3.2.2, EEPROM commands. Table 2. Generic command format table CCOBIX BYTE PARAMETER PARAMETER FIELD 0 HI 1 Flash Command ID Global Address [17:16] 1 HI 2 Global Address [15:8] Global Address [7:0] 2 HI 3 Data Word 0 [15:8] Data Word 0 [7:0] 3 HI 4 Data Word 1 [15:8] Data Word 1 [7:0] Freescale Semiconductor 3

S12G EEPROM Overview Table 2. Generic command format table (continued) CCOBIX BYTE PARAMETER PARAMETER FIELD 4 HI 5 Data Word 2 [15:8] Data Word 2 [7:0] 5 HI 6 Data Word 3 [15:8] Data Word 3 [7:0] 3.2.1 Flash command description All flash commands are launched using the following command write sequence: 1. Prior to launching any command, software must write the FCLKDIV register to divide the main bus clock (FBUS) to a frequency ranging from 0.8 to 1.05 MHz. Setting flash frequency below 0.8 MHz may overstress and damage the device. Setting it higher than 1.05 MHz may cause incomplete erasure or programming of flash memory cells. This step needs to be executed after a reset event; once executed, the FDIVLCK bit in FCLKDIV register will be set and flash frequency will be locked for writing until next reset. 2. Evaluate CCIF value status; if CCIF is 0, the flash module is still executing a command. 3. Clear the ACCERR and FPVIOL bits in FSTAT register. This will clear previous access or protection violation errors. 4. Set CCOBIX to 0. Write the FCCOB high byte with the command ID to execute. 5. If the command requires more parameters, write the low byte of FCCOB. (Global address [17:16], Parameter 1). 6. If the command requires more parameters, increase CCOBIX and write the next parameter to FCCOB; keep doing so until all parameters are passed to the memory controller. CCOBIX final value depends on the command that is being launched; refer to Section 3.2.2, EEPROM commands, to verify command-specific CCOBIX values. 7. Clear the CCIF bit to start the command execution; the CCIF bit will be set by the memory controller once the command execution ends. 4 Freescale Semiconductor

S12G EEPROM Overview Start Write FCLKDIV register Flash module is executing previous command No CCIF is set? Yes Clear ACCER and FPVIOL: FSTAT = 0x30 It is possible to add a check step to verify that the ACCERR/FPVIOL bits are actually set before clearing them FCCOBIX = 0 FCCOBHI = Command ID No Command requires more parameters? Yes FCCOBLO = Parameter 1 Command requires more parameters? Yes FCCOBIX ++ Load next parameter in FCCOB Clear CCIF: FSTAT = 0x80 CCIF will be set again when the command has been executed Exit Figure 1. Launch command flowchart Freescale Semiconductor 5

S12G EEPROM Overview 3.2.2 EEPROM commands 3.2.2.1 Erase verify all blocks Verifies that all flash memory and EEPROM blocks have been erased. CCOBIX value must be 0 when executing the command. Table 3. Erase verify all blocks command format Erase Verify All Blocks 0 HI 1 Flash Command ID 0x01 NOT REQUIRED NOT REQUIRED 3.2.2.2 Erase verify block Verifies that an EEPROM/flash memory block has been erased. CCOBIX value must be 0 when executing the command. Erase Verify Block Table 4. Erase verify block command format 0 HI 1 Flash Command ID 0x02 Flash Block selection code: (00 to verify EEPROM, 01, 10 and 11 to verify P-Flash) 0x0 3.2.2.3 Erase all blocks Erases EEPROM and P-flash memory spaces. CCOBIX value must be 0 when executing the command. Erase All Blocks Table 5. Erase all blocks command format 0 HI 1 Flash Command ID 0x08 NOT REQUIRED NOT REQUIRED 6 Freescale Semiconductor

S12G EEPROM Overview 3.2.2.4 Erase flash block Erases all addresses within a specified block. CCOBIX value must be 1 when executing the command. Erase Flash Block Table 6. Erase flash block command format 0 HI 1 Flash Command ID 0x09 Global Address [17:16] (EEPROM Global Address starts at 0x000400) 0x00 1 2 Global Address [15:0] 0x0400 3.2.2.5 Erase verify EEPROM section Verifies that a size-adjustable EEPROM section is erased. The verified size depends on Parameter 3 value. CCOBIX value must be 2 when executing the command. Example verifies that 2 words (4 bytes) starting from address 0x000400 are in erased state. Table 7. Erase verify EEPROM section command format Erase Verify EEPROM Section 0 HI 1 Command ID 0x10 Global Address[17:16]: EEPROM global address starts at 0x00_0400 1 HI 2 Global address [15:0] of first word to be verified. 2 HI 3 Number of words to be verified 0x00 0x400 0x02 3.2.2.6 Program EEPROM command Programs between one and four previously erased words in the EEPROM block. CCOBIX value determines how many words will be programmed. CCOBBIX value must be greater than 1 and less than 6 when the command is executed. Example stores 0x1111 at 0x400 0x401, 0x2222 at 0x402 0x403, 0x3333 at 0x404 0x405, and 0x4444 at 0x406 0x407. Freescale Semiconductor 7

Migrating to the S12G Table 8. Program EEPROM command format Program EEPROM Command 0 HI 1 Command ID 0x11 Global Address [17:16] of word to be programmed 1 HI 2 Global address[15:0] of word to be programmed 0x00 0x400 2 HI 3 Word 0 value (mandatory) 0x1111 3 HI 4 Word 1 value (Optional) 0x2222 4 HI 5 Word 2 value (Optional) 0x3333 5 HI 6 Word 3 value (Optional) 0x4444 3.2.2.7 Erase EEPROM sector Erases 4 bytes within EEPROM block. CCOBBIX value must be 1 when command is executed. Example erases address range 0x408 0x409 0x40A 0x40B. Erase EEPROM Sector Table 9. Erase EEPROM sector format 0 HI 1 Command ID 0x12 Global Address [17:16] of sector to be erased 1 HI 2 Global Address [15:0] of sector to be erased. 0x00 0x408 4 Migrating to the S12G S12XE (D-flash) and S12P use the same memory controller as the S12G; flash registers, command sets, and command schemes are similar among these devices. Migrating from a D-flash to an EEPROM is seamless in terms of low level development. 8 Freescale Semiconductor

EEPROM Driver The S08DZ uses a different memory controller, with different registers and command scheme. Despite this fact, both the S12G and S08DZ families have similar functions. Table 10 and Table 11 show available commands and registers for the S08DZ and their corresponding match for the S12G. Table 10. Command comparison S08DZ Command Blank Check Byte Program Burst Program Sector Erase Mass Erase Sector Erase Abort S12G Match Command EraseVerifyBlock EraseVerifySector Program EEPROM Program EEPROM Erase Sector Erase All Blocks NA Other than the Sector Erase Abort command, each S08DZ flash command and register has an S12G counterpart that matches or enhances its behavior, thus making it possible to migrate from one device to the other without modifying high level application code. Table 11. Register comparison S08DZ Register S12G Match Register Register Function FCDIV FCLKDIV Configures flash clock FOPT FSEC Contains KEY enable, EEPROM sector Size, security status FPROT EEPROT/DPROT Defines protected state and protected area size FSTAT FSTAT Memory controller state, access and violation errors, command completion flag, blank check 5 EEPROM Driver A simple EEPROM driver was developed to show FCCOB and CCOBIX usage to execute flash commands and manage EEPROM content. The EEPROM driver consists of three main files: Freescale Semiconductor 9

EEPROM Driver Devices.h contains: Device specific information; Bus clock. S12G_DEVICE macro will select currently used device and its respective EEPROM size. Flash.c contains: LaunchFlashCommand function used by every link function to interface with the Memory controller. Its execution flowchart corresponds to the command sequence suggested by Figure 1. FlashConfigFLClock function used to configure flash clock to run at 1 MHz. Link Functions: FlshProgramEEPROM: function used to program 1 to 4 words in a specified address. FlashEraseVerifyEEPROM: function used to verify if EEPROM block is erased. FlashEraseEEPROMSector: function used to erase 4 bytes starting from a specified address. FlashEraseVerifyEEPROMSection: Function used to verify a given number of words starting from a specified address. FlashEraseEEPROMBlock: Function used to erase EEPROM block, this command cannot be executed while reading data from P-flash, LaunchFlashCommand function has to be transferred to RAM before the command is executed. Flash.h contains macros for command IDs, required parameter numbers for each command and error masks to be able to isolate errors reported on FSTAT register. Application Program EEPROM Erase Sector Erase Verify EEPROM Section Erase Verify EEPROM Block Launch Flash Command Figure 2. Driver Overview 10 Freescale Semiconductor

THIS PAGE IS INTENTIONALLY BLANK Freescale Semiconductor 11

How to Reach Us: Home Page: www.freescale.com Web Support: http://www.freescale.com/support USA/Europe or Locations Not Listed: Freescale Semiconductor, Inc. Technical Information Center, EL516 2100 East Elliot Road Tempe, Arizona 85284 +1-800-521-6274 or +1-480-768-2130 www.freescale.com/support Europe, Middle East, and Africa: Freescale Halbleiter Deutschland GmbH Technical Information Center Schatzbogen 7 81829 Muenchen, Germany +44 1296 380 456 (English) +46 8 52200080 (English) +49 89 92103 559 (German) +33 1 69 35 48 48 (French) www.freescale.com/support Japan: Freescale Semiconductor Japan Ltd. Headquarters ARCO Tower 15F 1-8-1, Shimo-Meguro, Meguro-ku, Tokyo 153-0064 Japan 0120 191014 or +81 3 5437 9125 support.japan@freescale.com Asia/Pacific: Freescale Semiconductor China Ltd. Exchange Building 23F No. 118 Jianguo Road Chaoyang District Beijing 100022 China +86 10 5879 8000 support.asia@freescale.com Information in this document is provided solely to enable system and software implementers to use Freescale Semiconductor products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits or integrated circuits based on the information in this document. Freescale Semiconductor reserves the right to make changes without further notice to any products herein. Freescale Semiconductor makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. Typical parameters that may be provided in Freescale Semiconductor data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including Typicals, must be validated for each customer application by customer s technical experts. Freescale Semiconductor does not convey any license under its patent rights nor the rights of others. Freescale Semiconductor products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the Freescale Semiconductor product could create a situation where personal injury or death may occur. Should Buyer purchase or use Freescale Semiconductor products for any such unintended or unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that Freescale Semiconductor was negligent regarding the design or manufacture of the part. For information on Freescale s Environmental Products program, go to http://www.freescale.com/epp. Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. Freescale Semiconductor, Inc. 2011. All rights reserved. For Literature Requests Only: Freescale Semiconductor Literature Distribution Center 1-800-441-2447 or 303-675-2140 Fax: 303-675-2150 LDCForFreescaleSemiconductor@hibbertgroup.com Document Number: AN4302 Rev. 0 04/2011