驱动RGB灯带MCU阐述
驱动RGB灯带MCU推荐
本文仅分享个人工作中积累的经验,无任何商业行为,若有更好的方案欢迎交流共同进步。
一、RGB灯带驱动IC简介
市面上存在多种RGB驱动IC,比如:WS2812,YX1903B,TC1903, SM16703P等;除此之外还有一种RGBW驱动IC,其相比上述驱动IC多了一个w驱动通道,工作方式大同小异。最近各家MCU急缺的情况下,各位在选型时一定要注意选取IC的归零码脉宽时间(一般是宽脉宽时间为900ns,短脉宽时间为300ns,参数允许波动范围可能会因IC存在一定差异),这样能够保证最快的速度更换IC。
二、MCU推荐
1.模拟时序驱动
本人使用赛元,新塘,沁恒微等国产51已模拟方式实现驱动RGB灯带。需要注意的地方是在发送一帧数据时关闭总中断,避免模拟数据脉宽时间被干扰。一般选择主频可达24M以上,同时需要根据驱动RGB灯带长度选取RAM资源大小。模拟实现核心代码如下所示:
#define cBIT1 {P26=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();P26=0;}
#define cBIT0 {P26=1;_nop_();P26=0;_nop_();_nop_();}
UINT8 bdata LED_DATA;
sbit DAT_bit0 = LED_DATA^7;
sbit DAT_bit1 = LED_DATA^6;
sbit DAT_bit2 = LED_DATA^5;
sbit DAT_bit3 = LED_DATA^4;
sbit DAT_bit4 = LED_DATA^3;
sbit DAT_bit5 = LED_DATA^2;
sbit DAT_bit6 = LED_DATA^1;
sbit DAT_bit7 = LED_DATA^0;
void sRGBSend(unsigned char dat)
{LED_DATA = dat;if(DAT_bit0){cBIT1}else{cBIT0}if(DAT_bit1){cBIT1}else{cBIT0}if(DAT_bit2){cBIT1}else{cBIT0}if(DAT_bit3){cBIT1}else{cBIT0}if(DAT_bit4){cBIT1}else{cBIT0}if(DAT_bit5){cBIT1}else{cBIT0}if(DAT_bit6){cBIT1}else{cBIT0}if(DAT_bit7){cBIT1}else{cBIT0}
}
上述关于BIT0和BIT1使用NOP个数因MCU不同可能会存在差异,需使用示波器自行测试验证。
2.硬件外设实现
对于STM32等32位强大类型的MCU,则可通过SPI,PWM功能实现驱动,但是对于低成本的产品此类MCU成本较高,这里不再赘述。锦锐科技的CA51F5系列MCU,CA51F5系列MCU自带两路级联LED驱动通道(比较可惜是此系列MCU无ADC功能,据说后期开发)。CA51F5系列初始化以及数据发送代码如下:
void sRGBInit(void)
{//级联驱动RGB初始化PWM2DIVH = 0; PWM2DIVL = 20; //周期配置寄存器PWM2DUTH = 0; PWM2DUTL = 5; //设置0码时间LEDUTH = 0; LEDUTL = 14; //设置1码时间 PWM2CON = 0x3A;PWM2CKD = 0; //PWM2工作不分频 LEDWTMH = 0;LEDWTML = 5; //设置暂停时间PWMEN = 4; //PWM2使能EA = 1;} void sRGBSendData(u8 *pRGBDataBuff,u16 wBufferLen)
{u16 wTemp;for(wTemp = 0;wTemp <wBufferLen;wTemp++ ){while(LEFLG & 0x40);LEDAT1 = *(pRGBDataBuff+bTemp);}
}
三、总结
驱动此类IC其实很简单,我们只需要研究透彻其工作原理即可。分享给大家一些驱动思路供大家进行学习,快速找到适合自己产品的开发方案,希望我们可以一起共同学习进步(可私信加V)。
驱动RGB灯带MCU阐述相关推荐
- FPGA驱动RGB灯带WS2812B
记录一下短学期做的东西 -- FPGA驱动RGB灯带WS2812B 设计目标 1.有多种模式,按键调节模式等参数: 2.模式1:红绿蓝白四色循环显示,速度.亮度可调: 3.模式2:7彩虹+白色,闪烁, ...
- JL690X(2)驱动RGB灯带
AC690X驱动WS2812(SM16703P)点亮RGB灯带 在使用AC690X系列蓝牙时,需要设计驱动几十个RGB灯带的程序,经一段时间学习后成功驱动,现在把实现过程分享给大家共同学习. 1.芯片 ...
- PWM+DMA驱动SK6812MINI灯带
SK6812MINI是一款常见的RGB灯带,它的工作状态稳定,驱动简单,通过简单的代码即可实现流动彩虹灯的功能.下面让我们来看一下它的具体实现流程吧! 1.硬件配置 PWM配置: 选择对应IO口的TI ...
- esp32 micropython 控制ws2812 RGB灯带
ws2812RGB灯带 ==注意:==灯带需要三个线头都接好,然后程序输出控制后才能亮,只是正负极插好不会亮的 连接走线: esp32 RGB灯带 5v引脚 母头电源处 gnd 母头gnd D12引脚 ...
- 基于arduino uno + WS2812b RGB灯带控制程序三
基于arduino uno + WS2812b RGB灯带控制程序三 下面这个函数,中的NEO_GRB + NEO_RGB参数搭配不一样,显示的效果和变换的样式就有差异,自由组合测试看效果. Adaf ...
- 51单片机-RGB灯带
这个实验是灯带上有30颗RGB灯,每颗芯片控制3颗RGB灯,要使这30颗灯全亮蓝色. 这个DIN就是输入口,它输出高电平或者低电平,然后将高低电平分配给OUTR(红),OUTG(绿),OUTB(蓝), ...
- RGB灯带简单案例 - 玛克君arduino
#include <Adafruit_NeoPixel.h> //128盏灯 信号口7 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(128, ...
- STM32F103ZE开发板WS2812B RGB灯带调试
调试时采用5颗灯珠的灯带. WS2812B每一颗灯都由24位控制,分为8位G,8为位R,8位B.从0到0xFF,数值越大那一种颜色越亮.发送的信号根据高低电平的时间分为1,0,和RES信号.103开发 ...
- ws2812/6810 RGB灯带在高通芯片上的控制
前段时间开发ws2812驱动.网上有一些参考,但是全部是在单片机上用pwm实现,估计是考虑实时性和时间高精度要求. 而我的项目的架构中,就只有一个高通的8939,并且只有一路pwm,还被红外ir给霸占 ...
最新文章
- 【blender教程】从头到尾全流程创建一辆吉普车
- Prewitt 边缘检测
- 【转载】知乎答案----孙志岗----Google 发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐...
- java 堆内存不释放_Java可以写入/读取已释放的堆内存吗?
- 在Java错误产生之前对其进行处理的新方法
- 文件的删除和文件信息的读取
- 对运算符重载的函数2
- 驱动加载工具(InstDrv - V1.3中文版)
- 贝叶斯网络是神经网络吗,贝叶斯网络和神经网络
- balenaEtcher-1.5.70可能是最好用的镜像写U盘工具 img to usb dmg to usb支持多种格式内附截图介绍多平台均有
- 企业如何布局数字化营销,打造私域运营闭环实现增长?
- 纵列式双旋翼直升机飞行控制律建模
- google服务框架 闪退_华为的谷歌服务打不开怎么办?
- mac网络设置_如何在Mac上设置和使用网络位置
- 矩阵快速幂: 网易2017实习生编程题 魔力手环
- KEIL 不使用microlib 报错__stdin __stdout重复定义
- 使用线性回归,岭回归,Lasso回归预测鲍鱼年龄
- php srs api,srs 身份认证
- obsidian和zotero联动无法跳转zotero
- 3D游戏开发可视化渲染调试工具-KylinsGraphicsDebugger
热门文章
- 【例题 8-4 UVA - 11134】Fabled Rooks
- 喜欢林肯公园(likin park)
- 计算机通识必修课程学什么内容,计算机公共必修课《大学计算机基础》课程教学大纲...
- Disney Springs - 迪士尼之泉
- ubantu查看设备序列号
- 关于Linux系统中文件名中带有空格问题分析
- 启动Intel TV-x设置
- 某电子计算机有400个终端,(第四章)大数定率与中心极限定理习题.doc
- 转载 | 在阿里做了3年多程序员,我究竟学到了什么?
- android u盘怎么打开文件夹图标不显示不出来了,如何解决U盘图标不显示但资源管理器中还能看到U盘...