• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: MX25l1606  驱动  

资源简介

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


评论

共有 条评论