w801 spi 读取数据失败

发布于 2024-11-04 17:16:18

w801用sdkv1.00.10 移植flashdb后出现spi读取失败的情况
现象:801在上电初始化spi后读取寄存器能正常读出数据01,但在运行一段时间后由接口tls_spi_read_with_cmd响应的数据变为00,查看逻辑分析仪后确认slave响应的数据为正常01:
image.png

image.png

然后在驱动中增加日志:
image.png
实际打印:
image.png
发现word32的值由0xffffff01变为0xffffff00,但spi相关寄存器值未发生变化
导致该问题的可能原因是什么?应该如何解决

测试代码:


#define SPI_TT ({\
    if(!spi_testttt()){\
        printf("spi errrr:%s:%d!",__FUNCTION__,__LINE__);\
        while(1);\
    }\
});

int master_spi_send_data(int clk, int type)
{
    int *p;
    int i;

    /*MASTER SPI configuratioin*/
    wm_spi_ck_config(WM_IO_PB_24);
    wm_spi_di_config(WM_IO_PB_25);
    wm_spi_do_config(WM_IO_PB_26);
    tls_gpio_cfg(WM_IO_PB_18,WM_GPIO_DIR_OUTPUT,WM_GPIO_ATTR_PULLHIGH);
    tls_gpio_write(WM_IO_PB_18,1);//cs
    tls_gpio_cfg(WM_IO_PB_17,WM_GPIO_DIR_OUTPUT,WM_GPIO_ATTR_PULLHIGH);
    tls_gpio_write(WM_IO_PB_17,1);//nrst
    printf("\r\n");
    printf("cs--PB04, ck--PB02, di--PB03, do--PB05;\r\n");
    
    if (clk < 0)
    {
        clk = 1000000;          /* default 1M */
    }
    if (-1 == type)
    {
        type = 0;
    }

    if (0 == type)
    {
        tls_spi_trans_type(0);
    }
    else
    {
        tls_spi_trans_type(2);
    }

    tls_spi_setup(TLS_SPI_MODE_0, TLS_SPI_CS_LOW, clk);

    vTaskDelay(1);

    tls_gpio_write(WM_IO_PB_18,0);
    uint8_t data = 0;
    data = 5;
    tls_spi_write((u8 *)&data, 1);
    data = 1;
    tls_spi_write((u8 *)&data, 1);
    tls_gpio_write(WM_IO_PB_18,1);

    vTaskDelay(1);

    data = 4;
    tls_gpio_write(WM_IO_PB_18,0);
    tls_spi_write((u8 *)&data, 1);
    if(tls_spi_read(&data,1) != TLS_SPI_STATUS_OK){
        printf("spi err\n");
    }
    tls_gpio_write(WM_IO_PB_18,1);
    
    printf("spi read:0x%x\n",data);
    return WM_SUCCESS;
}



uint8_t spi_testttt(void){
    uint8_t data = 0,addr = 0x04;
    tls_gpio_write(WM_IO_PB_18,0);
    tls_spi_read_with_cmd(&addr,1,&data,1);
    tls_gpio_write(WM_IO_PB_18,1);
    return !!data;
}

查看更多

关注者
0
被浏览
155
abcd
abcd 认证专家 2024-11-05
我只是个路过的老年人~

如果在没移植flashdb之前是正常的,移植后才出现,那可能是移植造成的内存方面的影响。另外就是接线是否有影响,比如接线太长了等。这种问题没办法给出具体原因,只能是多测试来定位排除原因。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览