久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3473|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

W25Q128驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:130230 發(fā)表于 2021-10-28 16:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#define W25Q128_NUM       0xEF4018 /* FALSH型號(hào) */
#define W25CMD_JEDEC_ID      0x9F
#define W25CMD_WERITE_ENABLE 0x06
#define W25CMD_READ_STATUS   0x05 /* 讀狀態(tài)寄存器 用來(lái)判斷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);
}

/* 扇區(qū)擦除 */
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();
}

/* 按頁(yè)寫(xiě)入 */
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();
}

/* 對(duì)齊寫(xiě)入一定長(zhǎng)度的數(shù)據(jù) */
static void AlignmentWrite (u8 *buff, u32 addr, u16 len)
{
    u8 numOfPage   = len / W25_PAGE_SIZE;
    u8 numOfLeave  = len % W25_PAGE_SIZE;
    if (numOfPage == 0) /* 數(shù)據(jù)長(zhǎng)度不滿1頁(yè) */
    {
        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);
}

/* 非對(duì)齊寫(xiě)入一定長(zhǎng)度的數(shù)據(jù) */
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); /* 寫(xiě)完這個(gè)長(zhǎng)度的數(shù)據(jù)之后就可以對(duì)齊寫(xiě)入了*/

    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); /* 寫(xiě)入不對(duì)齊的部分 */
    len -= unAlignmentLen;
    buff += unAlignmentLen;
    addr += unAlignmentLen;
    AlignmentWrite(buff, addr, len);
}

/* 寫(xiě)使能 */
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;
}


評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:38683 發(fā)表于 2023-3-15 10:39 | 只看該作者
剛好用到,先謝了!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 婷婷福利视频导航 | 紧缚调教一区二区三区视频 | 人人人艹 | 国产在线观看一区二区三区 | 香蕉视频1024 | 国产在线观看一区二区三区 | 精品一区二区三区四区五区 | 中文字幕一区在线 | 七七婷婷婷婷精品国产 | 羞羞午夜 | 成人在线精品视频 | 在线观看黄视频 | 欧美日韩国产一区二区三区 | 久久成人免费观看 | 99视频在线 | 亚洲精久久久 | 成人免费视频网站在线看 | 精品一区免费 | 日韩另类 | 色资源在线观看 | 欧美另类视频 | 九九热在线观看视频 | 日本一区二区高清不卡 | 日本aa毛片a级毛片免费观看 | 国产黄色大片在线免费观看 | 日韩一级不卡 | 亚洲精品日韩一区二区电影 | 国产成人99久久亚洲综合精品 | 国产大毛片 | 亚洲成人日韩 | 国产美女永久免费无遮挡 | 国产精品高潮呻吟久久aⅴ码 | 日本欧美大片 | 九九亚洲 | 中文字幕av在线播放 | 国产美女在线精品免费 | 国产精品久久久 | 一级毛片黄片 | 国产精品国产成人国产三级 | 男人的天堂久久 | 在线视频日韩 |