找回密码
 立即注册
查看: 1254|回复: 13

8G1K08 点亮ws2812为何会闪烁

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-14 08:58:57 | 显示全部楼层 |阅读模式
ws2812时序要求

ws2812时序要求

ws2812时序要求

1码时间

1码电平时间

1码电平时间

0码时间

0码电平时间

0码电平时间




时序都已经达到要求,为何会发生闪烁现象
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-14 09:07:12 | 显示全部楼层
WS2812品牌批号不同时序差异很大,最准的方法是接1个灯发2个灯数据,测它的输出时序,因为它肯定不能自相矛盾,根据它输出的时序用示波器调

点评

这方法妙啊~!  发表于 2024-8-14 09:31
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-8-14 09:08:05 | 显示全部楼层
建议换8H系列带DMA和SPI的型号,用硬件SPI驱动
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-14 09:14:21 来自手机 | 显示全部楼层
DebugLab 发表于 2024-8-14 09:08
建议换8H系列带DMA和SPI的型号,用硬件SPI驱动

我看了那个帖子了,目前能力有限,还不会dma和spi{:5_358:}
现在就想着先用io口直接驱动
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-14 09:17:42 来自手机 | 显示全部楼层
wnagming 发表于 2024-8-14 09:16
时序不对,我之前用10%和90%作为0和1,其实WS2812判断的是否超过50%,所以我将占空比尽可能远离50% ...

我调的时序贴了,可以帮忙看看吗?
淘宝店家给的规格书我看已经符合了,不知道哪里还有问题了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-14 09:23:22 来自手机 | 显示全部楼层
wnagming 发表于 2024-8-14 09:18
我的意思是把0和1的占空比再往极限调整一下,不要看商家的时序,商家自己都不知道对不对 ...

好的我试试看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-14 09:42:27 来自手机 | 显示全部楼层
wnagming 发表于 2024-8-14 09:20
现在你表格是0。4和0.8嘛,你调整为0.2和1.0试试,没有什么0.85和0.45

我靠真的有用!太感谢了!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:386
  • 最近打卡:2025-04-30 22:13:28
已绑定手机

8

主题

137

回帖

1045

积分

金牌会员

积分
1045
发表于 2024-8-14 21:52:21 | 显示全部楼层
网上已经有帖子把2812的时序用通俗语言解释得较为清楚了,我也简单在他们的基础上进一步总结一下
要从芯片设计制造的角度去思考时序问题。比如为什么DS18B20和WS2812这种芯片的时序时间都有一个范围,其实是因为这些芯片内部用的是RC振荡器,所以不会太精准,因此要求外部时序无论在高温低温还是电压偏高偏低的情况下都落入一个特定的范围。

对于ws2812来说,只要来个高电平,那么就会观察这个高电平的持续时间,如果持续时间小于某个值,判为0,如果大于某个值,判为1.
如果信号变成了低电平,那么就等待下一个信号的到来,如果等了半天80us或者200uS,不同型号帧间隔不同,没有下一个信号,就判定为复位信号,本次传输结束。

因此只要控制高电平持续时间的长短,就是控制了发的到底是1还是0了。以下是我用的代码,自认为没有更简洁的办法了。

//STC8G1K08A 22.1184MHz
//STC8G1K08A 22.1184MHz

void nop(void)
{
}
void sendbyte(unsigned char byte)
{
        unsigned char i;
        i=8;
        EA=0;
                do
                {
                        ws2812pin=1;nop();
                        ws2812pin=byte&0x80;nop();
                        ws2812pin=0;nop();
                        byte=(byte<<1);                 //左移位
                }while(--i);
        EA=1;
}
void SetLed(unsigned char R_,G_,B_)
{
        sendbyte(G_);
        sendbyte(R_);
        sendbyte(B_);
}
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-8-14 22:08:59 | 显示全部楼层
我的理解是只要在一个时间范围内发送高低电平,ws2812b就能识别不需要非常精准的时间。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-04-28 10:23:12

11

主题

93

回帖

469

积分

中级会员

积分
469
发表于 2024-8-15 09:59:25 | 显示全部楼层
so*** 发表于 2024-8-14 22:08
我的理解是只要在一个时间范围内发送高低电平,ws2812b就能识别不需要非常精准的时间。 ...

这个范围组合太多了我试了IRC频率不同的情况输出相同时序,效果都会不一样,只能说io口直接驱动还是不够准确哈哈哈,后面再学spi驱动
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 01:58 , Processed in 0.550764 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表