-
大小: 13KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-23
- 語言: 其他
- 標(biāo)簽: MX25L驅(qū)動??
資源簡介
該驅(qū)動支持MX25系列的NORflash,操作方式支持SPI,QPI,SPAR接口,支持軟件SPI,硬件spi配置,都是通過宏定義配置。

代碼片段和文件信息
/*
?*?COPYRIGHT?(c)?2010-2012?MACRONIX?INTERNATIONAL?CO.?LTD
?*?SPI?Flash?Low?Level?Driver?(LLD)?Sample?Code
?*
?*?Application?program?of?flash?support?SPI?and?QPI?interface
?*?This?sample?code?provides?a?reference?not?recommand?for?directing?using.
?*
?*?$Id:?MX25_APP.cv?1.4?2012/01/03?08:00:06?modelqa?Exp?$
?*/
#include????
#include????“MX25_CMD.h“
#define??TRANS_LENGTH??16
#define??RANDOM_SEED???106
#define??FLASH_TARGET_ADDR??0x00000000
#define??Error_inc(x)??x?=?x?+?1;
/*?function?prototype?*/
uint8??FlashID_Test(?uint8?QPI_Enable?);
uint8??FlashReadWrite_Test(?uint8?QPI_Enable?);
/*
?*?Main?Program
?*/
void?main()
{
????/*?Setting?flash?access?mode:?SPI?or?QPI?*/
????uint8?QPI_Enable?=?TRUE;
????Initial_Spi();
????FlashID_Test(?QPI_Enable?);????//?Simple?test?:?flash?ID
????FlashReadWrite_Test(?QPI_Enable?);???//?Simple?test?:?flash?read?/?write
}
/*
?*?Simple?flash?id?test
?*/
uint8?FlashID_Test(?uint8?QPI_Enable?)
{
????uint32??flash_id?=?0;
????uint16??error_cnt?=?0;
????FlashStatus??flash_state?=?{0};
????ReturnMsg??msg;
????if(?QPI_Enable?)
????????CMD_EQIO(?&flash_state?);????//?Enter?QPI?mode
????/*?Read?flash?ID?*/
????if(?QPI_Enable?){????//?Call?QPI?command
????????msg?=?CMD_QPIID(?&flash_id?&flash_state?);
????}
????else{
????????msg?=?CMD_RDID(?&flash_id?&flash_state?);
????}
????if(?msg?!=?(ReturnMsg)FlashOperationSuccess?)??//?Check?returen?message
????????return?FALSE;
????if(?QPI_Enable?)
????????CMD_RSTQIO(?&flash_state?);??//?Exit?QPI?mode
????if(?flash_id?!=?FlashID?)??//?Compare?to?expected?value
????????Error_inc(?error_cnt?);
????if(?error_cnt?!=?0?)
????????return?FALSE;
????else
????????return?TRUE;
}
/*
?*?Simple?flash?read/write?test
?*/
uint8?FlashReadWrite_Test(?uint8?QPI_Enable?)
{
????FlashStatus??flash_state?=?{0};
????uint32??flash_addr;
????uint32??trans_len?=?0;
????uint16??i=0?error_cnt?=?0;
????uint16??seed?=?0;
????uint8???st_reg?=?0;
????uint8???memory_addr[TRANS_LENGTH]?=?{0};
????uint8???memory_addr_cmp[TRANS_LENGTH]?=?{0};
????/*?Assign?initial?condition?*/
????flash_addr?=?FLASH_TARGET_ADDR;
????trans_len?=?TRANS_LENGTH;
????seed?=?RANDOM_SEED;
????if(?QPI_Enable?)
????????CMD_EQIO(?&flash_state?);????//?Enter?QPI?mode
????/*?Prepare?data?to?transfer?*/
????srand(?seed?);
????for(?i=0;?i(trans_len);?i=i+1?){
????????memory_addr[i]?=?rand()%256;????//?generate?random?byte?data
????}
????
????/*?Mmarked?these?code?when?not?using?quad?IO?mode?(except?QPI?mode)
?????*?Enable?Quad?IO?mode
?????*?Read?status?register?value?*/
????CMD_RDSR(?&st_reg?&flash_state?);
????st_reg?=?st_reg?|?FLASH_QE_MASK;????//?set?QE?bit?to?1
????CMD_WRSR(?st_reg?&flash_state?);????//?write?setting?to?flash
????/*?Check?QE?value?*/
????CMD_RDSR(?&st_reg?&flash_state?);????
????if(?(st_reg?&?FLASH_QE_MASK)?!=?FLASH_QE_MASK?)
????????Error_inc(?error_cnt?);
????
????/*?Erase?4K?sector?of?flash?memory
???????Note:?It?needs?to?erase?dirty?sector?before?program?*/
????CMD_SE(?flash_addr?&fl
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????71488??2012-12-05?16:52??MX25_CMD.c
?????文件???????9119??2012-12-05?16:52??MX25_CMD.h
?????文件???????6529??2012-12-05?16:52??MX25_DEF.h
?????文件???????4299??2012-12-05?16:52??MX25_APP.c
-----------?---------??----------?-----??----
????????????????91435????????????????????4
評論
共有 條評論