社区导航

 
查看: 3861|回复: 8

[原创] WS2812灯珠的STM32驱动方式(一)——了解对手

[复制链接]

1156

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-5-6 21:27:03 | 显示全部楼层 |阅读模式
本帖最后由 通宵敲代码 于 2018-5-6 22:19 编辑


在这之前用5050的灯珠都是三色自己控制的,
还从未用过这种内部集成驱动芯片的灯珠,尽管知道。
这次手上来了case,恰巧方案中提出了这种灯珠,
就决定尝试一下。

深入了解自己的对手,才能有把握打胜仗,
先让我们看一下WS2812灯珠的相关资料吧。
TIM截图20180506212616.png

以上照片来自某厂家官网的截图,可以看到同系列的LED型号还是不少的。尽管都是常见的5050封装,却由四脚与六脚之分,设计的时候一定要注意,
我们这次使用的是WS2812B,下面是有关这可灯珠的介绍。

TIM截图20180506212255.png

这张图是对这狂灯珠的一些基本介绍,例如电源可以串联共用,
每个灯珠都自带信号整形电路,上电掉电复位电路,
每颗灯珠都可以实现RGB256级控制,扫描频率400KHz,
任意两点间通信距离不低于3米,至少可以级联1024颗,
看起来这款灯珠就是专为LED灯带设计的。

TIM截图20180506213035.png

上面是关于这款灯带的一下电气参数,
供电电压可以使最常用的5V电源,限号传输延迟很小,
不错参数里有一点没提及,这款芯片内置了恒流驱动电路,
不但能保证灯珠颜色的良好一致,而且连限流电阻都可以省了。

TIM截图20180506214113.png
这是关于W2812B单总线驱动的内容,
控制器可以连续发送24位GRB控制信号,
第一个灯珠截取前24位后,会显示到自己的LED上,
并会将其余的数据进行整形后发送给第二颗灯珠,
第二颗灯珠会截取第二组24位数据进行显示,
并继续转发剩下的,知道最后一组数据被显示为止。

TIM截图20180506214123.png
这是对魅族24位GRB数据中信号0与信号1的介绍,
可以看到信号的周期为1.25us,
与前面的800kbps的通信频率正好对应。
信号0与1通过不同的占空比拉进行区分。

然而此处也报漏了一个问题,
我们都知道,常用的STM32F1系列单片机,内核速率只有72MHz,
对于主打高性能的STMF4系列也不过200MHz左右,
也就是说,STM32F1的一个指令周期需要大约14ns,
而正常情况下用HAL库控制单片机I/O翻转,
至少需要30个指令周期,将近500ns才能实现一次高低电平变化,
这就不用说还要形成严格的驱动信号,来控制LED显示颜色了,

其实不光HAL库不行,用最新的LL库也一样,最大也不超过5MHz,
即使是直接用寄存器驱动I/O,也不过只能达到12MHz的翻转速度,
就是F4系列直接用寄存器驱动,虽然可以超频到240MHz,
让I/O翻转速率达到80MHz,然而并没有什么卵用,
先不说稳定性咋样,就但是30多块钱一片的F4就吃消不起。

所以这里希望的大家如果用到WS2812系列的LED灯珠的话,
希望大家能记住这条结论,免得在原理问题上浪费时间,
STM32以及所有比他性能还低的单片机,用I/O翻转的方式,
是很难驱动WS2812系列灯珠的,除非你是土豪直接上400M的F7,
或者你的片子啥事都不干就驱动一串LED。

那难道STM32就没法驱动WS2812这种灯珠了吗,答案当然是能了。
具体怎们驱动我留到下节再说,这里就不啰嗦了。

下面是WS2812的串联驱动电路,
到了WS2813系列,连那颗电容都可以省掉不焊,
是不是很简单呢
TIM截图20180506214132.png





回复

使用道具 举报

1156

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2018-5-6 22:20:49 | 显示全部楼层
本帖最后由 通宵敲代码 于 2018-5-6 22:23 编辑


WS2812B规格书.pdf (433.51 KB, 下载次数: 21)


回复

使用道具 举报

363

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2018-5-7 07:52:21 | 显示全部楼层
謝謝分享。


回复

使用道具 举报

15

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-5-9 11:24:58 | 显示全部楼层


回复

使用道具 举报

154

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 昨天 17:31 | 显示全部楼层
72m怎么不行啊,不是太懂

点评

什么72m??  详情 回复 发表于 昨天 17:37


回复

使用道具 举报

1156

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 昨天 17:37 | 显示全部楼层
huihuihaha 发表于 2018-8-20 17:31
72m怎么不行啊,不是太懂

什么72m??


回复

使用道具 举报

154

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 昨天 17:43 | 显示全部楼层
103的主频72M啊,驱动这个速率不行吗,看的不是太懂


回复

使用道具 举报

18

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 昨天 21:20 | 显示全部楼层

就是72Mhz的主频嘛


回复

使用道具 举报

18

TA的帖子

1

TA的资源

一粒金砂(初级)

Rank: 1

发表于 昨天 21:25 | 显示全部楼层
楼主是不是理解错了啊,51单片机大把够用啊。1位==1.25us,一帧才:24*1.25us==30us.   20ms==20000us,约等于666帧,即600多的LED灯啦。


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-8-21 06:56 , Processed in 0.279739 second(s), 18 queries , Gzip On, Redis On.

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