范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

利用SPI控制WS2812的显示

  "
  简 介:   利用ESP32中的硬件SPI控制WS2812的显示。使用了高频三极管9018 作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性。
  关键词  :  WS2812  , ESP32  , SPI
  "   01 WS2812
     智 能集成LED光源 WS2812 [1]  通过简单的外部接口、特有的级联方案便于利用MCU完成多个LED控制,极大简化了LED控制接口。相比于传统的 单片机LED IO口复用控制方案 [2]  ,使用WS2812则更加的简介。
  ▲ 图1.1 灯珠控制闪烁  一、芯片简介1、特点与优势在5050封装内集成有控制电路和RGB芯片,形成完整像素点控制;  内置扫执行好整形电路,传递到级联下一节点时,不会产生信号失真累积效应;  内置复位电路与掉电复位电路;  每个RGB灯都有256亮度级别,可以形成中颜色,刷新频率不低于400Hz;  通过信号线完成端口级联;  传输距离在5米之内,无需增加额外电路;  在刷新频率30帧/秒中,低速模式下可以控制不少于512颗灯,高速模式下则超过1024颗灯;  数据传输速率为800kbps;  颜色一致性强,价格低;
  ▲ 图1.1.1 灯带点亮后的效果  2、应用全色彩模块;全色彩柔光灯带;  LED装饰灯带;室内、室外LED不规则显示屏;  3、管脚封装
  ▲ 图1.1.2 WS2812封装与管脚功能定义  二、工作原理1、工作电压
    根据  WS2812 [3]  数据手册,它的工作电压范围在,输入信号电压在工作电压VDD±0.5V范围内。三路LED的参数:
  【表2-1-1 RGB 参数】
  Emitting color Wavelength(nm) Luminous intensity(mcd) Current(mA) Voltage(V) Red  620-630  550-700  16  1.8-2.2  Green    515-530    1100-1400    16    2.8~3.1    Blue  465-475  200-400  16  3.0-3.4  2、控制协议
    WS2812的级联控制协议非常简单。通过一根信号线就可以进行串行异步信号发送。
    下面显示了四个WS2812通过数据性级联的方式。在串行通讯中使用不同高低电平脉冲表示数据0,1编码。
  ▲ 图1.2.1 级联方法与编码波形
  【221. 脉冲编码参数】
  脉冲 定义 时间 误差 T0H  0 code ,high voltage time  0.4us  ±150ns  T1H    1 code ,high voltage time    0.85us    ±150ns    T0L  0 code , low voltage time  0.85us  ±150ns  T1L    1 code ,low voltage time    0.4us    ±150ns    RES  low voltage time  Above 50μs
    下面是三个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 灯带点亮后的效果  02 ESP32-SPI
     由 于控制WS2812的脉冲高低电平在0.85us,0.4us,时间间隔,为了产生这样的脉冲,使用普通的软件控制IO口是无法完成的,下面测试使用其中的 硬件SPI [4]  产生控制脉冲信号。 一、ESP32中的硬件SPI
    在ESP32中具有两路硬件SPI端口,可以最快达到始终速率80MHz,这可以满足对WS2812的控制脉冲的速率。  1、SPI缺省管脚
    如果使用SPI缺省配置管脚,输出速率可以达到80MHz,如果使用其它GPIO,则输出的速率则需要限制在40MHz以下。
  【表2-1-1 ESP32 硬件SPI缺省端口】
  管脚 HSPI(id=1) HSPI(id=2) SCK  14  18  MOSI    13    23    MISO  12  19  2、ESP32实验转接板
    利用  ESP32实验转接板 [5]  ,测试硬件SPI端口。
  ▲ 图2.1.1 ESP32实验转接板
    使用SPI id=1,对应的SPI,MOSI,MISO的对口为,14,13,12,对应的实验转接板上的输出管脚如下图所示,从右往左分别是:
    ●  ESP32转接板SPI管脚定义:
     SCK :PIN9
     MISO :PIN8
     MOSI :PIN7
  ▲ 图2.1.2 ESP32中对应的SPI,MOSI,MISO的管脚  3、测试SPI输出波形
    初始化SPI端口,使得输出速率为10MHz,输出数据0x55,0xaa,使用示波器观察MOSI,SPI波形。  (1)测试缺省SPI模式from machine                import Pin,Timer,SPI import time  hspi = SPI(1, 10000000, sck=Pin(14), mosi=Pin(13), miso=Pin(12))  buf = bytes((0x55,0xaa)) print(buf)  while True:     hspi.write(buf)     time.sleep_ms(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控制脉冲电平极性要求。它要求控制信号在平时为高电平,通过低电平脉冲获得复位信号、0/1数据位信号。  提高带载能力。  1、信号反向电路
  ▲ 图2.2.1 MOSI信号反向电路  2、电路测试(1)晶体管BC547
    由于BC547B的截止频率只有300MHz,信号通过BC547之后,引起了很大的失真。下图显示了信号波形。
  ▲ 图2.2.2 MOSI 输入输出信号  (2)晶体管9018
    为了提高响应速度,对电路进行如下的调整:
    ●  电路元器件参数:
     Q1 :9018
     R1 :10k
     R2 :200
  ▲ 图2.2.3 电路参数修改之后输入输出波形  三、产生控制波形1、产生RESET信号
    根据WS2812控制信号协议,RESET是时长超过50us的低电平,因此,在2.5MHz的波特率下,连续输出125bit的高电平,也就是16个byte的0xff,则可以产生:个1输出,便可以产生的低电平。  from machine                import Pin,Timer,SPI import time  hspi = SPI(1, 2500000, sck=Pin(14), mosi=Pin(13), miso=Pin(12),            polarity=0)  buf = bytes([0xff]*16) print(buf)  while True:     hspi.write(buf)     time.sleep_ms(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:
     RGB-0 :SPI-011
     RGB-1 :SPI-001 (1)转换代码from machine                import Pin,Timer,SPI import time  hspi = SPI(1, 2500000, sck=Pin(14), mosi=Pin(13), miso=Pin(12),            polarity=0)  def byte2bin(b):     bstr = bin(b)[2:]     return "0"*(8-len(bstr)) + bstr  def rgb2byte(r,g,b):     str = byte2bin(g) + byte2bin(r) + byte2bin(b)     spistr = "".join([(lambda s: "011" if s*"0" else "001")(x) for x in str])     rgbdim = [int(spistr[i*8:i*8+8], 2) for i in range(9)]     return bytes(rgbdim)  rgbbyte = rgb2byte(0xff,0x80,0x3f) print(rgbbyte)  rstbyte = bytes([0xff]*16) outbyte = rstbyte+rgbbyte  while True:     hspi.write(outbyte)     time.sleep_ms(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.1 DI波形以及对应的WS2812颜色  2、降低R1的阻值
    降低R1阻值,提高Q1响应时间,以及输出低电平降低。最后将R1的阻值更换成3.3k欧姆之后,D1波形有了改善,此时WS2812的颜色与设置的参数相符了。
  ▲ 图2.4.2 DI波形以及对应的WS2812颜色
  ▲ 图2.4.3 最终对应的电路图中的参数  3、RGB转换颜色
    编程依次输出RGB颜色。  3、RGB转换颜色from machine                import Pin,Timer,SPI import time  hspi = SPI(1, 2500000, sck=Pin(14), mosi=Pin(13), miso=Pin(12),            polarity=0)  def byte2bin(b):     bstr = bin(b)[2:]     return "0"*(8-len(bstr)) + bstr  def rgb2byte(r,g,b):     str = byte2bin(g) + byte2bin(r) + byte2bin(b)     spistr = "".join([(lambda s: "011" if s*"0" else "001")(x) for x in str])     rgbdim = [int(spistr[i*8:i*8+8], 2) for i in range(9)]     return bytes(rgbdim)  rgbbyte = rgb2byte(0xff,0x0,0x0) rstbyte = bytes([0xff]*16) outbyte = rstbyte+rgbbyte+rstbyte  while True:     rgbbyte = rgb2byte(0xff,0x0,0x0)     outbyte = rstbyte+rgbbyte+rstbyte     hspi.write(outbyte)     time.sleep_ms(500)      rgbbyte = rgb2byte(0x0,0xff,0x0)     outbyte = rstbyte+rgbbyte+rstbyte     hspi.write(outbyte)     time.sleep_ms(500)      rgbbyte = rgb2byte(0x0,0x0,0xff)     outbyte = rstbyte+rgbbyte+rstbyte     hspi.write(outbyte)     time.sleep_ms(500)
    下面显示了WS2812在SPI输出波形控制下完成颜色的转换。
  ▲ 图2.4.4 RGB转换颜色  ※ 实验总结 ※
     利 用ESP32中的硬件SPI输出脉冲波形,控制WS2812响应。
    通过电路调整,选择了高频晶体管9018 作为输出反向晶体管,确定了放大电路参数,测试验证了利用高速SPI控制WS2812的硬件电路和软件。  参考资料
  [1]
  WS2812 :  https://wenku.baidu.com/view/c8b79d88fad6195f312ba6d3.html
  [2]
  单片机LED IO口复用控制方案 :  https://zhuoqing.blog.csdn.net/article/details/116725947
  [3]
  WS2812 :  https://d2j2m4p6r3pg95.cloudfront.net/module_files/led-cube/assets/datasheets/WS2812B.pdf
  [4]
  硬件SPI :  https://docs.micropython.org/en/latest/esp32/quickref.html#hardware-spi-bus
  [5]
  ESP32实验转接板 :  https://zhuoqing.blog.csdn.net/article/details/115563474

当下续航极佳的5款手机,出门不用带充电宝,可满足一整天的使用不知道大家发现一个问题没,那就是现在的手机厂商宣传新品的时候很喜欢以屏幕影像系统快充散热等方面,就连设计也能拿出来得瑟一波,所谓的LikePhone风格早就成为历史了。但是呢,你要RedmiBookPro2022正式发布,12代酷睿H45处理器80W性能释放这两天RedmiK50系列持续出圈,大家把焦点都放在了手机上,其实我们忽略了一款更具性价比的产品,它就是RedmiBookPro2022。无论是处理器,显卡,屏幕,散热,续航较上一早报新能源多重利好,氢能站上万亿风口特高压进入新发展期一水泥涨价全国多地再次上调水泥价格。点评水泥价格波动受成本因素影响较大,基于当前水泥行业的压力,水泥进入高成本时代,与水泥息息相关的便是基建,水泥景气彰显韧性,相关产业链均受影响,SonnocP1T投影机深度评测小巧便携自带电池打造移动家庭影院最近一直想在卧室弄个投影仪。虽然说客厅是有电视机的,看电视挺方便的,但有时候我更喜欢在卧室看电视。尤其是大冬天的,窝在被窝里追剧,那滋味别提有多香了。但是讲真,在卧室放一台电视机的俄地方法院决定禁止脸书及Instagram在俄运营据俄罗斯卫星通讯社报道,俄罗斯莫斯科特维尔区法院当地时间21日禁止Facebook和Instagram在俄运营,原因是上述两个社交网站均有极端主义行为。据报道,法院的决定是对Fac英研究报告揭示最无聊的工作和爱好据美国欧亚评论网站近日报道,英国埃塞克斯大学的研究发现,世界上最无聊的人是一名宗教数据录入人员,他喜欢看电视,住在一个小镇上。这项经过同行评议的无聊科学研究结果揭示了被认为是典型的AppleSwift和瑞士,在俄乌战争中砸碎的那些东西如果是因为战火造成了服务中断,没有太多人会在意,但是Apple卖出去的手机居然限制了俄罗斯人使用一部分软件,这问题性质可就不一样了第一,Apple告诉全世界,它可以这么做。全世界都刷宝短视频APP被约谈中新经纬3月22日电中央网信办举报中心微信号22日消息,因个别用户账号存在发布或传播法律法规禁止发布信息内容,海南省网信办日前依法约谈刷宝短视频APP运营主体相关负责人。海南省网信MIUI系统升级更新完,这17款APP记得卸载,可放心删除在MIUI系统升级更新完,或者新买的手机,有没有发现MIUI系统会预装一些系统APP,这些APP有些你可能几个月或者一年都不会用到几次次,甚至点击一下,而这些APP完成可卸载,既能部分用户称iOS15。4太耗电!有机型续航降半,苹果称将进行调查,网友逼着用户换新款?中国经济周刊经济网讯据媒体报道,上周苹果开始推出iOS15。4正式版。然而,越来越多的人在OTA后报告了糟糕的电池续航。一些网友称,iPhone13ProMax只能维持半天续航时间洗碗机究竟值不值得入手?我使用了半年多,来客观的谈谈感受目前,洗碗机行业正在国内高速的发展。洗碗机到底该不该买,该买什么样的?这是近些年装修业主最纠结的问题之一。对于这个新型的厨房电器,大家对它的评价也是两极分化有的人说它是妥妥地收割智
电脑如何设置定时自动清理回收站?电脑使用久了肯定产生不少垃圾文件,如果不是文件太大的话,删除的文件都是回经过回收站暂存的。没有及时清理的话,会影响系统的正常运行,电脑容易卡顿。所以平时需要时不时地清理下回收站,腾一加(OnePlus)AceVS真我(Realme)GTNeo3买那个?一加Ace和真我GTNeo3拥有几乎相同的参数配置。一加Ace和真我GTNeo3一加Ace和真我GTNeo3都已经发布并开始销售了,有趣的是两款手机拥有相似的参数配置,这让很多人不打工人炒股神器来了,海豚股票带来互联网券商颠覆新玩法茜说金语出品当你上班忙得不可开交时,你的股票可能已经在证券软件里悄无声息地错过了一波暴涨,甚至是几年内难得一见的出货位当你看股市行情不好,不敢满仓的时候,只能任资金在账户上躺平当你AsahiLinux致力于将M1MacNVMe驱动支持并入Linux5。19主线内核尽管非易失性内存主机控制器(NVMe)接口规范已经成为行业标准多年,但想要让运行Linux内核的AppleSilicon设备支持它,仍需付出相当大的努力。好消息是,负责该驱动程序的山西携手华为给智能煤矿再添新技能中新网太原5月19日电(记者李新锁)作为中国首个5G智能煤矿,山西潞安化工集团新元煤矿再次携手华为公司给智能煤矿增添新技能。19日,潞安化工集团新元煤矿5G智能化矿井建设办公室主任新基建新能源数字经济健康医疗是中国经济的未来作者WinnieLau央行的货币政策,最近是有所松动,只不过以往刺激的是房地产和老基建,现在发力的则是新基建新能源数字经济健康医疗这些行业,利好的量级是万亿级的。时代转身了,如果说中国领先欧美的41项硬核科技一华为的通讯设备世界上能由国产设备组成自主通信网络的国家只有中美两国。实际上,世界大约100多个国家都使用华为的通讯设备组成的网络。比如日本为例,日本的4G网络设备中,华为占据相当Linux中Grep命令的常见示例,很全面Grep是一个强大的UNIX命令,可让您在文件内容中搜索各种参数。当您进行故障排除或调试时,它特别有用。grep命令有大量的选项和用例。您可能永远不需要或使用所有这些。但是,您最终一亿多年前的恐龙跟今天的我们一样,深受呼吸道感染的困扰现在,新冠肺炎疫情虽然已经进入第三个年头,仍对世界各国人民造成极大的困扰。谁曾想,一亿多年前,恐龙跟今天的我们一样,也深受呼吸道感染的困扰。它们跟今天的我们一样,也会因为感染呼吸道培训机构管理日常工作用哪款软件方便?从6个方面入手,分享一套对教育培训机构管理日常工作很帮助的解决方案。轻流的客户中,诺博教育作为国内首家以幼儿园委托经营为核心业务的新三板上市公司,在使用过轻流搭建出培训机构的教育管知乎裁员传闻引出神奇系统可监测员工离职倾向,3年只需4万元随着知乎裁员的传闻传出,一个号称能监控员工离职倾向的系统进入大众视线。一张网传系统后台图片显示,一名鞠姓员工访问求职网站23次,投递简历9次,含关键词的聊天记录254条。红星资本局