SF32LB56 SPI2用DMA,开机会出现小概率DMA一直timeout,重启后就又可以了。

话跑两遍:“rst = rt_spi_configure(spi_dev_handle, &spi_dev_cfg);”

验证结果:

依旧会出现;

改了menuconfig选项后,现在可以编过了。 恩 这里也还是会出问题。

在这个文件里加红框里的代码试试,这边测试不会出错。

非常感谢,问题解决。

代码里面,前面的那个使能是不是可以去掉了。类似这样:

/*for 56x, need enable clock first, then set div.*/

//#ifdef SPI_CLK_CTRL_CLK_SSP_EN
//SET_BIT(hspi->Instance->CLK_CTRL, SPI_CLK_CTRL_CLK_SSP_EN);
//#endif /* SPI_CLK_CTRL_CLK_SSP_EN */

if (1 == hspi->Init.BaudRatePrescaler)
{
    SET_BIT(hspi->Instance->CLK_CTRL, SPI_CLK_CTRL_CLK_SEL);
}
else
{
    MODIFY_REG(hspi->Instance->CLK_CTRL, SPI_CLK_CTRL_CLK_DIV_Msk,
               MAKE_REG_VAL(hspi->Init.BaudRatePrescaler, SPI_CLK_CTRL_CLK_DIV_Msk, SPI_CLK_CTRL_CLK_DIV_Pos));
}

#ifdef SPI_CLK_CTRL_CLK_SSP_EN
SET_BIT(hspi->Instance->CLK_CTRL, SPI_CLK_CTRL_CLK_SSP_EN);
#endif /* SPI_CLK_CTRL_CLK_SSP_EN */

不要去掉。 现在可以先本地这样改一下绕过这个问题。后续会把正式修改提交到sdk里,到时候更新下sdk就行了。

你好, 请问下你用的sdk是什么版本, 我更新sdk后编译复现不了这个问题了。

你好,这里SDK版本:

v2.4.2