Using Atmel Data Flash An 4
Using Atmel Data Flash An 4
Introduction
In the past, engineers have struggled to use Flash memory for data storage applications. The traditional Flash memory devices, with their large page sizes of 4K to 128K bytes, make it difficult to change a few bytes. Typically, system designers must include external RAM buffers to shadow the Flash memory pages contents to make the data modifications. Atmels DataFlash is a feature-rich Flash family utilizing NOR technology designed specifically for data and code storage applications. Its small page sizes of 264 bytes for densities of 8M and smaller, 528 bytes for 16M and 32M, 1056 bytes for 64M, 128M and up to 2112 bytes for 256M and 512M, provide the system designer with a high level of flexibility and completely simplifies the process of data modifications. Furthermore, the DataFlash incorporates a simple serial interface which facilitates hardware layout, increases system reliability and minimizes switching noise. Densities of 64M and above support a dual interface. Designers can use the serial interface, the sequential access parallel interface (transporting 8 bits at a time for increased throughput) or both to optimize system performance and cost. The DataFlash is perfectly suited for digital voice-, image-, code- and data-storage applications, especially where low power consumption is required. In these storage applications, the DataFlashs small page size not only makes it easier to manipulate data, it also increases storage efficiency. The list below shows some typical applications for the DataFlash. Digital Voice Storage Applications: Digital answering machines Voice memo functions in cellular phones Voice storage in pagers Portable voice memo recorders Portable dictation recorders Image storage for digital cameras Scanned fax storage for delayed fax sending/receiving Saved game and high score data for video game systems Phone number and text message storage in pagers Data storage in PDAs Data acquisition systems
Rev. 0842DDFLSH11/02
Code Storage Applications: Portable test and measurement systems Set top boxes Hard disk drives Network interface cards Video graphics cards Network hubs and routers 802.11b wireless LAN Home energy meters DSL modems FPGA Configuration
Functional Description
The block diagram of Atmels DataFlash memory shows that the device consists of a Flash memory array, two data buffers, and a simple I/O interface (Figure 1). Unlike conventional Flash memories that are accessed randomly with multiple address lines and a parallel interface, the DataFlash uses a SPI compatible serial interface to sequentially access its data. The serial interface, used to transfer both address and data information, provides a true upgrade/downgrade path. Figure 1. Atmels AT45DB041B DataFlash Consists of a Flash Memory Array, Two Buffers and a Simple I/O Interface
WP
I/O INTERFACE
SI
SO
The AT45DB041B incorporates two on-chip, bi-directional buffers to expedite the flow of data to and from the device. These buffers provide a built-in pseudo cache memory and allow the AT45DB041B device to receive data during erase/program operations. Each buffer is 264 bytes long, the same size as a Flash page and function independently from each other. The system may also use the data buffers as scratch pad memory for reads and writes. Therefore, these on-chip buffers may eliminate the need to use off-chip RAM or RAM contained within the microcontroller or processor. The AT45DB041Bs buffers are static RAMs (SRAM) and therefore, data stored within the buffers is not guaranteed if the supply voltage drops below the specified minimum operating level. However, the buffers static nature eliminates the need for refreshing and data will not change until new data is loaded into the buffers. When loading new data, only those bytes specified to be overwritten will change, the remaining bytes are unaffected. For example, if the user loads only 200 bytes into a buffer, the remaining 64 bytes will still retain their previous values.
3
0842DDFLSH11/02
The sequential access, serial interface scheme employed through the DataFlashs pinout enables a practically limit-free upgrade path for either density or word-width. Conventional random access, parallel interface Flash must use dedicated address pins to interface to the system microcontroller or processor. As density requirements increase, address lines must be added, in turn increasing the number of pins and the size of the devices package. Likewise, a parallel interface Flash requires dedicated I/O pins, and as word-widths increase to 16 or 32 bits, I/O pins must be added, again impacting the packages size. The DataFlash interfaces with other devices using only seven signal leads, three of which are dedicated to the serial bus (SCK, SI and SO). The remaining signal leads on the DataFlash include a chip select (CS), chip reset input (RESET), a write protect input (WP), and a ready/busy output (RDY/BUSY).
The DataFlash can be used with any type of microcontroller, but the interface of the device is also compatible with SPI modes 0 and 3 to provide simple interconnections with the increasingly popular SPI microcontrollers. SPI is a serial interface protocol, utilizing 8-bit words, useful in communicating with external devices such as serial EEPROMs and the DataFlash. Prior to the availability of SPI EEPROMs, engineers used the standard Microwire EEPROMs to interface with the SPI port on microcontrollers. While the SPI port on microcontrollers was capable of running at 2.1 MHz, it was limited by the EEPROMs 1 MHz operating rate. It wasnt until recently that EEPROMs, such as Atmels AT25010/020/040 Serial CMOS EEPROMs, became available with the SPI standard interface. Due to SPIs faster clock speed and interface compatibility, this EEPROM device is increasing in popularity; the same applies to the DataFlash.
The Serial Data Clock (SCK) input pin of the DataFlash must be generated by the master microcontroller or processor, or in some instances a free-running oscillator. All programming cycles in the DataFlash are completely self-timed, so the SCK signal only controls the clocking of data into and out of the device. The CS pin on the DataFlash functions the same as that of a chip select pin on any memory device. Driving CS LOW selects the device; driving CS HIGH deselects the device and puts the device into a quiescent state. When CS is deselected, the DataFlash ignores any data present on the Serial Data Input (SI) pin, and the Serial Data Output (SO) pin remains in a high-impedance state. The CS pin also functions as a trigger to initiate the internal self-timed read and write sequences. The specifics for each sequence and how CS relates to them are discussed in the Read Operations and Program Operations section of the application note. Table 1. Features of the DataFlash Interface
Maximum Bus Speed Number of Active Pins Maximum Memory Size Data Size Block Write Capability Sequential Read Capability Number of Devices on Bus Supported SPI Modes 20 MHz 4 N/A 8 bits Yes Yes Limited by Port Pins 0 and 3
SCK
SCK
SCK
SCK
Note:
1. The shifting out of data does not occur on the falling edge of the same clock cycle as data shifting in, but rather the falling edge of the next clock cycle.
Interfacing the DataFlash Atmels AT89S8252 is an MCS-51 compatible microcontroller with a Serial Peripheral Interface. It supports full-duplex, 3-wire synchronous data transfer with a 6 MHz maxito a Microcontroller
mum bit frequency. By enabling the AT89S8252s SPI feature, port 1 pins P1.5-P1.7 can be connected to the DataFlash. This microcontroller contains a series of Special Function Registers (SFRs). Among these SFRs is the SPI Control Register located at SFR address D5H (Table 2). Bits CPOL and CPHA control the SPI mode, while bits SPR0 and SPR1 control the data rate (Table 3). Table 2. SPI Control Register
AT89S8252 Microcontroller, SPI Control Register: SFR Address D5H SPIE Bit 7 6 5 4 3 2 1 0 SPE DORD MSTR CPOL CPHA SPR1 SPR0
Sh if t
5
0842DDFLSH11/02
Figure 3. The DataFlash Can be Connected to Any Microcontroller with the Ability to Provide a Clock Signal
VCC + 10 F
8.2K
RST XTAL2
30 pF 24 MHz XTAL1 30 pF P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.7 +P1.0 -P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 VCC
AT89CXX
Alternatively, any microcontroller with individually controlled port pins can provide the proper serial interface for the DataFlash. As shown in Figure 3, Atmels AT89CXX can be connected to the DataFlash. The microcontroller can clock data into the DataFlash at rates up to 20 MHz; whereas the limit on a strict SPI implementation is only 2.1 MHz.
In addition to the basic Flash memory functional blocks, the DataFlash device consists of a Command User Interface (CUI) and a state machine that controls all internal operations. The CUI interfaces the system to the DataFlashs internal state machine. The CUI receives the users software commands, translates them into state machine operations, and determines the commands validity. The state machine contains a Status Register that provides feedback on device functions (Table 4). To read the Status Register, begin by loading a Status Register Read command (opcode 57H or D7H) into the DataFlash. Next, read eight bits of data from the SO pin. It is not possible to write data into the Status Register, so data will be output after the last bit of the opcode is clocked into the device. The first bit to be output from the Status Register will be bit 7, the most-significant bit (MSB). Valid data will continue being output through bit 2, while bits 1, and 0 will have unknown values since they are reserved for future use. After bit 0 of the Status Register has been output, the sequence will repeat itself (as long as CS remains LOW and SCK is being toggled) starting again with bit 7. The data in the Status Register is always being updated, so each repeating sequence will contain new data. You can use the Status Register to determine if the DataFlash is busy or not. The part will be busy during a Main Memory Page to Buffer Transfer, Main Memory Page to Buffer Compare, Buffer to Main Memory Page Program with Built-In Erase, Buffer to Main Memory Page Program without Built-In Erase, Main Memory Page Program, or an Auto Page Rewrite operation. The first bit (MSB) out of the Status Register indicates the ready/busy status, which is derived from the operational status of the internal state machine. If this bit is a 0, the DataFlash is busy performing one of the operations listed above; if this bit is a 1, the part is not busy and is ready to accept a new command. You can also use the DataFlashs RDY/BUSY pin to determine the same information.
Status Register
7
0842DDFLSH11/02
The second bit out of the Status Register indicates the outcome of the most recent Main Memory Page to Buffer Compare operation. If the data in the main memory page matches the data in the buffer, this bit will be a 0; if at least one bit of the data does not match, this will be a 1. The next three bits out of the Status Register indicate the device density of the DataFlash being used. The three bits represent a code relating to different DataFlash densities, allowing a total of eight density combinations. Please refer to Table 5 for the list of codes and densities. Table 4. Status Register Bit Definitions
Order Shifted Out Status Register Bit
1 bit 7 RDY/BUSY
2 bit 6 Compare
3 bit 5
4 bit 4
5 bit 3
6 bit 2
7 bit 1
8 bit 0
Density Code
Command Table
To begin an operation on the DataFlash, the system must send a command to the device. Table 6 on page 17 shows the bit sequence to follow for each DataFlash operation. All operations (except for Status Register Read) start with an opcode followed by three address bytes that are clocked into the DataFlash. The three address bytes (24 bits) are used to address the memory array or buffers for the AT45DB041B. As shown in Figure 4, the four MSB bits are Reserved bits; bits 5-15 denote a page number; bits 16-24 denote a specific byte address within the 264-byte page or buffer. This 24-bit addressing scheme allows the system to address up to 64M bytes. The four Reserved bits of the AT45DB041B will be address bits for larger density devices and should be zero to ensure upwards compatibility.
MSB
XXXX XXXX
XXXX XXXX
LSB
Notes:
1. 2. 3. 4.
r designates bits reserved for larger densities. It is recommended that r be a logical 0 for densities of 4-Mbit or smaller. For densities larger than 4-Mbit, the r bits become the most significant Page Address bit for the appropriate density. Densities of 64M and below have three address bytes.
Figure 5. Command Sequence for Read/Write Operation of Densities 128M or Greater (Except Status Register Read)
SI or I/O7 - I/O0 (INPUT) MSB XXXX XXXX 7 Bits Don't Care CMD 8 bits 8 bits 8 bits 8 bits
XXXX XXXX
XXXX XXXX
LSB
Notes:
1. For densities larger than 128M, the dont care bits become the most significant page address bit for the appropriate density. 2. The addresses shown in the example are for AT45DB1282. Densities of 128M and higher have four address bytes.
9
0842DDFLSH11/02
By specifying the appropriate opcode, data can be read from the main memory or from either one of the two buffers (Figure 6). The DataFlash supports two categories of read modes in relation to the SCK signal. The differences between the modes are in respect to the inactive state of the SCK signal as well as which clock cycle data will begin to be output. The two categories, which are comprised of four modes total, are defined as Inactive Clock Polarity Low or Inactive Clock Polarity High and SPI Mode 0 or SPI Mode 3. A separate opcode (refer to Table 1 for a complete list) is used to select which category will be used for reading. Figure 6. Data Can be Read Directly from Main Memory or through the Buffers
PAGE
BUFFER 1
BUFFER 1 READ MAIN MEMORY READ
BUFFER 2
BUFFER 2 READ
I/O INTERFACE
SO
Note:
I/O7 - I/O0
(1)
CONTINUOUS ARRAY READ: By supplying an initial starting address for the main memory array, the Continuous Array Read command can be utilized to sequentially read a continuous stream of data from the device by simply providing a clock signal; no additional addressing information or control signals need to be provided. The DataFlash incorporates an internal address counter that will automatically increment on every clock cycle, allowing one continuous read operation without the need of additional address sequences. To perform a continuous read, an opcode of 68H or E8H must be clocked into the device followed by 24 address bits and 32 dont care bits. The first four bits of the 24-bit address sequence are reserved for upward and downward compatibility to larger and smaller density devices (see Notes under Command Sequence for Read/Write Operations diagram). The next 11 address bits (PA10 - PA0) specify which page of the main memory array to read, and the last nine bits (BA8 - BA0) of the 24-bit address sequence specify the starting byte address within the page. The 32 dont care bits that follow the 24 address bits are needed to initialize the read operation. Following the 32 dont care bits, additional clock pulses on the SCK pin will result in serial data being output on the SO (serial output) pin.
10
A main memory read allows the user to read data directly from any one of the 2048 pages, bypassing both of the data buffers and leaving the buffer contents unchanged. To start a page read, an opcode of 52H or D2H is clocked into the device, followed by four Reserved bits, 20 address bits, and 32 dont care bits. The four Reserved bits will be address bits used for future expansion and should be zero to ensure upwards compatibility. The 32 dont care bits are sent to give the DataFlashs state machine time to initialize. When data is read from the main memory, you must specify the page address and the address of the first byte to be read within the page. Specifying the page address requires 11 bits. Specifying the first byte to be read within the page requires nine bits. While reading data from main memory, if the end of the page is reached, the DataFlash will wrap around back to the beginning of the page. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 20 address bits, and 32 dont care bits from the SI pin; at this point data can be read serially from the SO pin. The CS pin must remain low during this entire sequence; a low-to-high transition of the CS pin will terminate the read operation and tri-state the SO pin.
Buffer Read
A buffer read allows the user to read data directly from either of the two buffers. To start a buffer read, a Buffer Read command (54H or D4H for buffer 1, 56H or D6H for buffer 2) is clocked into the device, followed by 15 Reserved bits, nine address bits, and eight dont care bits. The 15 Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. Nine address bits are required to specify the first byte of data to be read from the 264-byte buffer. The eight dont care bits are sent to give the DataFlashs state machine time to initialize. While reading data from a buffer, if the end of the buffer is reached, the DataFlash will wrap around back to the beginning of the buffer. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, 15 Reserved bits, nine address bits, and eight dont care bits from the SI pin; at this point data can be read serially from the SO pin. The CS pin must remain low during this entire sequence; a low-to-high transition of the CS pin will terminate the read operation, and tri-state the SO pin. NOTE: You can read from one buffer while the DataFlashs state machine is transferring data from the other buffer into main memory (Figure 7).
11
0842DDFLSH11/02
PAGE
PAGE
SI
SO
The DataFlashs state machine can automatically transfer data in a main memory page to either buffer 1 or buffer 2. This allows the user to modify one or more bytes of data in a main memory page and then write the modified buffer contents back into main memory. To start a data transfer, a Main Memory Page to Buffer Transfer command (53H for buffer 1, 55H for buffer 2) is followed by four Reserved bits, 11 address bits, and nine dont care bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. The 11 address bits are required to specify the page in main memory that is to be transferred to the selected buffer. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 11 address bits, and nine dont care bits from the SI pin. The data transfer begins when there is a low-to-high transition on the CS pin. You can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the transfer. Refer to the section on the Status Register for details on how to access and interpret the Status Register.
The DataFlashs internal state machine can be used to automatically compare the data in a main memory page to the data in either buffer 1 or buffer 2. This operation is useful after performing a Buffer to Main Memory Page Program or a Main Memory Page Program Command, for verifying that the DataFlash successfully programmed the buffer contents into a main memory page. To start the compare operation, a Main Memory Page to Buffer Compare command (60H for buffer 1, 61H for buffer 2) is followed by four Reserved bits, 11 address bits, and nine dont care bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. The 11 address bits are required to specify the page in main memory that is to be compared with the selected buffer. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 11 address bits, and nine dont care bits from the SI pin. The compare operation begins when there is a low-to-high transition on the CS pin. You can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the compare separation. Refer to the section on the Status Register for details on how to access and interpret the Status Register. NOTE: On completion of the compare operation, the state machine updates the second MSB of the Status Register with the result of the compare.
12
PAGE
BUFFER 1
MAIN MEMORY PROGRAM THROUGH BUFFER 1
BUFFER 2
BUFFER 1 WRITE
BUFFER 2 WRITE
I/O INTERFACE
SI
Note:
I/O7 - I/O0
(1)
13
0842DDFLSH11/02
The DataFlashs state machine can automatically erase a main memory page and then transfer data from either buffer 1 or buffer 2 into that main memory page. This allows the user to quickly write data to a buffer and not have to issue separate commands to preerase a page in the Flash array. You can also use the Buffer to Main Memory Page Program with Built-In Erase command to leave a page in the erased state; to do this, write all 1s to the pages. Before performing the Buffer to Main Memory Page Program operation, use the Buffer Write operation to write the desired data to either buffer. To start the Buffer to Main Memory Page Program with Built-In Erase command, an 8-bit opcode (83H for buffer 1, 86H for buffer 2) is followed by four Reserved bits, 11 address bits, and nine dont care bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. The 11 address bits are required to specify the page in main memory that is to be erased and then written with the buffer contents. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 11 address bits, and nine dont care bits from the SI pin. The erase/program operation begins when there is a low-to-high transition on the CS pin. You can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the self-timed operation. Refer to the section on the Status Register for details on how to access and interpret the Status Register. NOTE: While the state machine is busy transferring data from one buffer to the main memory page, the other buffer may be read from or written to.
The DataFlashs state machine can automatically transfer data from either buffer 1 or buffer 2 into a main memory page that has been previously erased. This operation allows the user to quickly write data to a buffer and not have to wait for relatively long with Built-In Erase Flash memory erase time. Note that the Buffer to Main Memory Page Program without Built-In Erase is approximately 30% faster than the Buffer to Main Memory Page Program with Built-In Erase operation. Before you use the Buffer to Main Memory Page Program without Built-In Erase operation, it is necessary that the main memory page that is being programmed has been previously erased (to erase a page, use the Buffer to Main Memory Page Program with Built-In Erase operation and program in all 1s). Before performing the Buffer to Main Memory Page Program without Built-In Erase operation, use the Buffer Write operation to write the desired data to either buffer. To start the Buffer to Main Memory Page Program without Built-In Erase command, an 8-bit opcode (88H for buffer 1, 89H for buffer 2) is followed by four Reserved bits, 11 address bits, and nine dont care bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. The 11 address bits are required to specify the page in main memory that is to be written with the buffer contents. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 11 address bits, and nine dont care bits from the SI pin. The program operation begins when there is a low-to-high transition on the CS pin. You can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the self-timed operation. Refer to the section on the Status Register for details on how to access and interpret the Status Register. NOTE: While the state machine is busy transferring data from one buffer to the main memory page, the other buffer may be read from or written to.
14
The Main Memory Page Program operation allows you to write to the buffer and transfer the buffer contents to the specified main memory page using a single command. The operation also erases the main memory page before the buffers data is transferred. To start the program operation in main memory, a Main Memory Page Program command (82H for buffer 1, 85H for buffer 2) is followed by four Reserved bits, and 20 address bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. When referencing main memory data, you must specify the page address and the address of the first byte to be written within the buffer. Specifying the page address requires 11 bits. Specifying the first byte to be written within the buffer requires nine bits. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, and 20 address bits from the SI pin. The DataFlash is now ready to take data from the SI pin and store it in the selected data buffer. While writing data to a buffer, if the end of the buffer is reached, the DataFlash will wrap around 15
0842DDFLSH11/02
back to the beginning of the buffer. The CS pin must remain low during this entire sequence; a low-to-high transition of the CS pin will initiate the erase of the selected main memory page to all 1s and then program the data stored in the buffer to that page. Once the main memory page erase/program has begun, you can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the self-timed operation. Refer to the section on the Status Register for details on how to access and interpret the Status Register. NOTE: While the state machine is busy transferring data from one buffer to the main memory page, the other buffer may be read from or written to.
The previous sections note that while the state machine is busy transferring data from one buffer to the main memory page, the other buffer may be read from or written to. This feature of the DataFlash allows a virtually continuous write operation provided each of the buffers is not filled faster than the maximum page erase and program time (data cannot be clocked in at a rate in which the time to fill a buffer is less than the maximum tEP time specified in the datasheet). Figure 9 shows the sequence of events that system software can use. Figure 9. The Buffers Support a Virtually Continuous Write Operation
3. Issue command to transfer data from buffer to main memory. BUFFER 1 2. Write desired number of bytes into buffer. I/O INTERFACE 1. Issue command to write data into either buffer. BUFFER 2 BUFFER 1 5. Write desired number of bytes into buffer. I/O INTERFACE 4. Issue command to write data into alternate buffer. BUFFER 2
SI
SI
Repeat Sequence
Step: Issue a Buffer Write command to write data into either buffer. Step: Write the desired number of bytes into the buffer. Step: Issue a Buffer to Main Memory Page Program command. Step: Issue a Buffer Write command to write data into the alternate buffer. Step: Write the desired number of bytes into the alternate buffer. Step: Monitor RDY/BUSY and when the status indicates that the DataFlash is not busy, issue a Buffer to Main Memory Page Program command (for alternate buffer). Return to step 1.
16
1. Any denotes any one of the four modes of operation (Inactive Clock Polarity Low, Inactive Clock Polarity High, SPI Mode 0, or SPI Mode 3).
17
0842DDFLSH11/02
Table 7. Detailed Bit-level Addressing Sequence for the AT45DB041B (Three-byte Address)
Opcode Address Byte Address Byte Address Byte Additiona l Dont Care Bytes Required N/A 4 Bytes N/A 1 Byte N/A 1 Byte N/A x x x x B x B x B B x B x x B B B x x x x B x B x B B x B x x B B B x x x x B x B x B B x B x x B B B N/A N/A N/A N/A 4 Bytes N/A N/A N/A N/A N/A N/A N/A N/A N/A 4 Bytes 1 Byte 1 Byte N/A B B B 4 Bytes
Reserved
Reserved
Reserved
Reserved
PA10
BA6
BA2
BA8
BA7
BA5
BA4
BA3
BA1
x B x B x B
Opcode 50H 52H 53H 54H 55H 56H 57H 58H 59H 60H 61H 68H 81H 82H 83H 84H 85H 86H 87H 88H 89H D2H D4H D6H D7H E8H 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0
r r r x r x
r r r x r x
r r r x r x
r r r x r x
P P P x P x N/A
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
x P P x P x N/A
x P P x P x
x P P x P x
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B N/A
x B x B x B
r r r r r r r r x r r x r r r x x
r r r r r r r r x r r x r r r x x
r r r r r r r r x r r x r r r x x
r r r r r r r r x r r x r r r x x
P P P P P P P P x P P x P P P x x N/A
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x N/A
P P P P P P P P x P P x P P P x x
P P P P P P P P x P P x P P P x x
x x x x B x B x B B x B x x B B B
x x x x B x B x B B x B x x B B B
x x x x B x B x B B x B x x B B B
x x x x B x B x B B x B x x B B B
x x x x B x B x B B x B x x B B B
x x x x B x B x B B x B x x B B B N/A
Note:
1. r = Reserved Bit P = Page Address Bit B = Byte/Buffer Address Bit x = Dont Care
18
BA0
x B x B x B
PA7
PA9
PA8
PA6
PA5
PA4
PA3
PA2
PA1
PA0
Opcode 50h 53h 54h 55h 56h 60h 61h 81h 84h 87h 88h 89h 98h 99h D2h D4h D6h D7h E8h E9h 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
Opcode 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Additional Dont Care Bytes* N/A N/A 2* N/A 2* N/A N/A N/A N/A N/A N/A N/A N/A N/A 3 or 19* 1 1 I/O or 1* 3 or 19* 3 or 19*
PA10
PA13
PA12
PA11
BA10
BA9
BA8
BA7
BA6
BA5
BA4
BA3
BA2
BA1 x x x x x x x x x x
P P x P x P P P x x P P P P P x x
P P P P P P P P P P P P P P P P x x x x x x x x
P P x
x x
x x
x x
x x
x x
x x
x x
x x
x x
P P P P P x x x x x x
B B B x x
B B B B B B B B x x x x x x x
P P P P P P P P x x x x x x x x
P P P P P x x x x x x
B B B x x x x x x
B B B B B B B B x x x x x x x x x x x x x x x x x x x x x
P P P P P P P P P P P P P P P P P P P P P P P P x x x x x x x x x x x x x x x x
P P P P P x P P P P P x P P P P P x x x x x x x x x x x
B B B B B B x x x x x x x x
B B B B B B B B B B B B B B B B x x x x x x x x x x x x x x x x x x x x x x x x x x x x
P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P x x x x x x x x x x x x x x x x
P P P P P x P P P P P x P P P P P x P P P P P x
P P P P P B B B x x x x x x x x x x B B B B B B
B B B B B B B B B B B B B B B B B B B B B B B B N/A B B B B B B B B B B B B B B B B
N/A x x x x x x x x x x x x x x P P
N/A P P P P P P P P P P P P P P P P
N/A P P P P P B B B P P P P P B B B
Notes:
P = Page Address Bit B = Byte/Buffer Address Bit x = Dont Care *First number is for serial interface, second is for parallel interface.
BA0
PA9
PA8
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
19
0842DDFLSH11/02
The Auto Page Rewrite operation allows the DataFlash to automatically rewrite the contents of a main memory page. This operation is a combination of two operations: Main Memory Page to Buffer Transfer and Buffer to Main Memory Page Program with Built-In Erase. To start the rewrite operation, an Auto Page Rewrite command (58H for buffer 1, 59H for buffer 2) is followed by four Reserved bits, 11 address bits, and nine dont care bits. The four Reserved bits may be used for future expansion and should be zero to ensure upwards compatibility. The 11 address bits are required to specify the page in main memory. After a high-to-low transition occurs on the CS pin, toggling the SCK pin loads the eight opcode bits, four Reserved bits, 11 address bits, and nine dont care bits from the SI pin. When a low-to-high transition occurs on the CS pin, the DataFlash transfers data from the page in main memory to the specified buffer, and then programs the data in the buffer back into the same page of main memory. Once the Auto Page Rewrite operation has begun, you can use the RDY/BUSY pin or the RDY/BUSY bit in the Status Register to determine whether the state machine has completed the self-timed operation. Refer to the section on the Status Register for details on how to access and interpret the Status Register.
Extended Reprogramming
To improve the reprogramming ability of the DataFlash for write intensive applications that do not write in a cyclical, sequential manner, certain guidelines must be followed to preserve the integrity of data stored within the Flash array. A write intensive application can be defined as any application in which thousands of cumulative reprogram (erase/program) operations are performed throughout the course of the products life cycle. Examples are described for sector 0b of 4M device, but the approach is applicable to any sector in the DataFlash family. If the reprogram operations occur in a cyclical, sequential manner within the sector, then no special guidelines need to be followed. That is, if the Flash pages are updated/rewritten beginning with a specific page (e.g., page 9) and continuing sequentially through the next 247 pages (e.g., pages10 - 255 and 8), and cycled again starting back at the original page (e.g., page 9), then no additional algorithms need to be incorporated into the systems microcontroller or microprocessor software. However, if the reprogram operations occur in a random fashion in which any number of pages is updated in a random order, then the system must ensure that each page of the DataFlash sector must be updated/refreshed at least once within every 10,000 cumulative page reprogram operations to other pages within the same sector. Depending on the type of application, different methodologies can be used to accomplish the updating of the Flash array. One method requires that every reprogram operation of a single page be followed by an additional page update. In this scenario, a software controlled pointer would be used to designate which additional page of the Flash array is to be updated. For example, the pointer would initially point to page 8. When the system reprograms a page, say page 12, the system would then issue the Auto Page Rewrite command for page 8 after the completion of the page 12 erase/program operation (tEP). The pointer would then be incremented to point to page 9. When the system reprograms another page, the process would be repeated. When the pointer reaches 255, it would be reset back to 8. Figure 10 illustrates this example.
20
21
0842DDFLSH11/02
OptionalUse if planning to modify multiple bytes currently stored within a page of the Flash memory array.
BUFFER WRITE (84H or 87H) MAIN MEMORY PAGE PROGRAM (82H or 85H) BUFFER TO MAIN MEMORY PAGE PROGRAM (83H or 86H)
NO
YES
Note:
1. PA (First Page) and PA (Last Page) are page address for first and last page in the sector.
22
Initialize Page Address Pointer and Page Counter (1) PA = PA (First Page) and PC = 0
OptionalUse if planning to modify multiple bytes currently stored within a page of the Flash memory array.
BUFFER WRITE (84H or 87H) MAIN MEMORY PAGE PROGRAM (82H or 85H) BUFFER TO MAIN MEMORY PAGE PROGRAM (83H or 86H)
NO
Done modifying Flash pages? YES AUTO PAGE REWRITE (58H or 59H) Use Page Address Pointer (PA) to specify the page to be rewritten.
NO
Is PA = PA (Last Page)?(1)
NO
Is PC = 0?
YES
Note:
1. PA (First Page) and PA (Last Page) are page address for first and last page in the sector.
23
0842DDFLSH11/02
Reset Page Address Pointer and Page Counter (1) PA = PA (First Page) and PC = 0
OptionalUse if planning to modify multiple bytes currently stored within a page of the Flash memory array.
BUFFER WRITE (84H or 87H) MAIN MEMORY PAGE PROGRAM (82H or 85H) BUFFER TO MAIN MEMORY PAGE PROGRAM (83H or 86H)
NO
Is PC = 10,000?
10,000 cumulative page erase/program operations is specified in the 4M Serial DataFlash data sheet as the maximum number of cumulative reprogram operations that can occur to other pages within the same sector before each page of the DataFlash sector must be rewritten. Use Page Address Pointer (PA) to specify the page to be rewritten.
NO
Is PA = PA (Last Page)?(1)
YES
Note:
1. PA (First Page) and PA (Last Page) are page address for first and last page in the sector.
24
A system designer needs to be aware of the possibility of data corruption caused by inadvertent data writes. The DataFlash can have data corruption problems due to glitches, noise spikes, bus contention, etc., which may initiate a false program or erase cycle. The DataFlash provides several mechanisms that can be used to prevent data corruption. As shown in Figure 13, the WP pin of the DataFlash provides hardware-controlled write protection for the first 256 pages of the Flash memory array (address locations 00000H to 1FF07H). When the WP pin is LOW, any attempts (intentional or accidental) to write to the protected region will not affect the previously stored data. However, the erroneous write attempt causes the DataFlash to perform a dummy write cycle (as though a normal write operation had occurred). A HIGH level on the WP pin disables the write protection feature, allowing the system to write to all pages of the Flash array. NOTE: When this write protect feature is enabled, the first 256 pages of the Flash memory array do not have to undergo the rewrite procedure (as described in the Extended Reprogramming section) as long as WP has been held low during the cumulative reprogramming of the main array.
2048 Pages
. . .
256 Pages
25
0842DDFLSH11/02
The DataFlashs RESET pin can be connected to the systems reset line which will keep RESET held low and the DataFlash inactive, until the power supply is within tolerance. When using this approach, you must ensure that the memory wakes up before the CPU issues memory read cycles to it. The DataFlash also incorporates an internal power-on reset circuit; therefore, it is not required to hold RESET low during power-on sequences. The RESET pin is level sensitive and can also be used to protect the entire memory array from inadvertent writes during power outages. The RESET pin can also be used to terminate any operation in progress. When terminating erase or program operations before the specified completion time, the data being erased or programmed cannot be guaranteed.
Dual Interface
DataFlash devices of densities 64M, 128M, 256M offer a dual interface. They can be operated both in the serial and parallel mode. The DataFlash device that has dual interface may be configured to utilize either its serial port or parallel port through the use of the serial/parallel control pin (SER/PAR). When the SER/PAR pin is held high, the serial port (SI and SO) of the DataFlash will be used for all data transfers, and the parallel port (I/O7 - I/O0) will be in a high impedance state. Any data presented on the parallel port while SER/PAR is held high will be ignored. When the SER/PAR is held low, the parallel port will be used for all data transfers, and the SO pin of the serial port will be in a high impedance state. While SER/PAR is low, any data presented on the SI pin will be ignored. Switching between the serial port and parallel port can be done at anytime, provided the following conditions are met: 1. CS should be held high during the switching between the two modes. 2. tSPH (SER/PAR hold time) and tSPS (SER/PAR setup time) requirements should be obeyed. The SER/PAR pin is internally pulled high; therefore, if the parallel port is never to be used, then connection of the SER/PAR pin is not necessary. In addition, if the SER/PAR pin is not connected or if the SER/PAR pin is always driven high externally, then the parallel input/output pins (I/O7 - I/O0), the VCCP pin and the GNDP pin should be treated as dont connects. Having both a serial port and parallel port on the DataFlash allows the device to reside on two buses that can be connected to different processors. The advantage of switching between the serial and parallel ports is that while an internally self-timed operation such as an erase or program operation is started using either of the ports, a simultaneous operation such as a buffer read or buffer write can be started utilizing the other port.
26
PA12
BA10
PA11
PA10
BA9
BA8
BA7
BA6
BA5
BA4
BA3
BA2
Opcode 50H 52H 53H 54H 55H 56H 57H 58H 59H 60H 61H 68H 69H 81H 82H 83H 84H 85H 86H 87H 88H 89H D2H D4H D6H D7H E8H E9H
Opcode
0 1 0 1 0 0 0 0 P 0 1 0 1 0 0 1 0 P 0 1 0 1 0 0 1 1 P 0 1 0 1 0 1 0 0 x 0 1 0 1 0 1 0 1 P 0 1 0 1 0 1 1 0 x 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 P 0 1 0 1 1 0 0 1 P 0 1 1 0 0 0 0 0 P 0 1 1 0 0 0 0 1 P 0 1 1 0 1 0 0 0 P 0 1 1 0 1 0 0 1 P 1 0 0 0 0 0 0 1 P 1 0 0 0 0 0 1 0 P 1 0 0 0 0 0 1 1 P 1 0 0 0 0 1 0 0 x 1 0 0 0 0 1 0 1 P 1 0 0 0 0 1 1 0 P 1 0 0 0 0 1 1 1 x 1 0 0 0 1 0 0 0 P 1 0 0 0 1 0 0 1 P 1 1 0 1 0 0 1 0 P 1 1 0 1 0 1 0 0 x 1 1 0 1 0 1 1 0 x 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 P 1 1 1 0 1 0 0 1 P
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
P P P x P x
x P P x P x
x P P x P x
x P P x P x
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
x B x B x B
BA1
PA9
PA8
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
x B x B x B
N/A
P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x N/A P P P P P P P P P P P P P P P P P P P P P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x
N/A
P P P P P P P P P x P P x P P P x x P P P P P P P P P x P P x P P P x x N/A P P P P B B B B B B B B B B B B x x x x B B x B x B B x B x x B B B x x x x B B x B x B B x B x x B B B x x x x B B x B x B B x B x x B B B x x x x B B x B x B B x B x x B B B x x x x B B x B x B B x B x x B B B x x x x B B x B x B B x B x x B B B x x x x
N/A
x x x x B B x B x B B x B x x B B B N/A B B B B
B B x B x B B x B x x B B B
Note:
BA0
27
0842DDFLSH11/02
System Considerations
DataFlash is controlled by the clock SCK/CLK and chip select CS pins. These signals must rise and fall monotonically and be free from noise. Excessive noise or ringing on these pins can be misinterpreted as multiple edges and cause improper operation of the device. The PC board traces must be kept to a minimum distance or appropriately terminated to ensure proper operation. If necessary, decoupling capacitors can be added on these pins to provide filtering against noise glitches. Adding a capacitor of 100 pF on the SCK/CLK, CS and SI pins can minimize noise present on the SCK/CLK, CS and SI signals. To filter the different levels of noise present on the VCC signal, capacitors of values 1 F, 0.1 F and 0.01 F can be used in parallel. The user can choose a different value of the capacitor to be added on the SCK/CLK, CS, SI, VCC signals depending on the system requirement. If there is no noise present on the SCK/CLK, VCC, CS and SI signals, the DataFlash will function correctly. Figure 14. System Considerations
SCK/CLK
100 pF
SO
CS
100 pF
DATAFLASH VCC
1 F 0.1 F 0.01 F
I/O7 - I/O0
(1)
SI
100 pF
Note:
Table 10. Recommended Capacitance Values on the SCK/CLK, CS, VCC and SI Pins
Signal SCK/CLK CS SI VCC Capacitance 100 pF 100 pF 100 pF 1 F + 0.1 F +0.01 F (To be Connected in Parallel)
As system complexity continues to increase, voltage regulation is becoming more important. A key element of any voltage regulation scheme is its current sourcing capability. Like all Flash memories, the peak currents of DataFlash occur during the programming and erase operations. The peak current during programming or erase of a DataFlash can be 70 mA to 80 mA. The regulator needs to supply this peak current requirement. An under specified regulator can cause current starvation. Besides increasing system noise, current starvation during programming or erase can lead to improper operation and possible data corruption. 28
29
0842DDFLSH11/02
Atmel Headquarters
Corporate Headquarters
2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 487-2600
Atmel Operations
Memory
2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 436-4314
RF/Automotive
Theresienstrasse 2 Postfach 3535 74025 Heilbronn, Germany TEL (49) 71-31-67-0 FAX (49) 71-31-67-2340 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906 TEL 1(719) 576-3300 FAX 1(719) 540-1759
Europe
Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland TEL (41) 26-426-5555 FAX (41) 26-426-5500
Microcontrollers
2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 436-4314 La Chantrerie BP 70602 44306 Nantes Cedex 3, France TEL (33) 2-40-18-18-18 FAX (33) 2-40-18-19-60
Asia
Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimshatsui East Kowloon Hong Kong TEL (852) 2721-9778 FAX (852) 2722-1369
ASIC/ASSP/Smart Cards
Zone Industrielle 13106 Rousset Cedex, France TEL (33) 4-42-53-60-00 FAX (33) 4-42-53-60-01 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906 TEL 1(719) 576-3300 FAX 1(719) 540-1759 Scottish Enterprise Technology Park Maxwell Building East Kilbride G75 0QR, Scotland TEL (44) 1355-803-000 FAX (44) 1355-242-743
Japan
9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan TEL (81) 3-3523-3551 FAX (81) 3-3523-7581
e-mail
[email protected]
Web Site
http://www.atmel.com
Atmel Corporation 2002. Atmel Corporation makes no warranty for the use of its products, other than those expressly contained in the Companys standard warranty which is detailed in Atmels Terms and Conditions located on the Companys web site. The Company assumes no responsibility for any errors which may appear in this document, reserves the right to change devices or specifications detailed herein at any time without notice, and does not make any commitment to update the information contained herein. No licenses to patents or other intellectual property of Atmel are granted by the Company in connection with the sale of Atmel products, expressly or by implication. Atmels products are not authorized for use as critical components in life support devices or systems. ATMEL and DataFlash are the registered trademarks of Atmel. MCS -51 is the registered trademark of Intel Corporation. Other terms and product names may be the trademarks of others.