系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
WS2813-Mini是一种可控发光的LED灯珠,可以单独也可以串连使用,用来做氛围灯或者点阵显示。整理来说还是很不错,不过有几个点需要注意一下,不然真的会哀叹是个坑啊。
提示:以下是本篇文章正文内容,下面案例可供参考
一、关于封装
很多的同学会用嘉立创的封装来进行设计,但是需要注意的是,嘉立创上WS2813-Mini的正负极丝印是反着的。这样子在SMT的时候,嘉立创的工程师通常会按照丝印的方向进行摆放。然后你就会发现点不亮,欲哭无泪。
WS2813-Mini 还有一个版本是WS2813B-Mini。从引脚的定义和电气的特性上都有一些区别,如果用错的话也是点不亮的。但是很不幸的是,嘉立创上目前可能会存在一些混料,完全按照WS2813的手册设计的话,有可能会出现问题。这个就很难受,因此设计的时候最好是兼容设计。
二、原理图设计
这里可以看到主要的区别就是1角,WS2813的一脚是VCC,手册上说串一个保护电阻到VDD,有可能是可以调节电流的。但是WS2813B是一个备用的IO输出。
如果芯片用错,可能会影响输入的I/O状态。
最好就是将1脚空余,这样无论是哪种IC,都可以正常使用。
三、电平匹配
WS2813-Mini的供电范围是+3.7~+5.3V,其I/O的高低电平判断会随VDD进行变化,高电平需要大于0.7VDD,低电平需要小于0.3VDD。现在的ARM芯片的管脚一般是3.3V,如果IO直驱且要保证状态识别正常的话,供电电压最好不要超过4.7V。如果你直接使用5V供电的话,那么有可能出现LED显示状态异常的情况,很有可能就是电平匹配的问题。
建议是串一个二极管,或者直接提供合适的DC源。二极管的选择,可以选择管压降大一点的,如1N4007这种的。
四、驱动程序设计
驱动程序的设计上,一开始也是没注意,看手册发现其要求的时序还是非常的快的。
基本都是在几百个ns的范围上。而像是STM32单片机,其I/O的实际翻转速度应该最大10MHz,也就是100个ns左右。而且这么高的翻转速度是不是要考虑线长的一些因素?
实测约半米的线长,还是能够实现驱动的。
另外就是程序的编写,基于STM32F103来写的话,内核的速度在72MHz,单指令大约在14ns左右,驱动的话肯定不能封装到函数中去,因为一个函数的调用还有入栈出栈的操作,就要耗费十几个周期,就没办法可控了。借鉴网上的做法使用NOP的方式。具体其翻转的时间还需要借用示波器或者逻辑分析仪抓取后调整。
//晶振72M,1/72≈0.014us=14ns
#define delay_14ns() __nop()
#define delay_56ns() delay_14ns();delay_14ns();delay_14ns();delay_14ns()
#define delay_224ns() delay_56ns();delay_56ns();delay_56ns();delay_56ns()
#define delay_896ns() delay_224ns();delay_224ns();delay_224ns();delay_224ns()
此外在FreeRTOS这种操作系统内使用的话,执行LED驱动的时候,还要使用临界区保护来防止任务切换打断IO的时序。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。