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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sst25lf080.c

?? STM32 單片機(jī)例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************/
#include "..\main\include.h"
//#include "include.h"
//本程序是SST25LF080A,SST25VF080A驅(qū)動,由于兩者高速字節(jié)編程不兼容,所以
//采用普通字節(jié)編程,多字節(jié)編程效率將略微低些,實(shí)際并不明顯
//sbit	CE_SPI          =P1^3;   //SPI控制
//#define LockSPI()    WP = 0  //寫保護(hù)
//#define UnLockSPI()  WP = 1  //關(guān)閉寫保護(hù)

//#define EnableSPI()  CE_SPI=0  //操作允許
//#define DisableSPI() CE_SPI=1  //操作禁止

//#define EnableSPI()  SPI_FLASH_CS_LOW()   
//#define DisableSPI() SPI_FLASH_CS_HIGH()  

#define EnableSPI()    SPI_FLASH_CS_LOW()    //操作允許
#define DisableSPI()   SPI_FLASH_CS_HIGH()   //操作禁止



#define  EWSR_CMD           0x50     //使能寫狀態(tài)寄存器命令
#define  RDSR_CMD           0x05     //讀狀態(tài)寄存器命令
#define  WRSR_CMD           0x01     //寫狀態(tài)寄存器命令
#define  WREN_CMD           0x06     //寫使能命令
#define  WRDI_CMD           0x04     //寫禁止命令
#define  READ_CMD           0x03     //讀數(shù)據(jù)命令
#define  HIGH_SPEED_READ    0x0B     //高速數(shù)據(jù)讀(地址自動增加)命令
#define  CHIP_ERASE_CMD     0x60     //芯片擦除命令
#define  BLOCK_ERASE_CMD    0x52     //塊擦除命令
#define  SECTOR_ERASE_CMD   0x20     //扇區(qū)擦除命令
#define  AAI_PROGRAM_CMD    0xAF     //SST25LF080A字節(jié)編程(地址自動增加)命令
//#define  AAI_PROGRAM_CMD    0xAD     //SST25VF080A字節(jié)編程(地址自動增加)命令
#define  BYTE_PROGRAM_CMD   0x02     //字節(jié)編程命令  
#define  READ_ID            0x90     //讀器件ID
#define  READ_ID2           0xAB     //讀器件ID(功能完全同READ_ID)



//SPI發(fā)送低3字節(jié)地址
//#define  SPI_Send32Address(Address) {    \
//SPI_Send_Byte(HL_ByteOfLong(Address));   \
//SPI_Send_Byte(LH_ByteOfLong(Address));   \
//SPI_Send_Byte(LL_ByteOfLong(Address));   \
//}
#define  SPI_Send32Address(Address) {    \
SPI_Send_Byte((uint8)(Address>>16));     \
SPI_Send_Byte((uint8)((Address>>8)&0xff));   \
SPI_Send_Byte((uint8)(Address&0xff));   \
}

//定義FLASH存儲器標(biāo)志
uint8  FLASH_FLAG;



uint8 HighSpeed_Read_Byte( uint32 Address );


void Chip_Erase(void);

void Block_Erase( uint32 Address );

static uint8 Wait_Busy(void);

//static uint8 Wait_Busy_AAI(void);



/*
void SPI_Init()
{
	//P1=0xff;
	SPSR = SPSR & 0x7F;
	SPCR = 0x50;
}


uint8 SPI_Send_Byte(uint8 dat)
{//uint8 temp;
	
	SPDR = dat;
	//do
	//{
	//	temp = SPSR & 0x80;
	//}while (temp != 0x80);
	
	while((SPSR&0x80)^0x80);
	
	SPSR = SPSR & 0x7F;
	
	//BUZZ_ON();
	return SPDR;
}
*/


/************************************************************************
* Read_Status_Register
* 讀SST25LF080 狀態(tài)寄存器     
* Input:                
* None
* Returns:                
狀態(tài)              
************************************************************************/
static uint8 Read_Status_Register(void)
{uint8 dat;
  EnableSPI();
  
  SPI_Send_Byte( RDSR_CMD );  // 0x05 send RDSR command
  dat = SPI_Send_Byte(0xff);       // receive byte
  
  DisableSPI();
  return dat;
}

