关于NAND 读写操作的请教!
在进行NAND 写操作之前,我先对NAND 的0x4000进行块擦除(我用的是QQ2440),然后再进行写与读的操作,为了能知道是否把数据写进去,又读出来,我加了一个LED灯点亮的程序,当NAND执行完写读操作之后,LED灯亮。下面是我编的程序,不知道哪里出错了,请高手指教!
;*************************************************************************
;File:.s
;功能:设置NAND,对NAND执行读写操作,使LED等点亮
;*************************************************************************
WATCHDOGSTOP EQU 0X0000
WTCON EQU 0X53000000
NFCONT EQU 0x4E000004
NFCONF EQU 0x4E000000
NFCMD EQU 0x4E000008
NFADDR EQU 0x4E00000C
NFSTAT EQU 0x4E000020
NFDATA EQU 0x4E000010
GPBOUT EQU 0X015400
GPBPULLUP EQU 0X1E0
GPBCON EQU 0X56000010
GPBUP EQU 0X56000018
GPBDAT EQU 0X56000014
LED1ON EQU 0X1C0
LED2ON EQU 0X1A0
LED3ON EQU 0X160
LED4ON EQU 0X0E0
LEDOFF EQU 0X1E0
AREA LED,CODE,READONLY
ENTRY
LDR R0,=WTCON
MOV R1,#0X0000
STR R1,[R0];停止watchdog
LDR R0,=GPBCON
MOV R1,#0X015400
STR R1,[R0];设置引脚为输出
LDR R0,=GPBUP
MOV R1,#0X1E0
STR R1,[R0];设置引脚上拉电阻
LDR R0,=GPBDAT
MOV R1,#0X1E0
STR R1,[R0];
LDR R0,=NFCONF
MOV R1,#0X300
STR R1,[R0]
LDR R0,=NFCONT
MOV R1,#0X13
STR R1,[R0] ;初始化
LDR R0,=NFCONT
MOV R1,#0X11
STR R1,[R0]
LDR R0,=NFCMD
MOV R1,#0XFF
STR R1,[R0]
NAND_RESET LDR R0,=NFSTAT
LDR R1,[R0]
TST R1,#0X01
BEQ NAND_RESET
NAND_ERASE
LDR R0,=NFCMD
MOV R1,#0X60
STR R1,[R0] ;擦除
LDR R0,=NFADDR
MOV R1,#0X40
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFCMD
MOV R1,#0XD0
STR R1,[R0]
NAND_RESET1 LDR R0,=NFSTAT
LDR R1,[R0]
TST R1,#0X01
BEQ NAND_RESET1
LDR R0,=NFCMD
MOV R1,#0X80
STR R1,[R0] ;写
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X40
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFDATA
MOV R1,#0X1C0
STR R1,[R0] ;LED1
LDR R0,=NFDATA
MOV R1,#0X1A0
STR R1,[R0] ;LED2
LDR R0,=NFDATA
MOV R1,#0X160
STR R1,[R0] ;LED3
LDR R0,=NFDATA
MOV R1,#0X0E
STR R1,[R0] ;LED4
LDR R0,=NFCMD
MOV R1,#0X10
STR R1,[R0]
NAND_WRITE LDR R0,=NFSTAT
LDR R1,[R0]
TST R1,#0X01
BNE NAND_WRITE
LDR R0,=NFCMD
MOV R1,#0X00
STR R1,[R0] ;读
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X40
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFADDR
MOV R1,#0X00
STR R1,[R0]
LDR R0,=NFDATA
LDR R2,[R0]
NAND_READ LDR R0,=NFSTAT
LDR R1,[R0]
TST R1,#0X01
BNE NAND_READ
NAND_LED
LDR R0,=GPBDAT
STR R2,[R0] ;LED1点亮
END