The Datasheet Archive - 100 Million Datasheets from 7500 Manufacturers.    


Datasheet Search Engine   
 
Part # or Description: • 5V RS232 Driver • 2SC5066* • "Real Time Clock" • "USB connector" • "blue led" 5mm • 10 watt zener diode • 2N3055* motorola
 
Search Tip: Try entering the part number only. Include a wildcard (eg. lm317* or 1n4148*)

 

 

Interfacing 400KHz X24129 Serial EEPROM Motorola 68HC11 Microcontrolle


Datasheet Thumbnail

  

Download PDF



Top Searches for this datasheet



This application note demonstrates Xicor X24129 Serial EEPROM interfaced 68HC11 microcontroller family when connected shown Figure interface uses general
Interfacing 400KHz X24129 Serial EEPROM Motorola 68HC11 Microcontroller
purpose port pins interface serial memory. 68HC11 assembly code listing this application note obtained from Xicor website http:// www.xicor.com
Figure Typical hardware connection interfacing X24129EEPROM 68HC11 microcontroller.
October, 2000
www.xicor.com
DESCRIPTION: This file contains general utility routines written 68HC11 assembly language used interface M68HC11 XICOR Two-wire X24129 Serial E2PROM. interface between 68HC11 X24129 device consists clock (SCL) bidirectional data line (SDA). communication interface uses pins from Port D(PD3 SDA). Other components reside this provided that they have same device identifier byte Serial E2PROM. following table lists subroutines this file with brief description: START: Generate start condition STOP: Generate stop condition RESET: Issues appropriate commands force device reset ProgPage: Transfer from buffer serial memory page ProgByte: Transfer from buffer serial memory byte SeqRead: Read multiple bytes, starting from current address pointer RandomRead: Read byte from specific memory location ACKPoll: Return when write cycle completes. OutACK: Process acknowledge output cycle GetACK: process acknowledge from slave device Main program loop programs test string into Serial E2PROM. After entire string programmed, content programmed page read. read data stored internal RAM. utility program written verify that buffer content matches test string. INTERNAL RAMBASE RAMBuff STACK $0000 INTERNAL BASE ADDRESS(Default) RAMBASE BUFFER ADDRESS RAMBASE+$FF
PROGRAM CONSTANTS DWOM SDAbit SCLbit PageNO RWEL WPEN WELon RWELon 00000010b 00000110b PORT CONTROL PORT BITS FUNCTIONING BIDIRECTIONAL SERIAL DATA (SDA) SERIAL CLOCK (SCL) PAGE NUMBER SERIAL MEMORY BITs POSITION POSITION RWEL POSITION WPEN POSITION CONTROL BYTE RWEL CONTROL BYTE
October, 2000
www.xicor.com
MaxDelay SeqReadSize $1000 NUMBER TIMES CHECK ACKNOWLEDGE POLLING BYTE COUNTS SHIFT USING READ
DeviceID HiADDRmask WPR_ADDR PageSize
$FFFF
DEVICE SELECT SHIFTED RIGHT MASK UPPER ADDRESS BYTE PHYSICAL ADDRESS LOCATION (BYTE ACCESS) BYTES PAGE
INTERNAL REGISTERS CONTROL BLOCK PORTD DDRD SPCR PORT DATA REGISTER DATA DIRECTION REGISTER PORT CONTROL REGISTER
RESET VECTOR ENTRY POINT $FFFE $E000 RESET VECTOR ADDRESS PROGRAM ENTRY JUMP BEGINNING EXECUTABLE CODE
ASSEMBLER REQUIREMENT- TYPE P68H11
START USER CODE $E000 MAIN: #STACK
LOAD STACK POINTER
INITIALIZE BUFFER BEFORE PROGRAMMING CONTENT PAGE InitRAM: ldaa staa tsta bset ldaa staa ldaa #RAMBuff #TestString BUFFER ADDRESS TEST STRING ADDRESS COPY TEST STRING BUFFER
InitRAM #$1000 SPCR,X,#DWOM #$0C DDRD,X #$FF
REGISTER BASE CONFIG. PORT-D OPEN DRAIN CONFIGURE PORT
October, 2000
www.xicor.com
staa PORTD,X Reset RESET INTERFACE STATE MACHINE #WPR_ADDR READ CONTENT FIND RandomRead BLOCKS THAT LOCKED. BOTH bita #WPEN WPEN HIGH THEN WPEN_OFF BITS PROTECTED (WRITES WARNING PERMITTED WHEN BROUGHT LOW). MAKE SURE THAT BEFORE ATTEMPTING WRITE VALUE WHEN WPEN SET. WPEN_OFF: bita #BLX SKIP BITS NO_BLX CLEAR BLOCKS PROTECTED) clra CLEAR BLOCK LOCK BITS (UNPROTECT ProgBL ENTIRE DEVICE), WAIT ACKPoll WRITE OPERATION COMPLETE NO_BLX: SetWEL WRITE ENABLE #WPR_ADDR READ CONTENT RandomRead CHECK THAT bita #WEL HIGH WRITES_EN ELSE FAILURE CHECK DEVICE/CONNECTIONS*STOP* WRITES_EN: #PageNO PAGE NUMBER SERIAL MEMORY #RAMBuff BUFFER ADDRESS ProgPage TRANSFER BUFFER CONTENT PAGE ACKPoll WAIT TILL COMPLETION PAGE PROG. #RAMBuff BUFFER ADDRESS ldaa #$58 LOAD DATE WRITTEN staa REGISTER, ASCII #PageNO LOAD ADDRESS ACCUM ProgByte TRANSFER BUFFER CONTENT BYTE ACKPoll WAIT TILL COMPLETION BYTE PROG. ClrWEL RESET WRITE ENABLE #PageNO PAGE NUMBER SERIAL MEMORY #RAMBuff BUFFER ADDRESS RandomRead SETUP ADDRESS POINTER READ staa FIRST BYTE, SAVE BUFFER ADJUST BUFFER POINTER ldaa #.HIGH.PageNO LOAD UPPER BYTE ADDRESS ldab #$20 SPECIFY BYTE COUNT SEQ. READ SeqRead READ/STORE REMAINING DATA MAIN Name: SeqRead Description: Read sequentially from serial memory Function: This subroutine extracts contents serial memory stores them into specified buffer. total number bytes read should provided along with buffer address. This routine assumes that address pointer already been initialized using InByte routine. Calls: Start, SlavAddr, InByte, OutACK, StopRead Input: Buffer Base Address, High Order Address
October, 2000
www.xicor.com
Number bytes read Output: None Register Usage: SeqRead: Start START [C=1] READ OPERATION SlavAddr SEND SLAVE ADDRESS BYTE SeqReadNxt: InByte START READING FROM CURRENT ADDRESS staa TOTAL NUMBER BYTES READ SERIAL MEMORY decb SeqReadEnd OutACK SEND ACKNOWLEDGE DEVICE SeqReadNxt SeqReadEnd: StopRead READ OPERATION Name: RandomRead Description: Reads content serial memory specific location. Function: This subroutine sends command read content memory location specified register. Calls: Start, InByte, SlavAddr, OutByte, StopRead Input: Address byte Output: Read value Register Usage: RandomRead: psha SAVE ADDRESS STACK Start START [C=0] WRITE OPERATION SlavAddr SEND SLAVE ADDRESS BYTE pula RETRIEVE ADDRESS FROM STACK OutByte LOAD UPPER BYTE PAGE LOAD LOWER BYTE PAGE OutByte ADDRESS SHIFT DEVICE Start START [C=1] READ OPERATION SlavAddr SEND SLAVE ADDRESS BYTE InByte SHIFT BYTE FROM DEVICE StopRead OPERATION Name: StopRead Description: Terminate read operation Function: This subroutine called read operation. routine generates last clock cycle followed stop command. last clock cycle differs from normal that line held high. This action notifies serial memory that should suspend operation. Calls: ClockPulse, Stop Input: None Output: None
October, 2000
www.xicor.com
Register Usage: None StopRead: bset PORTD,X,#SDAbit MAKE SURE THAT DATA LINE HIGH bset DDRD,X,#SDAbit CHANGE DIRECTION OUTPUT ClockPulse Stop OPERATION
Name: ProgPage Description: Update page serial memory Function: This subroutine transfers contents given buffer serial memory. caller program must supply page number serial memory update base address buffer. Calls: Start, SlavAddr, OutByte, Stop Input: Buffer Base Address, D(AB) Page Number Output: None Register Usage: ProgPage: psha SAVE ADDRESS STACK Start START [C=0] WRITE OPERATION SlavAddr SEND SLAVE ADDRESS BYTE pula RETRIEVE ADDRESS FROM STACK OutByte LOAD UPPER BYTE PAGE ADDRESS LOAD LOWER BYTE PAGE ADDRESS anda #$0E0 MASK UNWANTED LOWER BITS OutByte SHIFT DEVICE ldab #PageSize TRANSFER CONTENT BUFFER ProgPageNxt: ldaa SERIAL MEMORY MEMORY OutByte SHOULD POINTING BUFFER ldaa #$0FF COVER YOUR TRACKS BUFFER staa READ STORED SERIAL MEMORY TOTAL NUMBER BYTES TRANSFERED decb SERIAL MEMORY SHOULD EXCEED ProgPageNxt PAGE SIZE Stop OPERATION
Name: ProgByte Description: Update byte serial memory Function: This subroutine transfers byte located register serial memory. Calls: Start, SlavAddr, OutByte, Stop Input: Buffer Base Address, Output: None Register Usage: ProgByte:
October, 2000
www.xicor.com
psha pula ldaa Start SlavAddr OutByte OutByte OutByte Stop SAVE ADDRESS STACK START [C=0] WRITE OPERATION SEND SLAVE ADDRESS BYTE RETRIEVE ADDRESS FROM STACK LOAD UPPER BYTE PAGE ADDRESS LOAD LOWER BYTE PAGE ADDRESS SHIFT DEVICE SERIAL MEMORY MEMORY SHOULD POINTING BYTE DATA OPERATION
Name: EnProgWPR Description: Enable updates Write Protect Register (WPR) Function: This subroutine writes appropriate sequence serial memory enable updating WPR. ProgWPEN ProgBL routines must call this subroutine before writes allowed. Once this sequence activated, only exit this mode writing resetting serial memory. Calls: RandomRead, SetWEL, SetRWEL Input: None Output: INITIAL VALUE Register Usage: EnProgWPR: #WPR_ADDR READ CONTENT RandomRead TEST STATUS bita #WEL ProgWPR_1 SKIP psha WRITES DISALLOWED SetWEL WHEN CLEAR, SEND pula COMMAND ProgWPR_1: bita #RWEL CHECK RWEL ProgWPR_2 SKIP psha WRITING BLOCK-LOCK BITS WPEN SetRWEL REQUIRE THAT RWEL SET, pula SEND RWEL COMMAND ProgWPR_2:
Name: ProgBL Description: Update Block Lock bits serial memory Function: This subroutine writes serial memory changes BL1:0. caller program must supply values BL1:0 bits. This routine retains original state WPEN bit. Calls: AddrWPR, EnProgWPR, OutByte, Stop Input: A[1:0] BL[1:0] Output: None Register Usage:
October, 2000
www.xicor.com
ProgBL: anda #$03 MASK UNWANTED BITS asla SHIFT BITS asla POSITIONS asla psha SAVE VALUES EnProgWPR ENABLE WRITING anda #$9A CREATE DATA PATTERN MASKING oraa #$02 DESIRED PATTERN SAVING STATUS WPEN oraa BITS REQUESTED PATTERN staa SAVE VALUE ONTO STACK AddrWPR GENERATE WRITE COMMAND pula SHIFT PATTERN OutByte DEVICE Stop
Name: ProgWPEN Description: Update Write Protect Enable serial memory Function: This subroutine writes serial memory changes WPEN bit. caller program must supply value WPEN bit. state BL1:0 bits preserved. Calls: AddrWPR, EnProgWPR, OutByte, Stop Input: Output: None Register Usage: ProgWPEN: clra LOAD STATUS FLAGS rora MASK UNWANTED BITS psha SAVE WPEN VALUE EnProgWPR ENABLE WRITING anda #$9A CREATE DATA PATTERN MASKING oraa #$02 DESIRED PATTERN SAVING STATUS WPEN oraa WPEN REQUESTED staa SAVE VALUE ONTO STACK AddrWPR GENERATE WRITE COMMAND pula SHIFT PATTERN OutByte DEVICE Stop Name: SetWEL Description: Write Enable Latch (WEL) serial memory. Function: This subroutine writes serial memory sets bit. Calls: AddrWPR, OutByte, Stop Input: NONE Output: NONE Register Usage:
October, 2000
www.xicor.com
SetWEL: ldaa AddrWPR #WELon OutByte Stop GENERATE WRITE COMMAND SHIFT WEL-ON PATTERN DEVICE
Name: ClrWEL Description: Reset Write Enable Latch (WEL) serial memory. Function: This subroutine writes serial memory resets bit. Calls: AddrWPR, OutByte, Stop Input: NONE Output: NONE Register Usage: ClrWEL: AddrWPR GENERATE WRITE COMMAND clra SHIFT WEL-OFF PATTERN OutByte DEVICE Stop
Name: SetRWEL Description: Register Write Enable Latch serial memory. Function: This subroutine writes serial memory sets RWEL bit. Calls: AddrWPR, OutByte, Stop Input: NONE Output: NONE Register Usage: SetRWEL: AddrWPR GENERATE WRITE COMMAND ldaa #RWELon SHIFT RWEL-ON PATTERN OutByte DEVICE Stop
Name: AddrWPR Description: Initiate write operation serial memory. Function: This subroutine issues address write instruction serial memory. Calls: Start, SlavAddr, OutByte Input: NONE Output: NONE Register Usage: AddrWPR: #WPR_ADDR psha SAVE ADDRESS STACK
October, 2000
www.xicor.com
Start SlavAddr pula OutByte OutByte START OPERATION [C=0] WRITE OPERATION SEND SLAVE ADDRESS BYTE RETRIEVE ADDRESS FROM STACK LOAD UPPER BYTE ADDRESS LOAD LOWER BYTE ADDRESS SHIFT DEVICE
Name: SlavAddr Description: Build slave address serial memory. Function: This subroutine concatenates fields Device high address bits command bit. resultant byte then transmitted serial memory. Calls: OutByte Input: D(AB) Page number COMMAND WRITE, READ) Output: None Register Usage: SlavAddr: ldaa #$50 LOAD DEVICEID INTO ACCUM rola MERGE COMMAND OutByte SEND SLAVE ADDRESS Name: OutByte Description: Sends byte serial memory Function: This subroutine shifts byte, first, through assigned SDA/SCL lines port Calls: ClockPulse, GetACK Input: Byte sent Return Value: None Register Usage: OutByte: bset DDRD,X,#SDAbit OutByteNxt: rola OutByte0 bset PORTD,X,#SDAbit OutByte1 OutByte0: bclr PORTD,X,#SDAbit OutByte1: ClockPulse cmpa #10000000b OutByteNxt GetACK
CHANGE DIRECTION OUTPUT
SHIFT BYTE, FIRST
CLOCK DATA INTO SERIAL MEMORY MEMORY LOOP BITS HAVE BEEN SHIFTED CHECK FROM DEVICE
October, 2000
www.xicor.com
Name: InByte Description: Shifts byte from serial memory Function: This subroutine shifts byte, first, through assigned SDA/SCL lines port After byte received this subroutine does send serial memory. Calls: ClockPulse Input: None Return Value: Received byte Register Usage: InByte: ldaa #00000001b bclr DDRD,X,#SDAbit CHANGE DIRECTION INPUT InByteNxt: ClockPulse CLOCK SERIAL MEMORY MEMORY SHIFT rola INTO ACC. LOGIC LEVEL InByteNxt LINE. DEVICE OUTPUTS DATA SDA, FIRST Name: ClockPulse Description: Generate clock pulse Function: This subroutine forces high-low transition assigned line port also samples line state during high clock period. Calls: None Input: None Return Value: line status Register Usage: None ClockPulse: bset PORTD,X,#SCLbit FORCE LINE HIGH. BASED 8MHz CRYSTAL FREQ. SYSTEM CYCLE TIME MICROSEC. brclr PORTD,X,#SDAbit,ClockPulseLo ClockPulseLo: bclr PORTD,X,#SCLbit LOWER CLOCK LINE
Name: OutACK Description: Send serial memory Function: This subroutine changes direction port then clocks serial memory. cycle acknowledges properly received data lowering line during this period (9th clock cycle received byte). direction programmed input prior returning caller. Calls: ClockPulse Input: None
October, 2000
www.xicor.com
Return Value: None Register Usage: None OutACK: bclr PORTD,X,#SDAbit MAKE SURE THAT DATA LINE bset DDRD,X,#SDAbit CHANGE DIRECTION OUTPUT ClockPulse Name: GetACK Description: Clock serial memory cycle Function: This subroutine changes direction port then clocks serial memory. returnes sampled logic level during high clock cycle. serial memory acknowledges properly received command/data lowering line during this period (9th clock cycle transmitted byte). state HIGH, signifies that either receive correct number clocks it's stuck previously initiated write command, Calls: ClockPulse Input: None Return Value: ACKnowledge Register Usage: None GetACK: bclr DDRD,X,#SDAbit CHANGE DIRECTION INPUT ClockPulse CLOCK SERIAL MEMORY bset DDRD,X,#SDAbit CHANGE DIRECTION OUTPUT
Name: ACKPoll Description: Wait from serial memory Function: This subroutine sends slave address serial memory monitors signal. returns logic level detected during high clock cycle acknowledge cycle. serial memory does respond commands with acknowledge while store operation progress. received another slave address sent serial memory. number iteration specified MaxDelay constant. Calls: Start, SlavAddr, Stop Input: None Return Value: ACKnowledge received] Register Usage: ACKPoll: #MaxDelay LOAD POLLING CYCLE ACKPollnxt: Start START POLL CYCLE #PageNO PAGE NUMBER SERIAL MEMORY [C=0] WRITE OPERATION SlavAddr SEND SLAVE ADDRESS. THEN
October, 2000
www.xicor.com
Stop ACKPollExit ACKPollnxt ACKPollExit: OPERATION STOP CONDITION. EXIT RECEIVED LOOP WHILE MAXIMUM CYCLES
Name: Start Description: Send start command serial memory Function: This subroutine generates start condition bus. start condition defined high-low transition line while high. start used beginning transactions. Calls: None Input: None Return Value: None Register Usage: None Start: bset PORTD,X,#SDAbit FORCE LINE HIGH bset PORTD,X,#SCLbit FORCE CLOCK LINE HIGH bclr PORTD,X,#SDAbit BEFORE TAKING bclr PORTD,X,#SCLbit FORCE Name: Stop Description: Send stop command serial memory Function: This subroutine generates stop condition bus. stop condition defined low-high transition line while high. stop used indicate current transaction. Calls: None Input: None Return Value: None Register Usage: None Stop: bclr PORTD,X,#SDAbit FORCE BEFORE TAKING bset PORTD,X,#SCLbit CLOCK LINE HIGH bset PORTD,X,#SDAbit FORCE HIGH (IDLE STATE)
Name: Reset
October, 2000
www.xicor.com
Description: Resets serial memory Function: This subroutine written worst case. System interruptions caused brownout soft error conditions that reset main have effect internal sensor reset circuit serial memory. These unpredictable random events that leave serial memory interface logic unknown state. Issuing Stop command sufficient reset serial memory. Calls: Start, Stop Input: None Return Value: None Register Usage: Reset: ldab #$0A APPLY CLOCKS DEVICE. EACH ResetNxt: Start CYCLE CONSISTS START/STOP Stop THIS WILL TERMINATE PENDING WRITE decb COMMAND PROVIDES ENOUGH CLOCKS ResetNxt UNSHIFTED BITS READ OPERATION TestString: 'xICOR MAKES MEMORABLE!'
X24320/640/128 SERIAL MEMORY INTERTERFACE SOURCE CODE
October, 2000
www.xicor.com

Other recent searches


STF7N95K3 - STF7N95K3   STF7N95K3 Datasheet
STP7N95K3 - STP7N95K3   STP7N95K3 Datasheet
STW7N95K3 - STW7N95K3   STW7N95K3 Datasheet
SPN4412 - SPN4412   SPN4412 Datasheet
Si3455DV - Si3455DV   Si3455DV Datasheet
LCD402 - LCD402   LCD402 Datasheet
LBS19902 - LBS19902   LBS19902 Datasheet
KM-23SRD-F - KM-23SRD-F   KM-23SRD-F Datasheet
ICS1738 - ICS1738   ICS1738 Datasheet
CP0603 - CP0603   CP0603 Datasheet
BUL216 - BUL216   BUL216 Datasheet
BA3306 - BA3306   BA3306 Datasheet

 

Privacy Policy | Disclaimer
© 2012 Datasheet Archive