收藏官网首页
查看: 324004|回复: 586

首发,分享一个STM32使用HAL库驱动WS2812B RGB5050方案

 

5

主题

29

帖子

98

积分

社区运营

Rank: 8Rank: 8

积分
98
QQ
跳转到指定楼层
#
发表于 2016-8-31 16:18:01 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 bigfanofloT 于 2016-11-28 15:25 编辑

一:WS2812B简介



  新一代的RGB5050将控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。
● 内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
● 内置上电复位和掉电复位电路。
● 每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。
● 串行级联接口,能通过一根信号线完成数据的接收与解码。
● 任意两点传传输距离在不超过5米时无需增加任何电路。
● 当刷新速率30帧/秒时,低速模式级联数不小于512点,高速模式不小于1024点。
● 数据发送速度可达800Kbps。
● 光的颜色高度一致,性价比高。

应用:
● LED全彩发光字灯串,LED全彩模组, LED全彩软灯条硬灯条,LED护栏管。
● LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯。

以下是时序图,




WS2812Bdatasheet: WS2812B规格书.zip (103.33 KB, 下载次数: 323)
从图中可以看出,数字“1”使用长脉宽来编码(占空比为64%),“0”使用短脉宽来编码(占空比为32%)。数据线低电平保持时间大于50us时,为复位信号。复位后,每个LED读取“Din”线上开始的24bit(绿:红:蓝为8:8:8)数据到驱动芯片内部缓存。除了开始的24bit数据,后面的数据都通过“Dout”脚传递到下一个LED,即每经过一个像素点的传输,信号减少24bit。内部缓存数据在下一个复位脉冲后被写入PWM控制器。一个bit为1.25us,一个LED有3*8bits=24bits,传输完  需要24*1.25us=30us。
bit周期需要稍微大于1.25us为佳!
二.使用cubemx配置方法
首先根据选择的芯片(我这里是STM32L011D4P6),配置好外设时钟(我这里是32MHz),确定定时器参数(我这里是1分频,脉冲计数频率为32MHz,理论上计数到1.25us,需要的重载寄存器数值为1.25/1/32=40,这里写41(这里应根据实际调整),则bit周期为1/32us*42=1.3125us,因从0计数,故乘以41+1=42)。
1.外设分配


2.时钟配置



3.定时器PWM输出配置
定时器2配置为:
向上计数模式,重载值为41(实际周期为1/T2CLK*(41+1)),不分频,pulse值决定脉宽,比如我现在ARR值为41,则脉宽=Pulse值/(41+1)


三、STM32L011XX驱动WS2812B参考设计
详情参考PCB工程:http://pan.baidu.com/s/1qXBkzyk,使用Altium Designer14及以上版本打开;
工程采用CubeMX生成,使用的是ST最新的HAL库,需要使用keil5及以上版本打开,CubeMX版本需要16.0及以上,下载地址http://www.st.com/content/st_com ... -long-promo_feb2014程序移植了Adafruit NeoPixel库函数,可实现多种绚丽效果,例如流水灯、呼吸灯、彩虹等。



两点说明:WS2812B为5V供电,5V逻辑器件,因此需要电平转换IC;RGB5050 最大60mA电流,单色时为20mA.因此应根据灯珠的多少设计合适的电源,本设计采用TI开关电源芯片TPS563200,最大3A电流输出能力。
1.电路图

2.PCB

3.实物



4.测试效果






5.视频:http://player.youku.com/player.php/sid/XMTc0ODA0NDYwMA==/v.swf

9颗LED的:http://v.youku.com/v_show/id_XMTcwNzM2MDQ1Mg==.html?beta&

36颗LED的:http://v.youku.com/v_show/id_XMTcwNzM2MzI4OA==.html?beta&

附程序源码:
游客,如果您要查看本帖隐藏内容请回复

四.参考资源(英文的)
https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation
http://www.lxway.com/442451961.htm
http://www.pjrc.com/teensy/td_libs_OctoWS2811.html
https://github.com/PaulStoffregen/OctoWS2811/blob/master/OctoWS2811.h
https://github.com/g4lvanix/0xWS2812
https://cpldcpu.wordpress.com/2014/01/19/light_ws2812-library-v2-0/
https://github.com/cpldcpu/light_ws2812/
https://cpldcpu.wordpress.com/2014/01/14/light_ws2812-library-v2-0-part-i-understanding-the-ws2812/
https://www.embeddedrelated.com/showarticle/528.php

