資源簡介
MX25l1606 SPI Flash驅動代碼

代碼片段和文件信息
/*?----------------------------------?File?Description?--------------------------------------------
【文件功能】:本文件為?MAX25L1606E??SpiFLASH芯片驅動文件
??????????????MAX25L1606E?存儲量為16M?bit??分為512個扇區,每個扇區有4K?byte??16個扇區為一個block?總共有32個block
??????????????每page?為256個字節
??????????????最快訪問速度高達86MHz
【創建時間】:2012年10月22日星期一13:20:40
【文件版本】:V1.0
【作者聲明】:本文件作者為溫業中可通過email與作者聯系:?eric540@163.com
------------------------------------------------------------------------------------------?*/
#include?“stm32f10x.h“
#include?“mx25L1606E.h“
#include?“serial_debug.h“
void?SpiFlash_Init(void)
{
????flashInfoTypedef?flashInfo;???
????//WP
????GPIO_InitTypeDef?GPIO_InitStructure;
????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_4;
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_OD;
????GPIO_Init(GPIOC?&GPIO_InitStructure);
????FLASH_WP_High();
????SPI1_Configuration();
????
????FlashGet_ElectronicInfo(&flashInfo);
// ????printf(“ManufacturerID=%02X\r\n“flashInfo.ManufacturerID);
// ????printf(“DeviceID=%02X\r\n“flashInfo.DeviceID[0]);
????if((flashInfo.ManufacturerID==0xc2)&&(flashInfo.DeviceID[0]==0x14))
????{
????????printf(“\tFlash?Info:?MXIC(Macronix?International?Co.Ltd\r\n“);
????}
????FlashGet_Info(&flashInfo);
// ????printf(“ManufacturerID=%02X\r\n“flashInfo.ManufacturerID);
// ????printf(“DeviceID=%02X%02X\r\n“flashInfo.DeviceID[0]flashInfo.DeviceID[1]);
????if((flashInfo.DeviceID[0]==0x20)&&(flashInfo.DeviceID[1]==0x15))
????{
????????printf(“\tFlashType:MX25L1606E??FlashSize:16Mbit\r\n\tTotal?32?Blocks??16?Sectors/Block??4KB/Sector\r\n“);
????}
#if?0????
????FlashEnter_DeepPowerDown();
????tmp=FlashReleaseFrom_DeepPowerDownE();
????printf(“ElectronicSignature=%02x\r\n“tmp);??//打印結果為:?0x14
#endif????
}
void?FlashWait_Busy(void)
{
????u8?flashSta;
????u32?retry=0;
????FLASH_CS_Low();
????SPI_Write(RDSD_CMD);
????do{
????????
????????flashSta=SPI_Read();
????????if(retry++>FLASH_BUSY_TIMEOUT)
????????????break;
????}while(flashSta&0x80);
????//printf(“%d\r\n“retry);
????SPI_CS_High();????
}
void?FlashGet_Info(flashInfoTypedef?*?pFlashInfo)
{
// ????FlashWait_Busy();
????FLASH_CS_Low();
????SPI_Write(RDID_CMD);
????pFlashInfo->ManufacturerID=SPI_Read();
????pFlashInfo->DeviceID[0]=SPI_Read();
????pFlashInfo->DeviceID[1]=SPI_Read();
????SPI_CS_High();????
}
void?FlashGet_ElectronicInfo(flashInfoTypedef?*?pFlashInfo)
{
// ????FlashWait_Busy();
????FLASH_CS_Low();
????SPI_Write(REMS_CMD);
????SPI_Write(DUMMY_BYTE);
????SPI_Write(DUMMY_BYTE);
????SPI_Write(0x00);??//manufacturer‘s?ID?first
????pFlashInfo->ManufacturerID=SPI_Read();
????pFlashInfo->DeviceID[0]=SPI_Read();???
????SPI_CS_High();????
}
void?FlashEnter_DeepPowerDown(void)
{
????FLASH_CS_Low();
????SPI_Write(DP_CMD);???
????SPI_CS_High();????
}
void?FlashReleaseFrom_DeepPowerDown(void)
{
????FLASH_CS_Low();
????SPI_Write(RDP_CMD);???
????SPI_CS_High();????
}
u8?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2969??2012-10-23?13:44??spi.c
?????文件????????672??2012-10-22?13:36??spi.h
?????文件???????7762??2012-10-23?15:13??mx25L1606E.c
?????文件???????1101??2012-10-23?14:32??mx25L1606E.h
-----------?---------??----------?-----??----
????????????????12504????????????????????4
評論
共有 條評論