亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flash_drv.c

?? adi bf54x 通過spi接口讀取memory程序
?? C
字號:
#include "spi.h"#include "type.h"#include "flash_Drv.h"#include <cdefBF549.h>	unsigned char test_buff[528];	unsigned char temp_buff[528];//讀取flash狀態uint8 read_stat_reg(void){	uint8 i;	SPIflash_CLR();	spi_byte_rw(0xd7);	i = spi_byte_rw(0xff);	i = spi_byte_rw(0xff);//	*pSPI0_FLG |= FLG2;
	SPIflash_SEL();	return i;}//讀取MEMORY頁地址數據////////////////////////////////////////////////////////int main_memory_page_read(uint32 byte_addr,uint32 count, uint8 *buff) //按字節尋址,讀出指定的字節數{	int addr = byte_addr;	uint32 i = 0;		while(!(read_stat_reg()&0x80));		delay(100);		SPIflash_CLR();	spi_byte_rw(0xD2);//send opcode		addr &= 0x0003fffff;//get page address	spi_byte_rw( ((uint8 *)&addr)[2] );//send 24 address bit	spi_byte_rw( ((uint8 *)&addr)[1] );	spi_byte_rw( ((uint8 *)&addr)[0] );   //send 32 don't care bit    i =spi_byte_rw(0xff);    i =spi_byte_rw(0xff);    i =spi_byte_rw(0xff);    i =spi_byte_rw(0xff); 	i =spi_byte_rw(0xff);	for(i=0;i<count;i++)		buff[i] = spi_byte_rw(0xff);		SPIflash_SEL();	delay(100);	return 0;}//讀取BUFFER1/////////////////////////////////////////////////int read_buffer1(uint32 byte_addr, uint8 *buff){    int addr = byte_addr;    uint32 i = 0;                                                                                              	while(!(read_stat_reg()&0x80));	delay(100);	    	SPIflash_CLR();    spi_byte_rw(0xD4);//send opcode,opcode 0x56 for another buffer    addr &= 0x000003ff;//start ram buffer  address	spi_byte_rw( ((uint8 *)&addr)[2] );//send 15bit don't care bit    spi_byte_rw( ((uint8 *)&addr)[1] );//send 9bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );	spi_byte_rw(0x00);					//1 Dummy Byte			i = spi_byte_rw(0xff);	   			//空讀,datashtt上沒有	for(i=0;i<512;i++) {		buff[i] = spi_byte_rw(0xff); 		}				SPIflash_SEL();	delay(100);	return 0;}//從memory 讀數到buffer /////////////////////////////////////////////////////int main_memory_to_buffer1_transfer(uint32 page_addr){	uint32 i = 0;	uint32 addr = page_addr<<10;	while(!(read_stat_reg()&0x80));		delay(100);		SPIflash_CLR();	spi_byte_rw(0x53);//send opcode ,0x55 for another buffer	addr &= 0x003ffc00;    spi_byte_rw( ((uint8 *)&addr)[2] );//send 11bit address and 9bit don't    spi_byte_rw( ((uint8 *)&addr)[1] );//care bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );	    	SPIflash_SEL();    delay(100);	return 0;}//比較BUFFERint compare_buffer1(uint32 page_addr){	int retval = -1;	uint32 addr = page_addr<<10;	int i = 0;	while(!(read_stat_reg()&0x80));		delay(100);		SPIflash_CLR();    spi_byte_rw(0x60);//send opcode ,0x61 for another buffer                                                                                  addr &= 0x003ffc00;    spi_byte_rw( ((uint8 *)&addr)[2] );//send 11bit address and 9bit don't    spi_byte_rw( ((uint8 *)&addr)[1] );//care bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );		SPIflash_SEL();	   //	retval = spi_byte_rw(0xff);	delay(200);	retval = read_stat_reg(); 	retval = retval>>6;                                  	return (retval & 0x1);	   		//相同返回0,不同返回1}///////////////////////////////////////////////int write_buffer1(uint32 byte_addr, uint8 *buff){					 	uint32 i = 0;	uint32 addr = byte_addr;                                                                         	while(!(read_stat_reg()&0x80));	delay(100);		SPIflash_CLR();        	                                                                            spi_byte_rw(0x84);//send opcode ,0x87  for another buffer                                                                                    addr &= 0x000003ff;	   //選用512字節地址    spi_byte_rw( ((uint8 *)&addr)[2] );//send 11bit address and 9bit don't    spi_byte_rw( ((uint8 *)&addr)[1] );//care bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );	for(i=0;i<528;i++)		spi_byte_rw(buff[i]);		SPIflash_SEL();	delay(100);	return 0;}int buffer1_to_main_memory_page_program(uint32 page_addr){	uint32 i = 0;    uint32 addr = page_addr<<10;	while(!(read_stat_reg()&0x80));  	delay(200);			SPIflash_CLR();                                                                 spi_byte_rw(0x83);//send opcode ,0x86 for another buffer                                                                                    addr &= 0x003ffc00;//選用512字節地址    spi_byte_rw( ((uint8 *)&addr)[2] );//send 11bit address and 9bit don't    spi_byte_rw( ((uint8 *)&addr)[1] );//care bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );   		SPIflash_SEL();   	delay(100);                                                                             return 0;}program_through_buffer_byte(uint32 byte_addr,uint32 count, uint8 *buff){	uint32 i = 0;    uint32 addr = byte_addr;	while(!(read_stat_reg()&0x80));  	delay(100);		SPIflash_CLR();                                                                   spi_byte_rw(0x82);//send opcode ,0x83 for another buffer                                                                                    addr &= 0x003fffff;  //選用528字節地址    spi_byte_rw( ((uint8 *)&addr)[2] );//send 11bit address and 9bit don't    spi_byte_rw( ((uint8 *)&addr)[1] );//care bit address bit    spi_byte_rw( ((uint8 *)&addr)[0] );	for (i=0; i<count; i++)		spi_byte_rw(buff[i]);    	SPIflash_SEL();    delay(100);                                                                                 return 0;	}int load_flash(uint8 *buffer, unsigned int load_lenth){	int i,j,flag = 1;	for(i=0;i<((load_lenth/528)+1);i++)	{		for(j=0; j<528; j++)			temp_buff[j]  =  buffer[j+i*528];				write_buffer1(0,temp_buff);		buffer1_to_main_memory_page_program(i);		read_buffer1(0,test_buff);		flag = compare_buffer1(i);		if(flag&0x1)			printf("Compare Buffer Error!\n");
		else 	printf("Compare Buffer OK!\n");	}}unsigned int read_id(void){	unsigned int id = 0;    int i = 0;	while(!(read_stat_reg()&0x80));	delay(100);
	SPIflash_CLR();
	spi_byte_rw(0x9f);	i = spi_byte_rw(0xff);	id = spi_byte_rw(0xff)<<24;	id |= spi_byte_rw(0xff)<<16;	id |= spi_byte_rw(0xff)<<8;	id |= spi_byte_rw(0xff);

	SPIflash_SEL();	delay(100);	return  id;}void chip_erase(void){	unsigned char i=0;	while(!(read_stat_reg()&0x80));	 delay(100);	SPIflash_CLR();		spi_byte_rw(0xc7);	spi_byte_rw(0x94);	spi_byte_rw(0x80);	spi_byte_rw(0x9a);		SPIflash_SEL();	delay(100);		      	   return 0;	}void block_erase(unsigned int block){		unsigned char i=0;	int addr = block<<13;	while(!(read_stat_reg()&0x80)); 		delay(100);                             		SPIflash_CLR();	spi_byte_rw(0x50);		   	addr &= 0x003fe000;//get page address	spi_byte_rw( ((uint8 *)&addr)[2] );//send 24 address bit	spi_byte_rw( ((uint8 *)&addr)[1] );	spi_byte_rw( ((uint8 *)&addr)[0] );		SPIflash_SEL();	delay(100);			return 0;	}void page_erase(unsigned int page){	unsigned char i=0;	int addr = page<<10;	while(!(read_stat_reg()&0x80));                                  	delay(100);    		SPIflash_CLR();	spi_byte_rw(0x81);		   	addr &= 0x003ffc00;//get page address	spi_byte_rw( ((uint8 *)&addr)[2] );//send 24 address bit	spi_byte_rw( ((uint8 *)&addr)[1] );	spi_byte_rw( ((uint8 *)&addr)[0] );		SPIflash_SEL();	 delay(100);	 		 return 0;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲在| 欧美伊人久久久久久久久影院 | 91蝌蚪porny九色| 亚洲欧美日韩成人高清在线一区| 成人高清视频在线| 成人免费在线观看入口| 在线中文字幕不卡| 热久久一区二区| 久久亚洲一级片| 成人一区二区三区视频| 亚洲色图另类专区| 欧美美女bb生活片| 麻豆专区一区二区三区四区五区| 久久久久久9999| 91玉足脚交白嫩脚丫在线播放| 亚洲精品一二三四区| 欧美肥妇bbw| 国产麻豆精品在线| 一区二区三区精品| 精品国产三级a在线观看| 成人毛片视频在线观看| 亚洲一卡二卡三卡四卡五卡| 日韩欧美亚洲一区二区| 91麻豆自制传媒国产之光| 午夜电影久久久| 国产精品国产三级国产aⅴ中文| 欧美体内she精视频| 国产精品性做久久久久久| 一区二区三区四区五区视频在线观看| 91精品久久久久久蜜臀| 成人激情图片网| 日本视频一区二区三区| 中文字幕一区二区5566日韩| 在线播放一区二区三区| 成人免费精品视频| 激情综合五月天| 亚洲图片有声小说| 国产精品久久夜| 日韩视频不卡中文| 色8久久精品久久久久久蜜| 精品一区二区日韩| 亚洲成人动漫在线观看| 国产精品理论在线观看| 日韩视频在线你懂得| eeuss鲁片一区二区三区在线看| 久久精品国产精品亚洲红杏| 亚洲成人av在线电影| 中文字幕欧美一| 欧美国产精品中文字幕| 欧美大片一区二区| 欧美裸体一区二区三区| 在线观看日韩精品| 懂色av中文一区二区三区| 久久国产精品免费| 日韩一区精品字幕| 依依成人综合视频| 国产精品久久久久久久久久免费看 | 国产丝袜美腿一区二区三区| 欧美高清你懂得| 欧美日韩国产系列| 91国在线观看| 在线视频你懂得一区二区三区| 成人黄色a**站在线观看| 黄色日韩网站视频| 韩国视频一区二区| 九九九精品视频| 久久99精品国产麻豆婷婷| 美国毛片一区二区三区| 日本不卡在线视频| 久久精品72免费观看| 理论片日本一区| 激情欧美日韩一区二区| 久久超碰97中文字幕| 国产真实乱对白精彩久久| 久久精品国产99国产精品| 久久er精品视频| 激情五月婷婷综合网| 极品瑜伽女神91| 国产成人精品在线看| 国产二区国产一区在线观看| 成人网在线播放| fc2成人免费人成在线观看播放| 99国产精品久久久| 色av一区二区| 欧美一区三区二区| 精品国产亚洲在线| 国产女人aaa级久久久级| 亚洲欧洲成人精品av97| 亚洲精品成人悠悠色影视| 一区二区三区四区五区视频在线观看 | av亚洲精华国产精华| 色诱亚洲精品久久久久久| 欧美系列一区二区| 777久久久精品| 久久人人超碰精品| 国产精品久久久久久一区二区三区 | 亚洲欧美一区二区三区孕妇| 亚洲精选视频在线| 五月激情综合色| 狠狠色丁香九九婷婷综合五月| 国产91丝袜在线18| 91激情五月电影| 精品久久人人做人人爰| 国产欧美一区二区精品仙草咪| 综合av第一页| 蜜桃av一区二区三区| 国产成人av网站| 欧美性色黄大片手机版| 日韩精品一区在线观看| 国产精品不卡视频| 爽好多水快深点欧美视频| 国产伦精品一区二区三区视频青涩 | 国产99久久久精品| 欧美在线啊v一区| 精品少妇一区二区| 夜夜亚洲天天久久| 国产乱一区二区| 精品1区2区3区| 欧美国产精品久久| 日韩在线一区二区| 99re成人精品视频| 精品免费99久久| 亚洲国产欧美日韩另类综合| 国产一区二区在线视频| 欧美三级一区二区| 国产欧美日韩三级| 日本欧美一区二区| 色综合天天天天做夜夜夜夜做| 日韩精品一区二区在线| 一区二区三区.www| 国产精品亚洲第一区在线暖暖韩国 | 久久精品夜色噜噜亚洲a∨| 亚洲精品成人天堂一二三| 国产精品18久久久久久久久久久久 | 亚洲女同女同女同女同女同69| 美女一区二区久久| 在线一区二区三区四区五区| 国产日韩欧美精品在线| 青青草91视频| 欧美视频中文字幕| 亚洲欧美日韩精品久久久久| 国产一区二三区| 日韩视频永久免费| 亚洲18女电影在线观看| 在线视频一区二区免费| 亚洲丝袜另类动漫二区| 丁香网亚洲国际| 久久久久久久久久久99999| 久久不见久久见中文字幕免费| 欧美日韩一区不卡| 亚洲欧美区自拍先锋| 不卡的电影网站| 中文字幕一区日韩精品欧美| 国产成人一区在线| 国产欧美一区二区三区在线看蜜臀 | 国产精品麻豆久久久| 国产成人免费在线观看| 国产亚洲欧美日韩日本| 国产一区二区日韩精品| 欧美不卡视频一区| 久久99久久99| 久久综合中文字幕| 国产中文一区二区三区| 久久综合网色—综合色88| 久久av资源站| 久久久久国产免费免费| 国产精品 日产精品 欧美精品| 2024国产精品| 国产传媒日韩欧美成人| 2欧美一区二区三区在线观看视频| 九九国产精品视频| 久久久久久久久久电影| 国产99精品国产| 国产片一区二区三区| 成人精品免费网站| 亚洲天堂中文字幕| 欧美性xxxxxxxx| 欧美a级一区二区| 精品盗摄一区二区三区| 国产福利一区二区三区视频| 国产欧美日韩在线视频| 91在线视频网址| 亚洲国产一区二区三区| 欧美一三区三区四区免费在线看| 蜜桃一区二区三区四区| 国产日韩欧美一区二区三区乱码 | 懂色av噜噜一区二区三区av| 欧美经典一区二区三区| 99久久99久久精品免费看蜜桃| 亚洲麻豆国产自偷在线| 欧美伦理电影网| 国产中文一区二区三区| 国产精品视频免费看| 在线观看亚洲专区| 捆绑调教一区二区三区| 中文无字幕一区二区三区 | 欧美精品在线一区二区三区| 蜜桃一区二区三区在线观看| 中文字幕第一区| 欧美三级电影在线看|