karmaing
发表于 2025-3-5 22:00:02
梁工,你好,
我用的是你的stc32g 查询发送 ws2812程序,想改成用stc32g库函数中的 SPI库,用库函数初始化spi后,ws2812不能正常点亮,请教下问题出在哪里?
void z_spi_init()
{
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_SSIG = 1; // 片选位 ENABLE, DISABLE
SPI_InitStructure.SPI_Enable = 1; // SPI启动 ENABLE, DISABLE
SPI_InitStructure.SPI_FirstBit = 0; // 移位方向 SPI_MSB, SPI_LSB
SPI_InitStructure.SPI_Mode = 1; // 主从选择 SPI_Mode_Master, SPI_Mode_Slave
SPI_InitStructure.SPI_CPOL = 0; // 时钟相位 SPI_CPOL_High, SPI_CPOL_Low
SPI_InitStructure.SPI_CPHA = 1; // 数据边沿 SPI_CPHA_1Edge,SPI_CPHA_2Edge
SPI_InitStructure.SPI_Speed = 1; // SPI速度 SPI_Speed_4, SPI_Speed_8, SPI_Speed_16, SPI_Speed_2
SPI_Init(&SPI_InitStructure);
SPI_SW(SPI_P22_P23_P24_P25); // SPI_P54_P13_P14_P15,SPI_P22_P23_P24_P25,SPI_P54_P40_P41_P43,SPI_P35_P34_P33_P32
P24 = 0; // MISO = 0, MOSI输出完毕保持低电平
P2n_push_pull(Pin3); // 驱动WS2812将MOSI设置为推挽输出
}
梁工
发表于 2025-3-5 22:25:58
karmaing 发表于 2025-3-5 22:00
梁工,你好,
我用的是你的stc32g 查询发送 ws2812程序,想改成用stc32g库函数中的 SPI库,用库函数初始化s ...
SPI有发出信号了?
如果SPI发出信号了,则是你的速度不对,示波器观察一下。
如果没有信号,则是初始化不对,请再检查程序。
驱动WS2812建议使用DMA方式,不占CPU时间,但占用比较多的RAM。
rayrakey
发表于 2025-3-6 14:36:25
谢谢楼主
proktv
发表于 2025-3-14 16:48:43
试试看 效果怎样
rvhzdhmy
发表于 2025-4-14 16:59:43
梁工,你好。WS2812连接电源后会一直耗电,这种耗电可以解决吗
梁工
发表于 2025-4-14 17:16:28
rvhzdhmy 发表于 2025-4-14 16:59
梁工,你好。WS2812连接电源后会一直耗电,这种耗电可以解决吗
WS2812本无法解决,你可以用一个MOSFET来关闭其电源。
rvhzdhmy
发表于 2025-4-15 10:07:48
梁工 发表于 2025-4-14 17:16
WS2812本无法解决,你可以用一个MOSFET来关闭其电源。
好的,谢谢梁工
bh7ni
发表于 2025-4-23 22:43:18
请教梁工,我想用8H8K64U + 128Mb spi nor flash + 16*32 512个WS2812做一个显示屏,显示数据放在128Mb spi nor flash,采用8H8K64U的SPI-DMA分别读128Mb spi nor flash里面的数据和送数据到16*32=512个WS2812组成的显示屏,如果是显示视频的话显示是否流畅。
梁工
发表于 2025-4-24 00:13:19
bh7ni 发表于 2025-4-23 22:43
请教梁工,我想用8H8K64U + 128Mb spi nor flash + 16*32 512个WS2812做一个显示屏,显示数据放在128Mb spi ...
STC8H8K64U的DMA只能操作256个字节,换AI8051U吧,DMA可以一次传输完毕,FLASH可以使用QSPI+DMA访问,速度飞快。
bh7ni
发表于 2025-4-24 19:40:14
梁工 发表于 2025-4-24 00:13
STC8H8K64U的DMA只能操作256个字节,换AI8051U吧,DMA可以一次传输完毕,FLASH可以使用QSPI+DMA访问,速 ...
AI8051U以前没用过,刚查阅了,好像AI8051U可以32位模式,也可以8位模式。实现我这个功能用8位模式是否可以?