SFUD 使用示例

準備

潘多拉,打開板載 spi flash

示例代碼

簡單的進行測試:

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <spi_flash_sfud.h>

int main(void)
{
    sfud_err result;
    uint8_t *read_data;//讀取到的數據
    uint8_t *write_data;//將要寫入的數據
    sfud_flash *sfud_dev = NULL;

#if 0      // 法1:獲取 sfud_dev
    sfud_dev = rt_sfud_flash_find_by_dev_name("W25Q128");
    if (sfud_dev != RT_NULL)
    {
        rt_kprintf("Find sfud_dev success, sfud_dev name = %s\n", sfud_dev->name);
    }
#else      // 法2:獲取 sfud_dev
    sfud_dev = rt_sfud_flash_find("qspi10");
    if (sfud_dev != RT_NULL)
    {
        rt_kprintf("Find sfud_dev success, sfud_dev name = %s\n", sfud_dev->name);
    }
#endif

    /* 擦除從 0 開始的 4096 字節 */
    result = sfud_erase(sfud_dev, 0, 4096);
    if (result == SFUD_SUCCESS)
    {
        rt_kprintf("Erase success\n");
    }

    /* 寫入從 0 開始的 32 字節, 0x01 */
    write_data = rt_malloc(32);
    rt_memset(write_data, 1, 32);
    result = sfud_write(sfud_dev, 0, 32, write_data);
    if (result == SFUD_SUCCESS)
    {
        rt_kprintf("Write success.\n");
    }

    /* 讀取從0開始的32字節 */
    read_data = rt_malloc(32);
    result = sfud_read(sfud_dev, 0, 32, read_data);
    if (result == SFUD_SUCCESS)
    {
        rt_kprintf("Read success.\n ");
    }

    return RT_EOK;
}

結果

 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Apr 27 2020
 2006 - 2020 Copyright by rt-thread team
[D/drv.qspi] qspi init success!
[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.
[SFUD] W25Q128 flash device is initialize success.
[D/drv.qspi] qspi init success!
Find sfud_dev success, sfud_dev name = W25Q128
msh >Erase success
Write success.
Read success.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章