tuya t5 spi dma存在阻塞问题
Posted: 2025年 Jul 7日 13:37
sdk:3.12.12
sdk:3.12.12
关于dma tx,t5有一个地方需要注意,dma tx最大单次传输长度为64K,如果length长度超过64K,底层驱动会做分包处理,这会导致dma send api阻塞。
谢谢~~
最大单次传输长度小于64K也会出现阻塞问题
和你确认一下,你是指tkl_spi_send接口当length<64K有阻塞么?
是的,你们最好也排查一下发送完成触发回调的时候是不是真的发送完成
tkl_spi_init
tkl_spi_irq_init
tkl_spi_irq_enable
你好,如果要用异步send接口,请按上面流程初始化spi。
谢谢~~
Code: Select all
static int ws2812_spi_init(void)
{
OPERATE_RET ret = 0;
TUYA_SPI_BASE_CFG_T spi_cfg;
spi_cfg.role = TUYA_SPI_ROLE_MASTER;
spi_cfg.mode = TUYA_SPI_MODE0;
spi_cfg.type = TUYA_SPI_SOFT_TYPE;
spi_cfg.databits = TUYA_SPI_DATA_BIT8;
spi_cfg.freq_hz = 6500000;
spi_cfg.spi_dma_flags = TRUE;
ret = tkl_spi_init(TUYA_SPI_NUM_0, &spi_cfg);
if (OPRT_OK != ret)
{
return -1;
}
ret = tkl_spi_irq_init(TUYA_SPI_NUM_0, __ws2812_event_cb);
if (OPRT_OK != ret)
{
return -1;
}
ret = tkl_spi_irq_enable(TUYA_SPI_NUM_0);
if (OPRT_OK != ret)
{
return -1;
}
return 0;
}