利用SPI控制WS2812的显示
简介:利用ESP32中的硬件SPI控制WS2812的显示。使用了高频三极管9018作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性。
关键词:WS2812,ESP32,SPI
01WS2812
智能集成LED光源WS2812〔1〕通过简单的外部接口、特有的级联方案便于利用MCU完成多个LED控制,极大简化了LED控制接口。相比于传统的单片机LEDIO口复用控制方案〔2〕,使用WS2812则更加的简介。
图1。1灯珠控制闪烁一、芯片简介1、特点与优势在5050封装内集成有控制电路和RGB芯片,形成完整像素点控制;内置扫执行好整形电路,传递到级联下一节点时,不会产生信号失真累积效应;内置复位电路与掉电复位电路;每个RGB灯都有256亮度级别,可以形成中颜色,刷新频率不低于400Hz;通过信号线完成端口级联;传输距离在5米之内,无需增加额外电路;在刷新频率30帧秒中,低速模式下可以控制不少于512颗灯,高速模式下则超过1024颗灯;数据传输速率为800kbps;颜色一致性强,价格低;
图1。1。1灯带点亮后的效果2、应用全色彩模块;全色彩柔光灯带;LED装饰灯带;室内、室外LED不规则显示屏;3、管脚封装
图1。1。2WS2812封装与管脚功能定义二、工作原理1、工作电压
根据WS2812〔3〕数据手册,它的工作电压范围在,输入信号电压在工作电压VDD0。5V范围内。三路LED的参数:
【表211RGB参数】
EmittingcolorWavelength(nm)Luminousintensity(mcd)Current(mA)Voltage(V)Red620630550700161。82。2Green51553011001400162。83。1Blue465475200400163。03。42、控制协议
WS2812的级联控制协议非常简单。通过一根信号线就可以进行串行异步信号发送。
下面显示了四个WS2812通过数据性级联的方式。在串行通讯中使用不同高低电平脉冲表示数据0,1编码。
图1。2。1级联方法与编码波形
【221。脉冲编码参数】
脉冲定义时间误差T0H0code,highvoltagetime0。4us150nsT1H1code,highvoltagetime0。85us150nsT0L0code,lowvoltagetime0。85us150nsT1L1code,lowvoltagetime0。4us150nsRESlowvoltagetimeAbove50s
下面是三个WS2812级联发送过程对应的波形。可以看到通过发送三组24bit的编码,可以控制三个级联的WS2812灯的颜色。数据D1是直接由MCU数据端口控制,D2,D3,D4则是WS8212内部整形放大后再进行传输。
使用RESET编码,也就是超过50us的低电平形成WS2812输出锁定。
图1。2。2三个WS2812级联发送过程对应的波形
每组24bit对应的的GRB编码如下所示。发送颜色顺序为GRB,字节的高位在前。
图1。2。3每组24bit对应的的GRB编码
图1。1。3灯带点亮后的效果02ESP32SPI
由于控制WS2812的脉冲高低电平在0。85us,0。4us,时间间隔,为了产生这样的脉冲,使用普通的软件控制IO口是无法完成的,下面测试使用其中的硬件SPI〔4〕产生控制脉冲信号。一、ESP32中的硬件SPI
在ESP32中具有两路硬件SPI端口,可以最快达到始终速率80MHz,这可以满足对WS2812的控制脉冲的速率。1、SPI缺省管脚
如果使用SPI缺省配置管脚,输出速率可以达到80MHz,如果使用其它GPIO,则输出的速率则需要限制在40MHz以下。
【表211ESP32硬件SPI缺省端口】
管脚HSPI(id1)HSPI(id2)SCK1418MOSI1323MISO12192、ESP32实验转接板
利用ESP32实验转接板〔5〕,测试硬件SPI端口。
图2。1。1ESP32实验转接板
使用SPIid1,对应的SPI,MOSI,MISO的对口为,14,13,12,对应的实验转接板上的输出管脚如下图所示,从右往左分别是:
ESP32转接板SPI管脚定义:
SCK:PIN9
MISO:PIN8
MOSI:PIN7
图2。1。2ESP32中对应的SPI,MOSI,MISO的管脚3、测试SPI输出波形
初始化SPI端口,使得输出速率为10MHz,输出数据0x55,0xaa,使用示波器观察MOSI,SPI波形。(1)测试缺省SPI模式frommachineimportPin,Timer,SPIimporttimehspiSPI(1,10000000,sckPin(14),mosiPin(13),misoPin(12))bufbytes((0x55,0xaa))print(buf)whileTrue:hspi。write(buf)time。sleepms(10)
通过测试波形可以看到输出SPI的频率为5MHz。SPI正常的电平为低电平。
图2。1。3测量SPI,MOSI的输出波形
设置输出的波特率为2。5MHz,此时便可以输出0。4us的低脉冲。
设置输出波特率为2。5MHz,可以产生所需要的0。4us的电平输出。波形如下图所示:
图2。1。4设置输出波特率为2。5MHz,可以产生所需要的0。4us的电平输出二、使用晶体管反向MOSI
使用晶体管将MOSI波形进行反向,这可以:能够满足WS2812控制脉冲电平极性要求。它要求控制信号在平时为高电平,通过低电平脉冲获得复位信号、01数据位信号。提高带载能力。1、信号反向电路
图2。2。1MOSI信号反向电路2、电路测试(1)晶体管BC547
由于BC547B的截止频率只有300MHz,信号通过BC547之后,引起了很大的失真。下图显示了信号波形。
图2。2。2MOSI输入输出信号(2)晶体管9018
为了提高响应速度,对电路进行如下的调整:
电路元器件参数:
Q1:9018
R1:10k
R2:200
图2。2。3电路参数修改之后输入输出波形三、产生控制波形1、产生RESET信号
根据WS2812控制信号协议,RESET是时长超过50us的低电平,因此,在2。5MHz的波特率下,连续输出125bit的高电平,也就是16个byte的0xff,则可以产生:个1输出,便可以产生的低电平。frommachineimportPin,Timer,SPIimporttimehspiSPI(1,2500000,sckPin(14),mosiPin(13),misoPin(12),polarity0)bufbytes(〔0xff〕16)print(buf)whileTrue:hspi。write(buf)time。sleepms(10)
图2。3。1连续输出16个0xff所产生的RESET信号2、产生RGB数据
根据WS2812协议,每一组RGB需要24个bit,每个bit可以有SPI输出的3个bit来表示,因此输出一组RGB数据,则需要SPI输出。
由于存在MOSI输出反向,所以对应的RGB输出的高低电平需要进行反相。
RGB的0,1bit对应SPI:
RGB0:SPI011
RGB1:SPI001(1)转换代码frommachineimportPin,Timer,SPIimporttimehspiSPI(1,2500000,sckPin(14),mosiPin(13),misoPin(12),polarity0)defbyte2bin(b):bstrbin(b)〔2:〕return0(8len(bstr))bstrdefrgb2byte(r,g,b):strbyte2bin(g)byte2bin(r)byte2bin(b)spistr。join(〔(lambdas:011ifs0else001)(x)forxinstr〕)rgbdim〔int(spistr〔i8:i88〕,2)foriinrange(9)〕returnbytes(rgbdim)rgbbytergb2byte(0xff,0x80,0x3f)print(rgbbyte)rstbytebytes(〔0xff〕16)outbyterstbytergbbytewhileTrue:hspi。write(outbyte)time。sleepms(10)(2)输出波形
输出RGB分别为:0xff,0x80,0x3f,对应的数据波形为:
图2。3。2带有一个RST信号的一组RGB波形
将RGB对应的输出脉冲展开后的波形,可以检查输出波形是否符合WS2812对应的控制信号协议。
图2。3。3将RGB对应的输出脉冲展开后的波形四、测试WS28121、波形失真
编程输出RGB为(0xff,0x0,0x0),对应WS2812应该是输出红色,但直接接入之后,WS2812输出为白色。
通过观察DI的波形,可以看到它处于高电平的时间超过400us,并且低电平大约为1。5V。这说明Q1的驱动不足。
图2。4。1DI波形以及对应的WS2812颜色2、降低R1的阻值
降低R1阻值,提高Q1响应时间,以及输出低电平降低。最后将R1的阻值更换成3。3k欧姆之后,D1波形有了改善,此时WS2812的颜色与设置的参数相符了。
图2。4。2DI波形以及对应的WS2812颜色
图2。4。3最终对应的电路图中的参数3、RGB转换颜色
编程依次输出RGB颜色。3、RGB转换颜色frommachineimportPin,Timer,SPIimporttimehspiSPI(1,2500000,sckPin(14),mosiPin(13),misoPin(12),polarity0)defbyte2bin(b):bstrbin(b)〔2:〕return0(8len(bstr))bstrdefrgb2byte(r,g,b):strbyte2bin(g)byte2bin(r)byte2bin(b)spistr。join(〔(lambdas:011ifs0else001)(x)forxinstr〕)rgbdim〔int(spistr〔i8:i88〕,2)foriinrange(9)〕returnbytes(rgbdim)rgbbytergb2byte(0xff,0x0,0x0)rstbytebytes(〔0xff〕16)outbyterstbytergbbyterstbytewhileTrue:rgbbytergb2byte(0xff,0x0,0x0)outbyterstbytergbbyterstbytehspi。write(outbyte)time。sleepms(500)rgbbytergb2byte(0x0,0xff,0x0)outbyterstbytergbbyterstbytehspi。write(outbyte)time。sleepms(500)rgbbytergb2byte(0x0,0x0,0xff)outbyterstbytergbbyterstbytehspi。write(outbyte)time。sleepms(500)
下面显示了WS2812在SPI输出波形控制下完成颜色的转换。
图2。4。4RGB转换颜色实验总结
利用ESP32中的硬件SPI输出脉冲波形,控制WS2812响应。
通过电路调整,选择了高频晶体管9018作为输出反向晶体管,确定了放大电路参数,测试验证了利用高速SPI控制WS2812的硬件电路和软件。参考资料
〔1〕
WS2812:https:wenku。baidu。comviewc8b79d88fad6195f312ba6d3。html
〔2〕
单片机LEDIO口复用控制方案:https:zhuoqing。blog。csdn。netarticledetails116725947
〔3〕
WS2812:https:d2j2m4p6r3pg95。cloudfront。netmodulefilesledcubeassetsdatasheetsWS2812B。pdf
〔4〕
硬件SPI:https:docs。micropython。orgenlatestesp32quickref。htmlhardwarespibus
〔5〕
ESP32实验转接板:https:zhuoqing。blog。csdn。netarticledetails115563474
兰花的冬季养护技巧建兰、墨兰、寒兰耐寒性差,要提早入室,春兰、蕙兰有冰冻时也要入室,室温保持5~15之间,春兰室温控制在3~8,一般以1~5为宜,若高于15时对花蕾、花箭发育有不良的影响。……
朱耿洲求人不如求己,融资自救有绝招新冠疫情下,很多公司都在主动冲破资金危机,创新经营,利用销售回笼资金,改善企业生存环境,房地产公司更是如此。房地产行业整体资金链紧张大家应该知道,目前房地产行业整体……
华为台式机登陆华为官网近日华为台式机正式登陆了华为官网,除未公布售价外,其余参数基本流出。华为MateStationB515的桌面工作站,包括一台搭载AMD锐龙4000系列处理器的主机、一台2……
终身免费质保要求太多不如花钱买延保?别被骗了近年来,随着汽车市场的加速发展,越来越多的车企开始提出了更为完善的服务。比如说我们可以发现越来越多上市的新车都标注着终身免费质保,甚至有不少还没有上市的新车也加入到了终身免费质……
蟹爪兰的养护技巧,如何才能养护好?蟹爪兰有些耐旱,喜欢疏松透气的排水性良好的土壤,要想栽培蟹爪兰最好使用腐叶土混合一些园土、河沙等等。栽培时间长了,土壤的养分消耗殆尽,或者略微有些板结,在春天也可以及时更换植料……
老板用人,除了能力,这九点最重要俗话说:一人难挑千斤担,众人能移万座山。一个人的力量是很有限的,哪怕是一个公司的老板。一个公司想要得到长远的发展,仅仅依靠老板一个人的力量是行不通的,还需要得力的左右手。……
第二代微云台蔡司加持,手机影像的又一大步对于vivoX60Pro的拍照,相信大家都会有这两个疑问,一是蔡司光学镜头的成像性能,二是vivo二代微云台的防抖效果。蔡司作为百年光学大厂,不仅为vivoX60Pro带来了更……
可抽拉双出水的厨房龙头用起来更方便大家好,我是手撕鲈鱼,一个上得了厅堂,进不了厨房,但却拧得动水管的汉子。最近家里厨房的水槽水龙头彻底GG了,开关那里出水比水龙头这里出水还多o()o,浪费水十分严重,大概是用了……
拍照不如尼康索尼,拍视频不如松下富士,为何佳能卖得那么好?稍微懂行的人都知道,如果论静态照片拍摄,同级别的型号中尼康的画质最好,索尼次之。而论视频拍摄,索尼、松下和富士才是视频强机,尼康和佳能相对来说都有些跟不上趟,总是差那么点意思。……
11。2国内中风险地区等级又更新了,提前知道哪些地方不能去国内地区风险等级更新国内中高风险地区人员管理措施一览表附件国内中高风险地区人员管理措施一览表(截止10月31日下午19时)省市、地、州……
小米近700名青年工程师获授1604。2万股股票激励,他们值小米于7月2日傍晚宣布,向集团3904名员工,总授予70,231,664股的股票。据小米官方披露,集团优秀青年工程师、应届生和团队核心岗位的优秀员工、以及年度技术大奖的优秀工程……
鱿鱼游戏加密币跌至近零后,上海一位外国投资者损失严重当伯纳德听说有一枚以韩国Netflix热门电视剧《鱿鱼游戏》(SquidGame)命名的代币时,他快速浏览了网络,看看这种加密货币是否合法。《鱿鱼游戏》讲述了一些身无分文的人们……