OSK-SK6112幻彩灯珠操作指南
目录
文章目录
产品描述
一、数据传输时间
1、编码时序
2、模式即功能选择命令格式
普通模式
状态回传及高阶工作模式
芯片多路并接、命令设置控制
二、控制器选择
1.MCU选择
2.读入数据
三、软件部分
1、IO口初始化
2、SK6112驱动
3、回调功能函数
4、设置ID号
5、判断ID号并作出相应的操作
6、主函数调用
四、效果展示
总结
产品描述
SK6112-RG-002是单线双向传输LED恒流驱动控制芯片。产品技术支持由欧思科光电科技有限公司提供,内部集成信号解码模块、数据双向传输控制模块、振荡器 模块、数据再生模块、恒流驱动模块、电流增益模块等。芯片在截取本级数据后,将其余数据再生并发送到下级芯片。 除提供一般的效果显示模式外,还可以通过特定的命令进入参数设置模式,在线调节RGB端口输出电流增益、改变 显示同步设置等。另外与其他灯珠不同的是,可自主选择对应ID亮特定灯数,可以让芯片进入状态回传模式,回传芯片RGB端口峰值电流数值、芯片级连数目等信息。
一、数据传输时间
1、编码时序
MCU的数据通过单线总线界面与芯片进行通信,通讯协议采用极性归零方式进行,每一字码元都必须有低电平。这里协议每一字码元的起始电平皆为高电平,高电平的时间宽度决定是“0”字码或是“1”字码。具体时序周期如图示,对应单位为微秒级别。
2、模式即功能选择命令格式
普通模式
Reset+第一个芯片24bits数据+第二颗芯片24bits数据+......+第N颗芯片24bits数据+Reset
高位在前,按G、R、B的顺序发送。
状态回传及高阶工作模式
MCU发送命令格式 Reset+Th50
Th50时序要求:上图时序上显示的脉冲顺序为典型值。可上下幅度20%。
这里要求待芯片上电后,MCU输出端口发送Reset+Th50命令后,当命令结束后,MCU接口改为输入模式,同时芯片从基本工作模式转入高阶工作模式,芯片的数据端口会切换为输出端口,发送数据给MCU,在等待10us后,发送一个带宽为Trev(可以不做理解,具体就是灯珠会回传数据给MCU)的高电平脉冲给MCU;如果芯片有m颗级联,则每隔80us会发送一个脉冲给MCU,共计m个脉冲。而当芯片在160us时间内没有接收到任何高电平脉冲后,芯片会自动恢复为正向输入状态。这里主要应用在,可以在灯珠断电后,在上电后可以计算灯珠数量。
芯片多路并接、命令设置控制
本次SK6112支持多路并接但可以各路独立控制(最多15路并接)的应用情景。透过特定的命令,可以识别在并接条件下的每一路灯串,并为每一路灯串进行编码,通过设置动态ID命令来控制(Set_ID),分配唯一的灯串动态ID。编码命令完成后,MCU可以借助“清除ID”/Clean_ID,“确认ID”/Cheak_ID,“指定灯串执行命令”/Specify_ID等命令,分别对各串灯珠发送命令或是传送显示数据。命令格式如下。MCU 可以通过发出带有 4'b0001 和 4 位新动态 ID 码(4'b0001 〜4b'1111)的设置命令,对灯串进行编码,更改灯串的动态 ID。MCU 发出命令 后,并接下每条灯串的第一颗 AP6112Y 芯片开始执行编码程序。
PS:在多路并接情况下,上电复位后,所有灯串默认的动态ID号均为0。为了避免MCU GPIO的输出和SK6112的Din端口的反馈回传脉冲之间的信号电平冲突,建议先发出set ID吗,命令后,在8us内将MCU GPIO口更改为输入模式,监听是否有灯串产生77us的正脉冲。
二、控制器选择
1.MCU选择
本次设计采用的MCU为辉芒微的FT60F0102X,优点:成本低,可多次烧录,操作简单,缺点则是速率较慢(驱动灯珠led够用),内存偏低。它的最高振荡频率支持16M,内存为2K。当然也可采用意法的STM32F103或STC等速率较高内存大的MCU,只要它的晶振振荡频率足以达到灯珠驱动的低电平的典型值0.2us就可以了。
2.读入数据
由于本次设计要求能够自由控制IO口输入输出,且控制器电源系统控制在3.3V~5V之间,为了让MCU IO端口正确的判读SK6112的Din是否已回应SET_ID命令并回传77us宽度的正脉冲,不建议在MCU连接至SK6112 Din的IO引脚上有上拉电阻至5V(灯珠电源)的设计。
三、软件部分
1、IO口初始化
这里我用到了PA1,PA4口一个用来设置按键控制,另一个则是通过输入输出驱动SK6112
void POWER_INITIAL (void)
{ OSCCON = 0B01110000; //IRCF=111=16MHz/4T=4MHz,0.25usINTCON = 0; //暂禁止所有中断PORTA = 0B00000000; TRISA = 0B00000010; //PA输入输出 0-输出 1-输入//PA1-输入 PA4-输出PORTC = 0B00000000; TRISC = 0B00000000; //PC输入输出 0-输出 1-输入 WPUA = 0B00000010; //PA端口上拉控制 1-开上拉 0-关上拉//开PA6上拉OPTION = 0B00001000; //Bit3=1,WDT MODE,PS=000=WDT RATE 1:1 MSCKCON = 0B00000000;//Bit4=0,禁止LVR(60F01x O版之前) //Bit4=0,LVREN使能时,开启LVR(60F01x O版及O版之后) //Bit4=1,LVREN使能时,工作时开启LVR,睡眠时自动关闭LVR(60F01x O版及O版后) CMCON0 = 0B00000111; //关闭比较器,CxIN为数字IO口
}
2、SK6112驱动
由于用到的此款MCU,速度偏慢,机器时间一个指令为0.25us,所以不以调用函数的方式实现,若采用24MHz以上晶振频率的MCU可以采用移位或指针的方式发送数据,是代码程序更加简便。
void light(unsigned char a){if(!(a&0x80)){ //发送数据段,0码ledcon=1;ledcon=0;}else{ledcon=1; //发送数据,1码NOP();ledcon=0;}if(!(a&0x40)){ledcon=1;ledcon=0;}else{ledcon=1;NOP();ledcon=0;}if(!(a&0x20)){ledcon=1;ledcon=0;}else{ledcon=1;NOP();ledcon=0;}if(!(a&0x10)){ledcon=1;ledcon=0;}else{ledcon=1;NOP();ledcon=0;}if(!(a&0x08)){ledcon=1;ledcon=0;}else{ledcon=1;NOP();ledcon=0;}
/*这里只发送5位数据,代码段过于长此处只写入五位*/
}
void sk6112(unsigned char r,unsigned char g,unsigned char b){ //通过函数调用分别按顺序发送G、R、Glight(g);light(r);light(b);
}
3、回调功能函数
由于辉芒微的输入输出操作可以直接操作寄存器控制。
int callback()
{int count,a,b,num;count=0;ledcon=num=0;TRISA = 0B00000010; //PA1-输入 PA4-输出DelayUs(260);ledcon=1;DelayUs(5);ledcon=0;DelayUs(2);ledcon=1;DelayUs(13);ledcon=0;DelayUs(2);TRISA = 0B00010010; //PA1-输入 PA4-输入for( a=0;a<27;a++){if(ledcon==1) //maichongpanduan{for( b=0;b<1;b++){if(ledcon==1){count++;}}if(count==1){num++;count=0;}else{count=0;}a=0;DelayUs(10);}}
TRISA = 0B00000010; //PA1-输入 PA4-输出for(int st=0;st<3;st++)
{
for(int ss=1;ss<num;ss++)
{sk6112(0,0,0);
}
sk6112(250,250,250);
DelayMs(1000);
for(int ss=0;ss<num;ss++)
{sk6112(0,0,0);
}
DelayMs(1000);
}
return num;
}
4、设置ID号
int setID()
{int IDn,stop,count,temp,IDnum,a,b;IDn=stop=1;count=IDnum=0;temp=16;while(stop){ledcon=0;DelayUs(300);ledcon=1;DelayUs(11);ledcon=0;DelayUs(2);//reset+th40ledcon=1;ledcon=0;NOP();ledcon=1;ledcon=0;NOP();ledcon=1;ledcon=0;NOP();ledcon=1;NOP();ledcon=0;//4b0001ID(IDn);TRISA = 0B00010010; //PA1-输入 PA4-输入for( a=0;a<18;a++){if(ledcon==1) //maichongpanduan{for( b=0;b<15;b++){if(ledcon==1){count++;}}if(count==15){IDn++;count=0;}else{count=0;}a=0; }}
TRISA = 0B00000010; //PA1-输入 PA4-输出
if(temp==IDn)
{stop=0;
}
temp=IDn;
}
DelayUs(20);
return IDn;
}
5、判断ID号并作出相应的操作
void specifyid(unsigned char IDn)
{ledcon=0;DelayUs(300);ledcon=1;DelayUs(11);ledcon=0;DelayUs(2);//reset+th40ledcon=1;ledcon=0;NOP();ledcon=1;NOP();ledcon=0;ledcon=1;ledcon=0;NOP();ledcon=1;ledcon=0;NOP();//4b0100ID(IDn);
}
6、主函数调用
void main()
{POWER_INITIAL(); //系统初始化int stIDnum[15];
int stnum;
stnum=setID();//分配ID
for(int w=1;w<=stnum;w++)
{specifyid(w);//指定对应IDstIDnum[w]=callback();//对应ID灯数存入数组
}while(1){DelayMs(100);
specifyid(3);
for(int a=0;a<stIDnum[3];a++)
{sk6112(0,250,0);
}
DelayMs(100);}
// }}
四、效果展示
这里由于电路设计等同于并联三串灯条,可实现高阶回传,及ID控制。
总结
以上就是此款SK6112,部分功能应用即编程,SK6112还算功能较多的IC集成灯珠,还有部分功能还没实践,可能代码方面有很大的改进,但独自摸索确实还是有点费时间,但简易功能操作就如上,欢迎来改错。
OSK-SK6112幻彩灯珠操作指南相关推荐
- (一)幻彩灯珠-SK6812
文章目录 一.简介 二.SK6812特性 三.详细设计 3.1. 硬件设计 3.2. 固件设计 3.2.1 时序分析 3.2.2 数据结构分析 3.2.3 源码 一.简介 幻彩灯珠其内置IC,可显示2 ...
- SK6805MICRO-2427RGB灯珠 2427RGB内置IC灯珠 适用显示领域、智能应用、蓝牙WiFi装饰
深圳市日不落灯光科技有限公司专业内置芯片LED及方案产品开发.专业生产4020侧发光/SK6812.6822/2813断点续传LED.4020侧发光LED.2427RGB/3535MINI小尺寸封装等 ...
- 断点续传灯珠SK6813/WS2813 5V内置IC-LED 智能指示灯珠
SK6813是一款串并级联控制电路与发光电路于一体的智能外控LED光源.其外 型与一个5050LED灯珠相同,每个元件即为一个像素点.像素点内部包含了智能数 字接口数据锁存信号整形放大驱动电路,电源稳 ...
- TX1812内置IC灯珠WS2812SK6812升级款
TX1812C内置IC灯珠产品介绍: TX1812C-内置驱动IC 5050RGB灯珠 是一款内置驱动IC灯珠的升级版,汲取了前几代内置灯珠的优势以及经验后 从新改样打造的一款升级版内置驱动IC灯珠. ...
- WS2812串行可控彩色LED灯珠
简 介: 利用ESP32中的硬件SPI控制WS2812的显示.使用了高频三极管9018 作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性. 关键词: WS2812,ESP32 ...
- iservice封装有哪些方法_5w大功率led白光灯珠参数,5w大功率led灯珠有哪些?
5w大功率led,5w大功率led白光灯珠参数,5w大功率led灯珠有哪些? 5w大功率led,5w大功率led白光灯珠参数,5w大功率led灯珠有哪些? 5w大功率led灯珠 今天上午,一位台湾高雄 ...
- 照片尺寸大小对照表_贴片led灯珠型号对照表在手,贴片灯珠选型从此不愁!
昨天,我们分享了,led灯珠规格型号一览表(贴片灯珠规格型号系列一). 贴片led灯珠型号对照表. 我们前面已经说过,像0201灯珠,0402灯珠,0603灯珠,0805灯珠和1206灯珠,主要是用在 ...
- 灯珠电路图_可充电led台灯电路图
充电式LED台灯的电路图 电路如上图所示.接通电源,交流220V电压经电容C1降压限流.整流桥桥式整流及电容C2滤波后,产生一个直流电压通过二极管VD给4V的蓄电池充电.蓄电池的充电电流主要由电容C1 ...
- STC15点亮WS2812灯珠(C结合汇编)
WS2812自带5050灯珠,只需要一个IO口就能够驱动LED灯带,十分方便.但是,由于需要800K的PWM信号,对大部分单片机来说,压力非常大,通常单片机的硬件PWM只支持到100K左右. 好不容易 ...
最新文章
- 基于python的手写数字识别knn_KNN分类算法实现手写数字识别
- LearningR-XML
- python编写es脚本_es数据迁移脚本(python)
- 【BZOJ-4245】OR-XOR 按位贪心
- wxWidgets:wxAny类用法
- 封装不同类模板的随机数生成器
- QML笔记-自定义控件的2种点击方式(推荐第二种)
- wap打包 本地化 hbuilder_秋收接近尾声 冰城开启秸秆打包、秋整地
- MVC判断用是否登录了平台
- 360推出国内首个工业互联网安全态势感知系统
- Shell脚本学习-阶段一
- 不会框架不要紧,我带你自定义框架
- redis常用命令getex_Redis 常用命令篇(末尾含不常用)
- 2021高考成绩已出城市查询,2021年青海高考成绩什么时候出来 公布时间
- Centos7安装达梦(DM7)数据库
- windows系统腾讯qq自带截图工具自动滚动截长图方法
- unity材质丢失素材变成粉红色的解决方法
- 计算机技术在中医领域的应用,计算机技术在中医药领域的应用概况.doc
- 高通平台开发系列讲解(工具篇)ramdump获取与解析
- 开发到底要不要转行软件测试?