/************************************************************************
EnableWRSReg
使能寫狀態(tài)寄存器
************************************************************************/
static void EnableWRReg(void)
{
  EnableSPI();
  
  SPI_Send_Byte( EWSR_CMD ); //0x50 enable writing to the status register
  
  DisableSPI();
}

/************************************************************************
WriteSReg
寫1byte到狀態(tài)寄存器
dat--數(shù)據(jù)
************************************************************************/
static void WriteSReg( uint8 dat )
{
  EnableSPI();
  
  SPI_Send_Byte( WRSR_CMD );  //0x01 select write to status register
  SPI_Send_Byte( dat );   //data that will change the status of BPx 
                          //or BPL (only bits 2,3,7 can be written)
  DisableSPI();
  
  Wait_Busy();
}

/************************************************************************
EnableWrite
寫使能
************************************************************************/
static void EnableWrite()
{
  EnableSPI();
  
  SPI_Send_Byte( WREN_CMD ); //0x06 send WREN command
  
  DisableSPI();
}

/************************************************************************
*DisableWrite()
寫禁止
************************************************************************/
static void DisableWrite()
{
  EnableSPI();
  
  SPI_Send_Byte( WRDI_CMD );    //0x04 send WRDI command
  
  DisableSPI();
}

//開保護(hù)
void UnProtectSST25VF080(void)
{
   EnableWRReg();
   WriteSReg(0);
}


/************************************************************************
Read_ID
讀廠商/器件ID
Input--ID_addr(A7~A1 =0)
     :Manufacturer’s ID is read with A0=0
     :Device ID is read with A0=1.
Returns--dat
       :ID1(Manufacture's ID = BFh
       :Device ID = 80h(SST25LF080))
************************************************************************/
uint8 ReadDeviceID(void)//( uint8 ID_addr )
{uint8 dat;
  EnableSPI();
  
  SPI_Send_Byte( READ_ID );    //0x90 send read ID command (90h or ABh)
  SPI_Send_Byte( 0x00 );    // send address
  SPI_Send_Byte( 0x00 );    // send address
  SPI_Send_Byte( 1 ); // send address - either 00H or 01H
  dat = SPI_Send_Byte(0xff);         // receive byte
  
  DisableSPI();
  return dat;
}


/************************************************************************
 PROCEDURE: Read
 讀1byte數(shù)據(jù)
 Input--地址(3byte)
   Dst:  Destination Address 000000H - 0FFFFFH
 Returns:--數(shù)據(jù)
************************************************************************/
/*
static uint8 Read_Byte( uint32 Address )
{uint8 dat; 
  EnableSPI();
  
  SPI_Send_Byte( READ_CMD );      //0x03 read command 
  SPI_Send32Address(Address); // send 3 address bytes
  dat = SPI_Send_Byte(0xff);
  
  DisableSPI();
  return dat;                 // return one byte read
}
*/

/************************************************************************
Read_Cont
連續(xù)讀數(shù)據(jù)
Input:
  Address--讀地址 000000H - 0FFFFFH
  Buf--讀出數(shù)據(jù)緩沖 
  n--讀數(shù)量 (max = 255)
************************************************************************/
/*
static uint8 Read_MultiByte( uint32 Address, uint8 n, uint8 *Buf )
{uint8 i;

  EnableSPI();
  
  SPI_Send_Byte( READ_CMD );      //0x03 read command
  SPI_Send32Address(Address); // send 3 address bytes
  for ( i = 0; i < n; i++ )   // read until no_bytes is reached
  {
    Buf[i] = SPI_Send_Byte(0xff);      // receive byte and store at address 80H - FFH
  }
  
  DisableSPI();
  
  return(0);
}
*/

