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
被浏览
157
abcd
abcd 认证专家 2024-11-05
我只是个路过的老年人~

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

1 个回答

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览