Page 1 of 1

T1 在启用SPI的前提下,将P17/P15 IO口当普通IO输出控制的问题

Posted: 2025年 Sep 11日 12:13
by feige2023

背景说明:
【1】我们用P16的SPI-MOSI作为WS28XX灯带的驱动,而P17/15用于控制指示灯

目前发现现象如下:
【1】当我们使用配置好P17/P15,直接用命令控制该IO,电平控制正常。
【2】当我们启用SPI功能,然后将P17/P15配置为输出,用命令控制IO后,总是会在下一次刷灯(执行tkl_spi_send)的时候,该IO被SPI接管。参考

SPI-P17&P15问题
SPI-P17&P15问题

部分关键配置如下:

// spi配置
const TUYA_SPI_BASE_CFG_T spi_cfg={
.mode = TUYA_SPI_MODE0,
.freq_hz = CONFIG_BSP_SPI_WS28XX_BAUDRATE,
.databits = TUYA_SPI_DATA_BIT16,
.bitorder = TUYA_SPI_ORDER_LSB2MSB,
.type = TUYA_SPI_AUTO_TYPE,
.role = TUYA_SPI_ROLE_MASTER_SIMPLEX,//TUYA_SPI_ROLE_MASTER,
.spi_dma_flags = 1,


};
ret = tkl_spi_init(TUYA_SPI_NUM_0,&spi_cfg);

// gpio配置
TUYA_GPIO_BASE_CFG_T gpio_output_cfg={
.direct = TUYA_GPIO_OUTPUT,
.level = TUYA_GPIO_LEVEL_LOW,
.mode = TUYA_GPIO_PUSH_PULL
};
tkl_gpio_init(TUYA_GPIO_NUM_15,(CONST TUYA_GPIO_BASE_CFG_T *)&gpio_output_cfg);
tkl_gpio_init(TUYA_GPIO_NUM_17,(CONST TUYA_GPIO_BASE_CFG_T *)&gpio_output_cfg);

问题:
需要如何解决SPI强制接管P17/P15 IO的问题?


Re: T1 在启用SPI的前提下,将P17/P15 IO口当普通IO输出控制的问题

Posted: 2025年 Sep 11日 16:34
by heixia.wang@tuya.com

您好,spi如要正常工作必须控制所述cs、MISO引脚,否则无法与外设完成通信,建议普通gpio功能使用其他暂不使用的引脚替代


Re: T1 在启用SPI的前提下,将P17/P15 IO口当普通IO输出控制的问题

Posted: 2025年 Sep 11日 18:11
by feige2023

您好,我只是用SPI的MOSI的时序驱动WS28XX灯带,不需要通讯。


Re: T1 在启用SPI的前提下,将P17/P15 IO口当普通IO输出控制的问题

Posted: 2025年 Sep 11日 18:24
by heixia.wang@tuya.com

驱动灯带可以用gpio模拟1wire的方式完成吗?这样就不必控制spi发送数据,只需要一根线即可


Re: T1 在启用SPI的前提下,将P17/P15 IO口当普通IO输出控制的问题

Posted: 2025年 Sep 11日 18:32
by heixia.wang@tuya.com

spi引脚当前是绑定控制的,没有办法拆分控制