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位模式是否可以?
页: 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18
查看完整版本: SPI-DMA输出控制WS2812三基色彩灯程序@8H系列/32G系列,不加反相器, CPU休息