STC-SPI 驱动 WS2812, 【STC-USB转双串口工具作为开发板应用】之SPI驱动WS2812
一、前言
看到STC最新推出了一个USB转双串口的神器,不仅可以做最小系统板,还能做下载器,甚至原理图和程序均开源了,
在官网https://stcai.com/hxgnsyb就可以下载,具体如下

当然我也是迫不及待的入手了一个,为了图方便,我直接某宝上特价十块钱左右的价格就卖到了!!!回来实测了下可以轻轻松松实现4M以上的串口通信!当然作为一个资深的点灯工程师,新拿到个板子我们还是以点灯为主,具体的效果见最前面的视频,这里先把源代码上传,见附件,感兴趣的盆友们可以下载下来自己试试。
二、实现原理
这里简要分析一下实现过程,已知WS2812的驱动时序如下:
可以看到上图中,驱动一个灯需要24个0码或者1码,一个0码或者1码都包含一段高电平和低电平,且1个码的高电平和低电平时间相加为1.1us±300ns,当然这种时序我们完全可以用IO口模拟实现,不过这里我们可以尝试用SPI驱动。
标准的SPI协议如上图所示,有SCLK,SS,MOSI和MISO四个引脚,首先排除SS这个片选引脚,其次SCLK只能发时钟信号,离我们的一个高点平,一个低电平有点区别,暂时放弃,那MOSI刚好作为一个输出引脚,且输出的脉冲宽度可控,我们就可以选择他作为输出来实现我们的时序模拟。
配合我们的示波器,我们在44.2368的IRC时钟之下,发出的0码和1码分别如下图所示:
可以看到DATA引脚上(这里是P13引脚)输出的0码的总时间约为1.22us,正脉宽约为280ns,负脉宽约为935ns;0码的总时间约为1.19us,正脉宽约为749ns,负脉宽约为442ns。完全符合我们的驱动时序,所以SPI驱动可行。详细代码可以直接下载附件查看,有用或者好用的话希望小伙伴们可以在帖子下面留言点赞,这里就不详细展开了,要是小伙伴们实在需要的话我单独开一贴讲讲代码~
|