/************************************************************************
HighSpeed_Read
高速讀1byte數(shù)據(jù)
Address--地址
返回--數(shù)據(jù)
************************************************************************/
/*
uint8 HighSpeed_Read_Byte( uint32 Address )
{uint8 dat = 0;

  EnableSPI();
  
  SPI_Send_Byte( HIGH_SPEED_READ );      //0x0B read command
  SPI_Send32Address(Address); // send 3 address bytes
  SPI_Send_Byte( 0xFF );      //dummy byte,發(fā)送任意數(shù)都可以
  dat = SPI_Send_Byte(0xff);
  
  DisableSPI();
  return dat;
}
*/

/************************************************************************
HighSpeed_Read_MultiByte
高速連續(xù)讀數(shù)據(jù)
Address--地址
Buf--數(shù)據(jù)
n--數(shù)據(jù)量
************************************************************************/
uint8 HighSpeed_Read_MultiByte( uint32 Address, uint16 n, uint8 *Buf )
{uint16 i;
  
  EnableSPI();
  
  SPI_Send_Byte( HIGH_SPEED_READ );       //0x0B read command
  SPI_Send32Address(Address);  // send 3 address bytes
  SPI_Send_Byte( 0xFF );       //dummy byte
  for ( i = 0; i < n; i++ )    // read until no_bytes is reached
  {
    Buf[i] = SPI_Send_Byte(0xff);       // receive byte and store at address 80H - FFH
  }
  
  DisableSPI();
  
  return(0);
}


