主题 : 对NAND的读写操作 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 2689
精华: 0
发帖: 1
金钱: 10 两
威望: 1 点
综合积分: 2 分
注册时间: 2008-12-03
最后登录: 2008-12-04
楼主  发表于: 2008-12-04 09:28

 对NAND的读写操作

关于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
                
    
                
                                
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2008-12-04 22:27
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."