tuya t5 spi dma存在阻塞问题

Wi-Fi 设备、蜂窝设备、WuKongAI、开发板、TuyaOS 移植等


Post Reply
noah
Posts: 4

sdk:3.12.12

1.png
2.png
3.png
LiangXiao
Posts: 5

Re: tuya t5 spi dma存在阻塞问题

关于dma tx,t5有一个地方需要注意,dma tx最大单次传输长度为64K,如果length长度超过64K,底层驱动会做分包处理,这会导致dma send api阻塞。
谢谢~~

noah
Posts: 4

Re: tuya t5 spi dma存在阻塞问题

最大单次传输长度小于64K也会出现阻塞问题

LiangXiao
Posts: 5

Re: tuya t5 spi dma存在阻塞问题

和你确认一下,你是指tkl_spi_send接口当length<64K有阻塞么?

noah
Posts: 4

Re: tuya t5 spi dma存在阻塞问题

是的,你们最好也排查一下发送完成触发回调的时候是不是真的发送完成

LiangXiao
Posts: 5

Re: tuya t5 spi dma存在阻塞问题

tkl_spi_init
tkl_spi_irq_init
tkl_spi_irq_enable

你好,如果要用异步send接口,请按上面流程初始化spi。
谢谢~~

noah
Posts: 4

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;
}
Post Reply