-
大小: 4KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-05
- 語言: 其他
- 標(biāo)簽: MX25l1606??驅(qū)動(dòng)??
資源簡介
MX25l1606 SPI Flash驅(qū)動(dòng)代碼

代碼片段和文件信息
/*?----------------------------------?File?Description?--------------------------------------------
【文件功能】:本文件為?MAX25L1606E??SpiFLASH芯片驅(qū)動(dòng)文件
??????????????MAX25L1606E?存儲(chǔ)量為16M?bit??分為512個(gè)扇區(qū),每個(gè)扇區(qū)有4K?byte??16個(gè)扇區(qū)為一個(gè)block?總共有32個(gè)block
??????????????每page?為256個(gè)字節(jié)
??????????????最快訪問速度高達(dá)86MHz
【創(chuàng)建時(shí)間】:2012年10月22日星期一13:20:40
【文件版本】:V1.0
【作者聲明】:本文件作者為溫業(yè)中可通過email與作者聯(lián)系:?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);??//打印結(jié)果為:?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?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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
評論
共有 條評論