欢迎光临散文网 会员登陆 & 注册

【STM32】驱动WS2812

2023-07-23 15:05 作者:点星星的灯  | 我要投稿

本文以 SPI方式驱动进行说明

一、WS2812驱动数据结构

图1 数据结构

采用24BIT  G-R-B顺序发送:

        红色数据:00000000  11111111     00000000

        绿色数据:11111111    00000000   00000000 

        蓝色数据:00000000  00000000   11111111 

二、WS2812数据时序

   来解释下上文的  0  1


图2

由图可知数据码型的 “0”、“1”   是由一段先高后低电平的信号组成,时间为 ns 级。

三、SPI发送时序关联灯数据时序

        SPI发送时模式可以选择 8bit模式

        假设发送全高那么       ____|- - - - - - - -|___     1 1 1 1 1 1 1 1

        假设发送一半一半      ____|- - - - _ _ _ _|___   1 1 1 1 0 0 0 0

        此时发送的模式是不是和 2812数据时序非常类似,此时我们需要计算SPI 高低数据位的个数即可。

四、SPI发送时序计算

        假设MCU主频设置为  56M

        2812一个码的时间范围为   800ns ~ 1380ns

        换算成 SPI波特率   1/ (t/8)   =  1/(100ns ~  172ns)    

                                    >>>>  5.8M ~ 10M

        设置SPI 波特率为   56M / 8  =  7M

        单个bit 的发送时间:t1  = 1/7M   = 143ns


        对于2812 “0码”   取  143 * 2 = 286ns  ;143 * 6 = 858ns  满足T0H  T0L

        对于2812 “1码”   取  143 * 6 = 858ns  ;143 * 2 = 286ns  满足T1H  T1L

    所以 对于SPI发送来说

        2812 “0码”  SPI 发送   1100 0000    转为16进制  0xC0

        2812 “1码”  SPI 发送   1111 1100     转为16进制  0xFC

  五、总结

        红色数据:00000000  11111111     00000000

        等价于

        SPI发送  {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,

                        0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,

                        0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,

                            }

        


【STM32】驱动WS2812的评论 (共 条)

分享到微博请遵守国家法律