|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lmn2005 于 2023-11-27 14:23 编辑
用54只WS2812做了一个电子钟,中间的时钟点用了两只,每个8字用了13只WS2812。
芯片用py32F003(后改为GD32F103)。
驱动时序严格遵循芯片手册并结合逻辑分析仪调整延时,
主函数如下:
- void WS2812_Write_24b(unsigned int wsdat) // 写入24位数据
- {
- unsigned char i;
- for (i = 0; i < 24; i++)
- {
- if (wsdat & 0x800000)
- {
- WS2812_H();
- delay_900ns();
- WS2812_L();
- delay_400ns();
- }
- else
- {
- WS2812_H();
- delay_400ns();
- WS2812_L();
- delay_900ns();
- }
- wsdat = wsdat << 1;
- }
- }
复制代码 显示每秒更新一次,结果前26个2812显示完全没有问题,后面的总是会出现某个2812显示错误色:
例如我写入24*54个0,
波形可参考:https://www.bilibili.com/video/B ... 6b33fc4da40d73a2edc
本来是没有任何显示的,结果仍然会出现某个2812会显示,百思不得其解。
究竟是WS2812的问题还是单片机的问题,还是代码出现问题?请各位大佬指教,谢谢!
|
|