/************************************************************************
Byte_Program 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av一区二区| 国产一本一道久久香蕉| 色婷婷久久99综合精品jk白丝| 国产精品视频一二三| 99精品视频一区| 亚洲国产综合色| 69久久99精品久久久久婷婷 | 一本色道久久综合精品竹菊| 日本一区二区三区久久久久久久久不| 国产麻豆成人精品| 国产精品久久久久久户外露出| 91视频免费播放| 亚洲成人7777| 久久婷婷综合激情| 99国产精品久久久久| 亚洲成av人片www| 4438成人网| 精品亚洲免费视频| 国产精品久久久久婷婷| 欧美午夜寂寞影院| 精品一区二区三区av| 亚洲特黄一级片| 6080午夜不卡| 岛国精品一区二区| 亚洲成年人影院| 久久精品一区二区三区不卡| 99re66热这里只有精品3直播 | 丁香啪啪综合成人亚洲小说| 亚洲制服丝袜在线| 久久一日本道色综合| 91国产丝袜在线播放| 久久66热偷产精品| 一区二区激情小说| 三级久久三级久久| 国产亚洲福利社区一区| 欧美日韩一区 二区 三区 久久精品| 久久99精品国产麻豆不卡| 亚洲少妇30p| 精品美女一区二区| 在线欧美日韩精品| 春色校园综合激情亚洲| 日韩国产在线观看| 亚洲欧美电影院| 精品国产91亚洲一区二区三区婷婷| 色综合天天综合狠狠| 久久福利视频一区二区| 亚洲一区二区三区四区中文字幕| 亚洲国产成人自拍| 精品嫩草影院久久| 666欧美在线视频| 欧美亚洲一区二区三区四区| 国产凹凸在线观看一区二区| 日产国产欧美视频一区精品| 亚洲免费高清视频在线| 欧美激情艳妇裸体舞| 精品国产sm最大网站免费看| 欧美色图一区二区三区| www.在线欧美| 国产经典欧美精品| 精品一区二区三区香蕉蜜桃| 五月综合激情婷婷六月色窝| 亚洲乱码国产乱码精品精98午夜| 国产精品三级久久久久三级| 精品国产乱码久久久久久1区2区| 欧美一区二区三区在线观看 | 欧美亚洲日本国产| 99精品视频在线观看免费| 国产乱码精品1区2区3区| 日本欧洲一区二区| 日韩精品电影在线观看| 亚洲国产精品一区二区www| 亚洲免费av高清| 日韩一区日韩二区| 亚洲色图一区二区| 亚洲欧洲综合另类在线| 亚洲欧洲日产国码二区| 国产精品伦理在线| 国产精品美女久久福利网站| 国产精品美女久久久久久久久| 国产日韩欧美在线一区| 日本一区二区三区dvd视频在线| 久久久精品黄色| 欧美韩日一区二区三区| 国产精品不卡视频| 自拍偷拍欧美激情| 蜜桃91丨九色丨蝌蚪91桃色| 蜜桃一区二区三区在线| 国内精品国产成人国产三级粉色| 国内精品视频一区二区三区八戒| 狠狠狠色丁香婷婷综合久久五月| 国产一区二区网址| 成人激情av网| 91黄色免费网站| 91精品国产综合久久精品app| 欧美一区二区免费观在线| 欧美videossexotv100| 国产亚洲欧美日韩俺去了| 中文字幕精品一区| 伊人夜夜躁av伊人久久| 天天免费综合色| 狠狠色综合日日| 不卡av在线网| 欧美日韩视频在线一区二区| 日韩午夜小视频| 国产目拍亚洲精品99久久精品| 日韩毛片视频在线看| 午夜精品久久久久影视| 黑人精品欧美一区二区蜜桃| 波多野结衣的一区二区三区| 欧美性videosxxxxx| 欧美一级理论片| 国产精品污www在线观看| 亚洲最大的成人av| 国产一区二区三区综合| 色婷婷av一区| 精品日本一线二线三线不卡| 亚洲天天做日日做天天谢日日欢| 亚洲成a人片综合在线| 国产福利一区二区三区视频在线| 91日韩精品一区| 欧美电视剧在线观看完整版| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品视频在线免费看| www激情久久| 亚洲国产精品久久不卡毛片| 韩国成人福利片在线播放| 91激情五月电影| 国产亚洲精品超碰| 日韩电影在线免费| 91丝袜高跟美女视频| 一个色综合网站| 麻豆久久一区二区| 91黄视频在线观看| 国产精品午夜久久| 蜜臀av一区二区三区| 91电影在线观看| 国产亚洲美州欧州综合国| 日韩不卡免费视频| av亚洲精华国产精华精华| 日韩精品在线一区| 亚洲国产wwwccc36天堂| 99精品视频在线观看免费| 久久久久久久久久久久久夜| 日本中文字幕一区二区视频| 91激情五月电影| 国产精品家庭影院| 国产不卡免费视频| 久久综合九色综合97婷婷| 日本va欧美va瓶| 欧美视频一区二区三区| 亚洲欧美日韩中文播放 | 欧美日韩精品专区| 中文字幕亚洲在| 成人国产在线观看| 国产亚洲短视频| 狠狠色丁香婷婷综合| 日韩一区二区电影在线| 日韩精品欧美精品| 欧美丝袜丝交足nylons| 夜夜精品视频一区二区| 91论坛在线播放| 亚洲私人影院在线观看| av中文字幕不卡| 国产精品萝li| www.欧美精品一二区| 日韩精品高清不卡| 777精品伊人久久久久大香线蕉| 一区二区理论电影在线观看| 日本道色综合久久| 亚洲男人天堂av| 91国在线观看| 婷婷成人综合网| 欧美一级一级性生活免费录像| 青青国产91久久久久久| 欧美一区二区三区影视| 久热成人在线视频| 久久久三级国产网站| 国产黄色91视频| 一区二区中文视频| 亚洲国产日韩一区二区| 久久99精品久久久| 国产成人精品一区二区三区四区 | 国产成人综合网| 亚洲视频在线一区观看| 欧美一区二区三区爱爱| 成人综合在线观看| 日精品一区二区三区| 国产精品丝袜一区| 日韩午夜在线观看视频| 一本色道久久综合亚洲精品按摩 | 99综合电影在线视频| 青青草国产成人av片免费| 国产精品久久久久久福利一牛影视 | 精品亚洲porn| 夜夜操天天操亚洲| 久久久久久久久久久电影| 欧美日韩专区在线| 不卡一区二区三区四区| 免费成人你懂的| 成人国产精品免费观看视频|