View detail for Interfacing AT24CXX Serial EEPROMs with AT89LP MCUs

Interfacing AT24CXX Serial EEPROMs with
AT89LP Microcontrollers
Features
• Examples Routine to Read/Write Atmel AT24CXX Serial EEPROMs
• Assembly Source Provided
• Applicable to any AT89LP Microcontroller without TWI
8051 Flash
Microcontroller
1. Introduction
Serial memory devices offer significant advantages over parallel devices in applications where lower data transfer rates are acceptable. In addition to requiring less
board space, serial devices allow microcontroller I/O pins to be conserved. This is
especially valuable when adding external memory to low-pin count microcontrollers
such as the Atmel® AT89LP2052 and AT89LP4052.
Application Note
This application note presents a suite of software routines which may be incorporated
into a user’s application to allow an AT89LP microcontroller to read and write
AT24CXX serial EEPROMs. The software supports all members of the AT24CXX
family, and may easily be modified for compatibility with any of the Atmel 8051-code
compatible microcontrollers.
2. Hardware
A typical interconnection between an AT89LP microcontroller and an AT24CXX serial
EEPROM is shown in Figure 3-1. As indicated in Figure 3-1, up to eight members of
the AT24CXX family may share the bus, utilizing the same two microcontroller I/O
pins. Each device on the bus must have its address inputs (A0, A1, A2) hard-wired to
a unique address. In Figure 3-1, the first device recognizes address zero (A0, A1, A2
tied low), while the eighth recognizes address seven (A0, A1, A2 tied high). Not all
members of the AT24CXX family recognize all three address inputs, limiting the number of some devices which may be present to less than eight. The exact number of
devices of each type which may share the bus is shown in Table 2-1.
Table 2-1.
Device
AT24C11
Atmel 2-Wire Serial EEPROM Family
Size (Bytes)
Page Size
(Bytes)
Max Per Bus
Addresses
Used
1K
4
1
None
AT24C01A
1K
8
8
A0, A1, A2
AT24C02
2K
8
8
A0, A1, A2
AT24C04
4K
16
4
A1, A2
AT24C08A
8K
16
2
A2
AT24C16A
16K
16
1
None
AT24C164
16K
16
8
A0, A1, A2
AT24C32A
32K
32
8
A0, A1, A2
AT24C64A
64K
32
8
A0, A1, A2
0507F–MICRO–6/11
Table 2-1.
Atmel 2-Wire Serial EEPROM Family
AT24C128
128K
64
4
A0, A1
AT24C128B
128K
64
8
A0, A1, A2
AT24C256
256K
64
4
A0, A1
AT24C256B
256K
64
8
A0, A1, A2
AT24C512
512K
128
4
A0, A1
AT24C512B
512K
128
8
A0, A1, A2
AT24C1024
1M
256
2
A1
3. Bi-directional Data Transfer Protocol
The Bi-directional Data Transfer Protocol utilized by the AT24CXX family allows a number of
compatible devices to share a common 2-wire bus. The bus consists of a serial clock (SCL) line
and a serial data (SDA) line. The clock is generated by the bus master and data is transmitted
serially on the data line, most significant bit first, synchronized to the clock. The protocol supports bi-directional data transfers in 8-bit bytes.
In this application, the microcontroller serves as the bus master, initiating all data transfers and
generating the clock which regulates the flow of data. The serial devices present on the bus are
considered slaves, accepting or sending data in response to orders from the master.
The bus master initiates a data transfer by generating a start condition on the bus. This is followed by transmission of a byte containing the device address of the intended recipient. The
device address consists of a 4-bit fixed portion and a 3-bit programmable portion. The fixed portion must match the value hard-wired into the slave, while the programmable portion allows the
master to select between a maximum of eight slaves of similar type on the bus.
The AT24CXX serial EEPROMs respond to device addresses with a fixed portion equal to
“1010” and a programmable portion matching the address inputs (A0, A1, A2). Not all members
of the AT24CXX family examine all three address inputs; Figure 3-1 shows which of the three
address inputs are valid for each member of the family.
2
Interfacing AT24CXX Serial EEPROMs
0507F–MICRO–6/11
Interfacing AT24CXX Serial EEPROMs
Figure 3-1.
Typical Circuit Configuration
XTAL2
XTAL1
AT89LP2052
The eighth bit in the device address byte specifies a write or read operation. After the eighth bit
is transmitted, the master releases the data line and generates a ninth clock. If a slave has recognized the transmitted device address, it will respond to the ninth clock by generating an
acknowledge condition on the data line. A slave which is busy when addressed may not generate an acknowledge. This is true for the AT24CXX when a write operation is in progress.
Following receipt of the slave’s address acknowledgment, the master continues with the data
transfer. If a write operation has been ordered, the master transmits the remaining data, with the
slave acknowledging receipt of each byte. If the master has ordered a read operation, it releases
the data line and clocks in data sent by the slave. After each byte is received, the master generates an acknowledge condition on the bus. The acknowledge is omitted following receipt of the
last byte. The master terminates all operations by generating a stop condition on the bus. The
master may also abort a data transfer at any time by generating a stop condition.
Refer to the AT24CXX family datasheets for detailed information on AT24CXX device operation
and Bi-directional Data Transfer Protocol bus timing.
The software for this application may be obtained by downloading from the Atmel Web Site.
3
0507F–MICRO–6/11
Atmel Corporation
2325 Orchard Parkway
San Jose, CA 95131
USA
Tel: (+1) (408) 441-0311
Fax: (+1) (408) 487-2600
www.atmel.com
[email protected]
Atmel Asia Limited
Unit 01-5 & 16, 19F
BEA Tower, Millennium City 5
418 Kwun Tong Road
Kwun Tong, Kowloon
HONG KONG
Tel: (+852) 2245-6100
Fax: (+852) 2722-1369
Atmel Munich GmbH
Business Campus
Packring 4
D-85748 Garching b. Munich
GERMANY
Tel: (+49) 89-31970-0
Fax: (+49) 89-3194621
Atmel 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
© 2010 Atmel Corporation. All rights reserved.
Atmel®, Atmel logo and combinations thereof, and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other
terms and product names may be trademarks of others.
Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted
by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDITIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES
NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING
OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with
respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel
does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive
applications. Atmel’s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life.
0507F–MICRO–6/11