前言
之前朋友送了一包弘凯光电的iCLed35系列的样品,一直都放在抽屉里没有碰过。正好最近遇到客户在做氛围灯时选择了他家的产品,便抽空研究了一下,从使用感受上来说,相比ISELED,iCLed控制方式更加简单灵活。
下文简要介绍下iCLed35的性能以及借助S32K144EVB控制iCLed35实现一些简单的效果。
iCLed35整体介绍
iCLed概念
iCLed是弘凯开发的一款IC内置的全彩led封装,通过IC直接封装在标准LED尺寸内,在生产上降低产品工艺难度,在体积上减少独立外置IC所需的额外空间,在色彩上满足了单点可控全彩的控制能力。
iCLed系列产品优势
产品优势
如上图所示,iCLed的产品优势主要有三部分:
- 结构优势:相比驱动IC+LED分立方案,占据的PCB面积更小;
- 设计优势:iCLed集成方案不用考虑内部IC和LED之间的电路,硬件设计非常简单。
- 颜色优势:iCLed的三基色都有256灰阶,可以呈现出16777216种颜色。
iCLed35(6pin)的特性:
iCLed35系列有4pin和6pin两类产品,本文介绍的是6pin的iCLed35,主要特性如下:
- ELA STD封装
- 自动识别位置序号
- 两线制串行通信(一根时钟线,一根数据线)
- RGB三色的调整范围都为0-255,每通道电流最大为20mA
- 支持休眠/唤醒,静态电流低至5uA
iCLed35(6pin)的硬件设计
推荐电路
上图为iCLed35(6pin)的推荐电路,注意事项如下:
- MCU和第一个iCLed35的通信线建议串接电阻,推荐阻值为300Ω;
- 每个iCLed35的VDD和GND之间建议串一个电容,推荐容值为0.1uF;
- VDD的供电范围为4.5-5.5V,推荐使用5V供电。
iCLed35(6pin)的软件配置
通讯时序:
通讯时序
iCLed35(6pin)的通讯时序如上图,注意点如下:
- 时钟速率在0-15MHz;
- 数据传输,高位在前,即MSB;
- 兼容SPI的模式0,即时钟相位(CPHA)为0,时钟极性(CPOL)为0。
通讯协议介绍:
整体的数据结构:
数据结构
整体的数据结构如上图,由起始帧、LED帧和结束帧三部分组成。
- 起始帧为连续32bit的‘0’;
- 结束帧为连续32bit的‘1’;
- LED帧由五部分组成:
- 最高的3bit用于normal模式("111')和睡眠模式("101")切换,
- 接着的5bit用于调节电流(如下图)
- 后面的24bit分为3个8bit,分别控制蓝色,绿色和红色的灰阶数值。
从整体的数据结构可以看出,LED帧的取值范围和结束帧是有重合的,即0xFF,笔者手上的数据手册比较早,没有描述iCLed35 (6pin)如何区分这两种帧。后面测试时遇到的一些小问题感觉和这种情况有关。
睡眠模式:
Sleep mode
- 睡眠指令(0xA0)如上,对应的iCLed接收到该指令后,进入睡眠模式,电流在1uA左右;
- 当收到非0xA0的数据时,对应的iCLed会在1ms之内从睡眠模式切换到正常模式。
点亮iCLed35(6pin)
为了快速点亮iCLed35(6pin),笔者选择了最熟悉的S32K144EVB。另外,iCLed35的样品袋里也有连接好的软灯带,将电源和通讯线引出即可。
S32K144EVB配置
- S32K144EVB用到的引脚如下图所示:
S32K144EVB_Pinout
- 左边的 5V和GND pin连接到iCLed的VDD和GND;
- 右边的PTB2/SPI_SCK和PTB4/SPI_SOUT分别连接到时钟线和数据线。
- 在S32DS 2.2中新建工程,先配置对应的SPI引脚,如下图:
LPSPI0引脚配置
- 然后进行SPI模块的详细配置,如下图:
LPSPI0模块配置
- 最后生成对应配置的代码并在mian.c中进行调用:
LPSPI0初始化
驱动iCLed35(6pin)
- 先准备需要用到的宏定义,数组以及函数,如下图:
- 然后在主函数中进行循环调用,如下图:
- 最终实现的效果为实现红绿蓝三种颜色的流水效果。
实际连接的iCLed35数量为10颗,在点亮绿色和蓝色时,需要发送11个LED帧才能使10个iCLed35都正常点亮,否则最后一个iCLed35显示异常;但是在点亮红色时,只需要正常发送10个LED帧就可以。