sdk:3.12.12
tuya t5 spi dma存在阻塞问题
tuya t5 spi dma存在阻塞问题
sdk:3.12.12
Re: tuya t5 spi dma存在阻塞问题
关于dma tx,t5有一个地方需要注意,dma tx最大单次传输长度为64K,如果length长度超过64K,底层驱动会做分包处理,这会导致dma send api阻塞。
谢谢~~
Re: tuya t5 spi dma存在阻塞问题
最大单次传输长度小于64K也会出现阻塞问题
Re: tuya t5 spi dma存在阻塞问题
和你确认一下,你是指tkl_spi_send接口当length<64K有阻塞么?
Re: tuya t5 spi dma存在阻塞问题
是的,你们最好也排查一下发送完成触发回调的时候是不是真的发送完成
Re: tuya t5 spi dma存在阻塞问题
tkl_spi_init
tkl_spi_irq_init
tkl_spi_irq_enable
你好,如果要用异步send接口,请按上面流程初始化spi。
谢谢~~
Re: tuya t5 spi dma存在阻塞问题
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;
}
Re: tuya t5 spi dma存在阻塞问题
你好,这个问题在处理了吗,有什么解决方案呢
Re: tuya t5 spi dma存在阻塞问题
问题已经处理,在下个版本迭代合入。目前你们可以在当前版本替换附件 spi_driver.c 和 tkl_spi.c 中打开使用 bk_spi_dma_write_bytes_async 接口。
附件: