W801的SDK无法成功驱动W25Q128的解决方法

一.问题概述

关于使用SPI总线驱动外置的25qxx系列Flash。使用SDK中写好的wm_fls_gd25qxx.c驱动只能驱动GD25Q128,而驱动常用的华邦(Winbond)w25q128时会出现无法成功读取Flash ID, 读到的是0x0或者0xfffffff 导致驱动失败。
W801的SDK无法成功驱动W25Q128的解决方法_第1张图片

二.修改方法

对wm_fls.c文件下的tls_spifls_read_id函数做如下修改:

static int tls_spifls_read_id(u32 * id)
{
    u32 cmd;
    int err;

    cmd = FLS_CMD_READ_DEV_ID;
    *id = 0;
	//将这个发送命令的字节数改为1
    err = tls_spi_read_with_cmd((const u8 *) &cmd, 1, (u8 *) id, 3);

    if (err != TLS_SPI_STATUS_OK)
    {
        TLS_DBGPRT_ERR("flash read ID fail(%d)!\n", err);
        return TLS_FLS_STATUS_EIO;
    }

    TLS_DBGPRT_FLASH_INFO("flash ID - 0x%x.\n", *id);

    return TLS_FLS_STATUS_OK;
}

W801的SDK无法成功驱动W25Q128的解决方法_第2张图片

三.修改后结果

W801的SDK无法成功驱动W25Q128的解决方法_第3张图片

你可能感兴趣的:(W801,单片机)