PS:由于时间有限,未做深入研究,有兴趣的可以加上DMA,或者采用SPI+DMA的方式。
补充:有的网友遇到STM32L011系列,首次无法烧录程序的问题,这里给出ST的官方解决方案: STM32L011x和STM32L021x启动模式注意事项.pdf (708.08 KB, 下载次数: 118)














0

主题

3

帖子

23

积分

新手上路

Rank: 1

积分
23
推荐
发表于 2016-11-22 15:48:48 | 只看该作者
您好我下载了您的程序测试,、不过灯带显示的很乱,没有调出您测试的效果。您这边有没有示波器读取的时序图呢,我这边示波器读到的要不都是0码,要不都是1码,读不到reset码。
推荐
发表于 2016-9-1 13:20:33 | 只看该作者
DengQilong 发表于 2016-9-1 07:03
可以,每个灯有红绿蓝0-255级颜色混合,可以调出255*255*255种颜色。

但是每个灯都不一样那就要很多数据线控制了
我就是我,不一样的烟火;努力努力,永不放弃。

321

主题

1054

帖子

4503

积分

论坛元老

Rank: 8Rank: 8

积分
4503
QQ
推荐
发表于 2017-2-20 10:47:58 | 只看该作者
heyongbo236 发表于 2016-11-23 14:10
初次使用stm的L系列,值得好好学习学习!打算用L2的应该跟L1很相近吧!!?
...

是的,用STM32CubeMX的话,API都差不多
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
583#
发表于 2024-4-18 17:42:46 | 只看该作者
汉枫LPB120模块
不错不错不错不错不错不错不错

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
582#
发表于 2024-4-12 10:01:13 | 只看该作者
好酷炫的设计,希望我也能实现

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
581#
发表于 2024-4-7 10:22:55 | 只看该作者
学习学习,赞一个先

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
580#
发表于 2024-3-24 15:21:34 | 只看该作者
谢谢楼主分享

0

主题

2

帖子

13

积分

新手上路

Rank: 1

积分
13
579#
发表于 2024-3-15 12:23:15 | 只看该作者
真不错 mark一下

0

主题

2

帖子

13

积分

新手上路

Rank: 1

积分
13
578#
发表于 2024-3-15 12:22:48 | 只看该作者
汉枫LPB120模块
学习一下真不错

0

主题

1

帖子

12

积分

新手上路

Rank: 1

积分
12
576#
发表于 2024-2-20 00:16:29 | 只看该作者
回复一下 看下代码

1

主题

16

帖子

236

积分

中级会员

Rank: 3Rank: 3

积分
236
574#
发表于 2023-12-8 14:59:31 | 只看该作者
谢谢分享,谢谢

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
573#
发表于 2023-12-7 22:03:08 | 只看该作者
汉枫LPB120模块
xiazaixiazai

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
572#
发表于 2023-12-1 13:01:16 | 只看该作者
我也来看看

0

主题

2

帖子

39

积分

新手上路

Rank: 1

积分
39
571#
发表于 2023-11-5 23:15:49 | 只看该作者
谢谢分享,学习一下!

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
569#
发表于 2023-9-11 10:40:37 | 只看该作者
刚好在找这相关方面资料,谢谢楼主分享。

0

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
568#
发表于 2023-8-29 15:33:34 | 只看该作者
汉枫LPB120模块
6666666666666666

0

主题

4

帖子

26

积分

新手上路

Rank: 1

积分
26
567#
发表于 2023-8-22 13:42:06 | 只看该作者
这个真的很好谢谢

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
566#
发表于 2023-8-10 09:37:47 | 只看该作者
想看一下源码

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
565#
发表于 2023-8-2 11:04:40 | 只看该作者
学习一下谢谢分析

0

主题

2

帖子

18

积分

新手上路

Rank: 1

积分
18
564#
发表于 2023-7-14 16:55:04 | 只看该作者
置顶置顶置顶置顶置顶置顶置顶置顶置顶
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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