OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12379|回复: 22

用STM32 SPI驱动WS2812B RGB灯

[复制链接]

8

主题

47

帖子

1

精华

高级会员

Rank: 4

积分
675
金钱
675
注册时间
2014-9-17
在线时间
89 小时
发表于 2017-10-28 21:54:19 | 显示全部楼层 |阅读模式
本帖最后由 火透 于 2017-10-28 21:59 编辑

按照时序要求,用IO口延时去驱动,后来发现指令周期很不稳定,有时驱动就会失败,后来在网上找到了SPI +DMA驱动的方式,小试一把,18MHzSPI去模拟生成Code0Code1时序,每个Code0Code13SPI 字节,Code0 Code1对应的字节内容如图片Code表示。最终用逻辑分析仪测出的波形,误差在时序要求范围内,效果还是不错的。程序是先对所有像素点(LED)进行打包,最后再通过SPI的DMA发送出去。

6.png
5.png
4.png
3.png

Code表示

Code表示

WS2812_test.rar

288.61 KB, 下载次数: 1849

当你的才华还撑不起你的野心时你就应该静下心来学习。当你的经济还撑不起你的梦想时,你就应该踏实的去工作。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2017-10-28 22:01:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2017-7-17
在线时间
166 小时
发表于 2017-10-29 08:23:07 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

5

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2014-8-7
在线时间
59 小时
发表于 2019-7-5 17:34:23 | 显示全部楼层
非常感谢,移植楼主的代码一次成功
回复 支持 反对

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
发表于 2019-7-15 20:48:30 | 显示全部楼层
谢谢,参考一下
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-8-6
在线时间
3 小时
发表于 2019-8-6 14:34:21 | 显示全部楼层
楼主,您好,感谢分享,本人小白,最近也在研究这个东东,不知道接线是怎么接的,请赐教,谢谢!
回复 支持 反对

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
发表于 2019-8-9 11:12:09 | 显示全部楼层
daidai0626 发表于 2019-8-6 14:34
楼主,您好,感谢分享,本人小白,最近也在研究这个东东,不知道接线是怎么接的,请赐教,谢谢!

单片机的SPIx_MOSI去接WS2812的DI,DO就看你要不要接第二颗LED,然后5V供电和GND就可以了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2019-5-7
在线时间
20 小时
发表于 2019-8-12 11:42:16 | 显示全部楼层
daidai0626 发表于 2019-8-6 14:34
楼主,您好,感谢分享,本人小白,最近也在研究这个东东,不知道接线是怎么接的,请赐教,谢谢!

PB15接DI
感谢楼主
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-8-6
在线时间
3 小时
发表于 2019-8-12 13:35:36 | 显示全部楼层
seraph15 发表于 2019-8-9 11:12
单片机的SPIx_MOSI去接WS2812的DI,DO就看你要不要接第二颗LED,然后5V供电和GND就可以了

感谢回复,SPIx_MOSI这个接口我没找到
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2019-8-20
在线时间
18 小时
发表于 2019-9-19 18:40:14 | 显示全部楼层
麻烦问一下你用的晶振是8M的吗?我用的STM32F103RCT6怎么模拟不出来呢?
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2019-8-13
在线时间
23 小时
发表于 2019-9-28 18:30:54 | 显示全部楼层
感谢分享666
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-9-10
在线时间
19 小时
发表于 2019-9-29 11:32:03 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-8-6
在线时间
2 小时
发表于 2020-8-11 22:39:41 | 显示全部楼层
const uint32_t RGB_Buf[7][PIXEL_NUM] = {
        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,
        0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00, 0x0000ff00,
        0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff,
       
        0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080,
        0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000,
        0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000,
        0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040
};这个定义是什么意思,没看明白,求问
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
2019-7-14
在线时间
35 小时
发表于 2021-1-5 15:33:19 | 显示全部楼层
这个最好是0XFE
B[~~%F4XM{K`E@GWMD}OTPT.png
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
2019-7-14
在线时间
35 小时
发表于 2021-1-5 15:34:49 | 显示全部楼层
楼主,你忘记了加>50us的结束信号。
回复 支持 反对

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2021-1-9 22:34:10 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-10-22
在线时间
1 小时
发表于 2021-4-9 22:31:42 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2021-1-12
在线时间
22 小时
发表于 2021-4-19 13:37:59 | 显示全部楼层
感谢楼主分享,一次成功点亮
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2022-2-3
在线时间
18 小时
发表于 2022-2-15 23:28:24 | 显示全部楼层
请问ws2811能点亮吗
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2022-2-3
在线时间
18 小时
发表于 2022-2-15 23:33:33 | 显示全部楼层
请问用stm32f103vc驱动ws2811怎么修改
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2024-4-5
在线时间
4 小时
发表于 2024-5-31 22:40:08 | 显示全部楼层
赞赞赞
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2024-4-5
在线时间
4 小时
发表于 2024-5-31 22:40:36 | 显示全部楼层
666666
回复 支持 反对

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4638
金钱
4638
注册时间
2017-7-6
在线时间
705 小时
发表于 2024-6-28 16:36:56 | 显示全部楼层
1791536799 发表于 2020-8-11 22:39
const uint32_t RGB_Buf[7] = {
        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff0000,        0x00ff00 ...

RGB三色灯,一个灯一个字节,每个灯对应的是0~255a啊。给不同的值,亮度不一样,3个灯组合就得到的颜色不同。(已经6年没接触小家电了,还是实习的时候做过相关的,如果有大佬看到此评论有理解错的,欢迎指导!)
我是小白,很白很白的小白!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 12:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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