WS2811芯片 SM16703 SOP8 RGB流水幻彩灯LED驱动IC

RGB彩灯总结:
整个RGB彩灯的调试,应该花了不少于两个星期,中间遇到了很多让我很难受甚至很想放弃的problems,但是自己最终还是弄了下来,不能说是坚持了先来,但是至少能实现RGB彩灯的基本功能了,现在也在完善中。既然花了自己这么长时间,那,一定得好好记录一下。也希望大家通过我的调试过程,能够学到你们需要的东西

RGB的调试主要分了两种方法,一种是通过驱动芯片:SM16703、WS2811、TM1829三种芯片进行调试;另外一种是直接通过三个引脚,利用PWM进行调试。

两种方法其实各有优缺点:

---------------------------------------------------------------------------------

第一种方法的优点是:它只需要通过一个IO(DIN),通过给驱动芯片写入数据,就可以控制RGB彩灯的色变,但是它最大的缺点(我认为)是不管是哪个芯片,它的时序要求都是十分十分严格的,如果时序调不对,一般都是上电之后显示的是白光,当初也是因为在网上copy的代码,也没怎么详细的对代码进行分析,上来就开始调试,但是始终没有成功,又开始疯狂的在网上搜集资料,最后结论基本都是一样:调时序,时序、时序、时序是最重要的。

第二种方法,直接用PWM对R、G、B三个灯进行颜色控制,通过改变三个通道的占空比(0~255),三个灯进行颜色的组合,就可以实现不同的颜色。用这种方法虽然占用了三个IO口,但是在操作上确实是比较简单。

第一种方法,利用驱动芯片进行调试,下面以WS2811芯片为例:

以STM32C8T6单片机而言:
外部晶振是8MHz,经过7倍频,为72MHz;所以它的一个时钟周期为1/72M=13.89ns

一个__nop();空语句按理来说应该占用的就是一个时钟周期,(这个可以通过逻辑分析仪进行测试)所以一个__nop();语句就是13.89ns;

这样就好说了,既然知道了一个__nop();语句占用的是13.89ns,那么当延时为500ns的时候,就可以500/13.89=36个,