目录

文章目录

产品描述

一、数据传输时间

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幻彩灯珠操作指南相关推荐

  1. (一)幻彩灯珠-SK6812

    文章目录 一.简介 二.SK6812特性 三.详细设计 3.1. 硬件设计 3.2. 固件设计 3.2.1 时序分析 3.2.2 数据结构分析 3.2.3 源码 一.简介 幻彩灯珠其内置IC,可显示2 ...

  2. SK6805MICRO-2427RGB灯珠 2427RGB内置IC灯珠 适用显示领域、智能应用、蓝牙WiFi装饰

    深圳市日不落灯光科技有限公司专业内置芯片LED及方案产品开发.专业生产4020侧发光/SK6812.6822/2813断点续传LED.4020侧发光LED.2427RGB/3535MINI小尺寸封装等 ...

  3. 断点续传灯珠SK6813/WS2813 5V内置IC-LED 智能指示灯珠

    SK6813是一款串并级联控制电路与发光电路于一体的智能外控LED光源.其外 型与一个5050LED灯珠相同,每个元件即为一个像素点.像素点内部包含了智能数 字接口数据锁存信号整形放大驱动电路,电源稳 ...

  4. TX1812内置IC灯珠WS2812SK6812升级款

    TX1812C内置IC灯珠产品介绍: TX1812C-内置驱动IC 5050RGB灯珠 是一款内置驱动IC灯珠的升级版,汲取了前几代内置灯珠的优势以及经验后 从新改样打造的一款升级版内置驱动IC灯珠. ...

  5. WS2812串行可控彩色LED灯珠

    简 介: 利用ESP32中的硬件SPI控制WS2812的显示.使用了高频三极管9018 作为输出接口反向器,确定合适的电阻参数,验证了驱动方案的硬件和软件的可行性. 关键词: WS2812,ESP32 ...

  6. iservice封装有哪些方法_5w大功率led白光灯珠参数,5w大功率led灯珠有哪些?

    5w大功率led,5w大功率led白光灯珠参数,5w大功率led灯珠有哪些? 5w大功率led,5w大功率led白光灯珠参数,5w大功率led灯珠有哪些? 5w大功率led灯珠 今天上午,一位台湾高雄 ...

  7. 照片尺寸大小对照表_贴片led灯珠型号对照表在手,贴片灯珠选型从此不愁!

    昨天,我们分享了,led灯珠规格型号一览表(贴片灯珠规格型号系列一). 贴片led灯珠型号对照表. 我们前面已经说过,像0201灯珠,0402灯珠,0603灯珠,0805灯珠和1206灯珠,主要是用在 ...

  8. 灯珠电路图_可充电led台灯电路图

    充电式LED台灯的电路图 电路如上图所示.接通电源,交流220V电压经电容C1降压限流.整流桥桥式整流及电容C2滤波后,产生一个直流电压通过二极管VD给4V的蓄电池充电.蓄电池的充电电流主要由电容C1 ...

  9. STC15点亮WS2812灯珠(C结合汇编)

    WS2812自带5050灯珠,只需要一个IO口就能够驱动LED灯带,十分方便.但是,由于需要800K的PWM信号,对大部分单片机来说,压力非常大,通常单片机的硬件PWM只支持到100K左右. 好不容易 ...

最新文章

  1. 基于python的手写数字识别knn_KNN分类算法实现手写数字识别
  2. LearningR-XML
  3. python编写es脚本_es数据迁移脚本(python)
  4. 【BZOJ-4245】OR-XOR 按位贪心
  5. wxWidgets:wxAny类用法
  6. 封装不同类模板的随机数生成器
  7. QML笔记-自定义控件的2种点击方式(推荐第二种)
  8. wap打包 本地化 hbuilder_秋收接近尾声 冰城开启秸秆打包、秋整地
  9. MVC判断用是否登录了平台
  10. 360推出国内首个工业互联网安全态势感知系统
  11. Shell脚本学习-阶段一
  12. 不会框架不要紧,我带你自定义框架
  13. redis常用命令getex_Redis 常用命令篇(末尾含不常用)
  14. 2021高考成绩已出城市查询,2021年青海高考成绩什么时候出来 公布时间
  15. Centos7安装达梦(DM7)数据库
  16. windows系统腾讯qq自带截图工具自动滚动截长图方法
  17. unity材质丢失素材变成粉红色的解决方法
  18. 计算机技术在中医领域的应用,计算机技术在中医药领域的应用概况.doc
  19. 高通平台开发系列讲解(工具篇)ramdump获取与解析
  20. 开发到底要不要转行软件测试?

热门文章

  1. 什么是泛型以及泛型的作用?
  2. Java中使用发布订阅模式
  3. PS(MPG)文件格式分析
  4. 多维分析前端页面卡顿不流畅怎么办
  5. 远程控制机房空调新方法
  6. ARM寄存器(R13/R14/R15)
  7. i5 10210u和i7 8550u 的区别
  8. 解读链接脚本ld和案例分享
  9. LD_LIBRARY_PATH详解
  10. STM32H7 ADC 过采样对精度的影响效果