![](http://datasheet.mmic.net.cn/170000/S71WS512ND0BAWEH_datasheet_9723329/S71WS512ND0BAWEH_41.png)
December 3, 2005 S29WS-N_m0_I0
39
Pr elim ina r y
1RWHV
%DVH
%DVH $GGUHVV
/DVW
/DVWF\FOHRI ZULWHEXIIHU SURJUDPRSHUDWLRQ GHSHQGLQJRQ QXPEHU RI
ZRUGVZULWWHQ WKH WRWDOQXPEHU RI F\FOHVPD\ EHIURP WR
)RUPD[LPXPHIILFLHQF\LW LVUHFRPPHQGHG WKDWWKH ZULWHEXIIHUEH ORDGHG ZLWK
WKH KLJKHVWQXPEHU RI ZRUGV1ZRUGVSRVVLEOH
7KH IROORZLQJ LV D & VRXUFH FRGH H[DPSOH RI XVLQJ WKH ZULWH EXIIHU SURJUDP IXQFWLRQ 5HIHU WR WKH
6SDQVLRQ /RZ /HYHO 'ULYHU 8VHUV *XLGH DYDLODEOH RQ ZZZDPGFRP DQG ZZZIXMLWVXFRP IRU
JHQHUDO LQIRUPDWLRQRQ 6SDQVLRQ)ODVKPHPRU\VRIWZDUH GHYHORSPHQWJXLGHOLQHV
/* Example: Write Buffer Programming Command
*/
/* NOTES: Write buffer programming limited to 16 words. */
/*
All addresses to be written to the flash in
*/
/*
one operation must be within the same flash
*/
/*
page. A flash page begins at addresses
*/
/*
evenly divisible by 0x20.
*/
UINT16 *src = source_of_data;
/* address of source data
*/
UINT16 *dst = destination_of_data;
/* flash destination address
*/
UINT16 wc
= words_to_program -1;
/* word count (minus 1)
*/
*( (UINT16 *)base_addr + 0x555 ) = 0x00AA;
/* write unlock cycle 1
*/
*( (UINT16 *)base_addr + 0x2AA ) = 0x0055;
/* write unlock cycle 2
*/
*( (UINT16 *)sector_address )
= 0x0025;
/* write write buffer load command */
*( (UINT16 *)sector_address )
= wc;
/* write word count (minus 1)
*/
loop:
*dst = *src; /* ALL dst MUST BE SAME PAGE */ /* write source data to destination */
dst++;
/* increment destination pointer
*/
src++;
/* increment source pointer
*/
if (wc == 0) goto confirm
/* done when word count equals zero */
wc--;
/* decrement word count
*/
goto loop;
/* do it again
*/
confirm:
*( (UINT16 *)sector_address )
= 0x0029;
/* write confirm command
*/
/* poll for completion */
/* Example: Write Buffer Abort Reset */
*( (UINT16 *)addr + 0x555 ) = 0x00AA;
/* write unlock cycle 1
*/
*( (UINT16 *)addr + 0x2AA ) = 0x0055;
/* write unlock cycle 2
*/
*( (UINT16 *)addr + 0x555 ) = 0x00F0;
/* write buffer abort reset
*/
Software Functions and Sample Code
Table 10.15.
Write Buffer Program
//')XQFWLRQV8VHG
OOGB:ULWH7R%XIIHU&PGOOGB3URJUDP%XIIHU7R)ODVK&PG
Cycle
Description
Operation
Byte Address
Word Address
Data
8QORFN
:ULWH
%DVH $$$K
%DVH K
$$K
8QORFN
:ULWH
%DVH K
%DVH $$K
K
:ULWH %XIIHU/RDG &RPPDQG
:ULWH
3URJUDP $GGUHVV
K
:ULWH :RUG &RXQW
:ULWH
3URJUDP $GGUHVV
:RUG &RXQW 1±K
1XPEHU RI ZRUGV1 ORDGHG LQWR WKH ZULWHEXIIHUFDQEH IURP WR ZRUGV
WR
/RDG%XIIHU:RUG1
:ULWH
3URJUDP $GGUHVV :RUG1
:RUG1
/DVW
:ULWH %XIIHUWR)ODVK
:ULWH
6HFWRU$GGUHVV
K