⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pageprogram.asm

📁 ADSP与NANDFLASH的连接
💻 ASM
字号:
#include <def21262.h>

.global FLASH_PROGRAM_Command;
.extern page_program_cmds;
.extern BYTE_PPDMA;
.extern PP_DMA_WRITE;

//delay funcntions
.extern CLE_delay_func;
.extern ALE_delay_func;
.extern AFTER_RD_WR_delay_func;
.extern Delay_Before_Return_func;
//

.section/pm seg_dmda;
	.var Write_Row_Addr[1] = 0;
	
.section/pm seg_pmco;
//PAGE PROGRAM Command	
	FLASH_PROGRAM_Command:
	//Generate page address from r12, r13, r14 and r15
	r11 = 0;//Initialize to "0"
	
	r13 = LSHIFT r13 by 8;  //left shift by 8
	r14 = LSHIFT r14 by 16; //left shift by 16
	r15 = LSHIFT r15 by 24; //left shift by 24
	
	r11 = r12 or r13;
	r11 = r11 or r14;
	r11 = r11 or r15;//r11 has the generated block address
	//
	
	bit clr FLAGS FLG0;  //enable chip - FLASH CS# asserted here
	bit set FLAGS FLG1;  //Drive CLE "HI" for the command phase

	//First byte  - command "0x80"
	i0 = page_program_cmds;
	r7 = i0;
	r8 = 1;//external memory byte transfer count
	m0 = 1;//modifier to select next byte of command
	
	CALL BYTE_PPDMA;
	idle;//wait for PP Interrupt
	
	//Drive CLE "LO"
	CALL CLE_delay_func;//call CLE delay
	
	bit clr FLAGS FLG1;
	//Drive ALE "HI" - address phase
	bit set FLAGS FLG2;
	//Write "column", "rox_1_2_3" address
	i1  = Write_Row_Addr;
	dm(i1,0) = r11;
	
	r7 = i1;
	r8 = 4;//external memory byte transfer count
	CALL BYTE_PPDMA;
	idle;//wait for PP Interrupt
	
	
	//Drive ALE "LO"
	CALL ALE_delay_func;//call ALE delay
	bit clr FLAGS FLG2;
	
	//write data DN, DN+1......DN+527
	r8 = 528;//external memory byte transfer count
	r7 = i4;
	r6 = 132;//internal packed word count = r8 / 4
	CALL PP_DMA_WRITE;
	idle;//wait for PP Interrupt
	
	CALL AFTER_RD_WR_delay_func;
	
	//Give 0x10 command

	bit set FLAGS FLG1; //Drive CLE "HI"
	//Command "0x10"
	modify(i0,m0);
	r7 = i0;
	r8 = 1;//external memory byte transfer count
	m0 = 1;//modifier to select next byte of command
	
	CALL BYTE_PPDMA;
	idle;//wait for PP Interrupt
	
	//Drive CLE "LO"
	CALL CLE_delay_func;//call CLE delay
	
	bit clr FLAGS FLG1;

	idle;//wait for Interrupt / BUSY (R/B#) from NAND FLASH
	bit set FLAGS FLG0;//Disable chip - FLASH CS# de-asserted
	
	CALL Delay_Before_Return_func;
	RTS;
FLASH_PROGRAM_Command.end:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -