久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
W25Q128驅動程序
[打印本頁]
作者:
jizhongbiao
時間:
2021-10-28 16:26
標題:
W25Q128驅動程序
#define W25Q128_NUM 0xEF4018 /* FALSH型號 */
#define W25CMD_JEDEC_ID 0x9F
#define W25CMD_WERITE_ENABLE 0x06
#define W25CMD_READ_STATUS 0x05 /* 讀狀態寄存器 用來判斷busy */
#define W25CMD_SECTOR_ERASE 0x20
#define W25CMD_PAGE_PROGRAM 0x02
#define W25_PAGE_SIZE 256
static void W25Q128WriteEnable(void);
static u8 WaitW25Idle(void);
static void AlignmentWrite (u8 *buff, u32 addr, u16 len);
/* 讀取芯片ID */
u32 W25Q128ReadId(void)
{
u8 tempH, tempM, tempL;
SPI2_CSN_SELECT();
(void)Spi2WriteByte(W25CMD_JEDEC_ID);
(void)Spi2ReadByte(&tempH);
(void)Spi2ReadByte(&tempM);
(void)Spi2ReadByte(&tempL);
SPI2_CSN_RELASE();
return (U32)((tempH << 16) | (tempM << 8) | tempL);
}
/* 扇區擦除 */
void W25EraseSector(u32 addr)
{
W25Q128WriteEnable();
(void)WaitW25Idle();
SPI2_CSN_SELECT();
(void)Spi2WriteByte(W25CMD_SECTOR_ERASE);
(void)Spi2WriteByte((u8)(addr >> 16));
(void)Spi2WriteByte((u8)(addr >> 8));
(void)Spi2WriteByte((u8)addr);
SPI2_CSN_RELASE();
(void)WaitW25Idle();
}
/* 按頁寫入 */
void W25PageWrite( u8 *buff, u32 addr, u16 len)
{
W25Q128WriteEnable();
(void)WaitW25Idle();
SPI2_CSN_SELECT();
(void)Spi2WriteByte(W25CMD_PAGE_PROGRAM);
(void)Spi2WriteByte((u8)(addr >> 16));
(void)Spi2WriteByte((u8)(addr >> 8));
(void)Spi2WriteByte((u8)addr);
while(len--)
{
(void)Spi2WriteByte(*buff);
buff++;
}
SPI2_CSN_RELASE();
(void)WaitW25Idle();
}
/* 對齊寫入一定長度的數據 */
static void AlignmentWrite (u8 *buff, u32 addr, u16 len)
{
u8 numOfPage = len / W25_PAGE_SIZE;
u8 numOfLeave = len % W25_PAGE_SIZE;
if (numOfPage == 0) /* 數據長度不滿1頁 */
{
W25PageWrite(buff, addr, W25_PAGE_SIZE);
return ;
}
while(numOfPage--)
{
W25PageWrite(buff, addr, W25_PAGE_SIZE);
buff += W25_PAGE_SIZE;
addr += W25_PAGE_SIZE;
}
if (numOfLeave == 0)
{
return;
}
W25PageWrite(buff, addr, numOfLeave);
}
/* 非對齊寫入一定長度的數據 */
static void UnAlignmentWrite (u8 *buff, u32 addr, u16 len)
{
u8 numOfPage = len / W25_PAGE_SIZE;
u8 numOfLeave = len % W25_PAGE_SIZE;
u8 unAlignmentLen = W25_PAGE_SIZE - (addr % W25_PAGE_SIZE); /* 寫完這個長度的數據之后就可以對齊寫入了*/
if (numOfPage == 0)
{
if (numOfLeave > unAlignmentLen)
{
W25PageWrite(buff, addr, unAlignmentLen);
buff += unAlignmentLen;
addr += unAlignmentLen;
W25PageWrite(buff, addr, numOfLeave - unAlignmentLen);
}
else
{
W25PageWrite(buff, addr, len);
}
return ;
}
W25PageWrite(buff, addr, unAlignmentLen); /* 寫入不對齊的部分 */
len -= unAlignmentLen;
buff += unAlignmentLen;
addr += unAlignmentLen;
AlignmentWrite(buff, addr, len);
}
/* 寫使能 */
static void W25Q128WriteEnable(void)
{
SPI2_CSN_SELECT();
(void)Spi2WriteByte(W25CMD_WERITE_ENABLE);
SPI2_CSN_RELASE();
}
/*
等待芯片空閑
return : 0失敗 1成功
*/
static u8 WaitW25Idle(void)
{
u8 temp;
u8 retryCnt = 0;
SPI2_CSN_SELECT();
do {
(void)Spi2WriteByte(W25CMD_READ_STATUS);
(void)Spi2ReadByte(&temp);
if (++retryCnt == 250)
{
return 0;
}
}while(temp & 0x01);
SPI2_CSN_RELASE();
return 1;
}
作者:
feixiang_07
時間:
2023-3-15 10:39
剛好用到,先謝了!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
黄色片在线网站
|
国产一伦一伦一伦
|
久久久久久久一区
|
日本久久久久久久久
|
7777在线视频免费播放
|
国产97人人超碰caoprom
|
涩色视频在线观看
|
观看av
|
国产婷婷综合
|
久久久蜜臀国产一区二区
|
天天综合日日夜夜
|
黄色一级毛片
|
国产精品视频综合
|
日韩一区二区三区在线观看
|
奇米超碰
|
av中文字幕在线播放
|
久久久精品一区
|
在线观看 亚洲
|
999精品在线观看
|
国产一区二区免费
|
日本免费一区二区三区四区
|
亚洲欧美综合
|
亚洲成人av一区二区
|
精品国产18久久久久久二百
|
亚洲www
|
日日爱夜夜操
|
污书屋
|
91影片
|
国产精品1区2区3区 男女啪啪高潮无遮挡免费动态
|
久久com
|
国产激情一区二区三区
|
午夜天堂
|
国产一区二区精品在线
|
国产欧美一区二区三区日本久久久
|
国产福利91精品
|
亚洲精品一区二区三区在线
|
天堂免费看片
|
欧美精品一级
|
日韩精品一区二区三区中文在线
|
亚洲精品自在在线观看
|
久久亚洲国产精品日日av夜夜
|