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
被浏覽
160
abcd
abcd 認證專家 2024-11-05
我只是個路過的老年人~

如果在沒移植flashdb之前是正常的,移植後才出現,那可能是移植造成的內存方面的影響。另外就是接線是否有影響,比如接線太長了等。這種問題沒辦法給出具體原因,只能是多測試來定位排除原因。

1 個回答

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