历史上的今天
返回首页

历史上的今天

今天是:2025年01月09日(星期四)

正在发生

2019年01月09日 | STM32驱动WS2812D全彩LED

2019-01-09 来源:eefocus

1.简介

一个集控制电路与发光电路于一体的智能外控 LED 光源。 其外型与一个 SMD5050 侧发光 LED 灯珠相同, 每个元件即为一个像素点。 像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路, 电源稳压电路, 内置恒流电路, 高精度 RC 振荡器, 输出驱动采用 PWM 技术, 有效保证了像素点内光的颜色高一致性。


● IC控制电路与LED点光源共用一个电源。


● 控制电路与RGB芯片集成在一个5mm直径的圆头四脚直插封装的灯珠中, 构成一个完整的外控像素点。


● 内置信号整形电路, 任何一个像素点收到信号后经过波形整形再输出, 保证线路波形畸变不会累加。


● 内置上电复位和掉电复位电路。


● 每个像素点的三基色颜色可实现256级亮度显示, 完成16777216种颜色的全真色彩显示。


● 扫描频率 2kHz/s。


● 串行级联接口, 能通过一根信号线完成数据的接收与解码。


● 任意两点传传输距离在不超过 2 米时无需增加任何电路。


● 当刷新速率 30 帧/秒时, 级联数不小于 2048 点。


● 数据发送速度可达 800Kbps


2.通讯协议


数据协议采用单线归零码的通讯方式, 像素点在上电复位以后, DIN端接受从控制器传输过来的数据, 首先送过来的24bit数据被第一个像素点提取后, 送到像素点内部的数据锁存器, 剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点, 每经过一个像素点的传输, 信号减少24bit。 像素点采用自动整形转发技术, 使得该像素点的级联个数不受信号传送的限制, 仅仅受限信号传输速度要求。


这里写图片描述


2.1 数据传输


这里写图片描述


对于 ns 延时,这里采用__nop() 实现,用 KEIL 调试了一下,发现几处的__nop()的延时不太一样,对于 72M主频,最小延时应该是:1/72000000=13.9ns,查询了一些资料,比较精确的延时还是得用示波器看一看。


2.2 24bit 数据结构


这里写图片描述


2.3 电路连接


这里写图片描述

图出处:天际智联STM32F103开源四轴


3.软件实现

头文件:


#define     RGB_LED     GPIO_Pin_9

#define     RGB_LED_HIGH    (GPIO_SetBits(GPIOB,RGB_LED))

#define     RGB_LED_LOW     (GPIO_ResetBits(GPIOB,RGB_LED))


void RGB_LED_Init(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);    

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       

    GPIO_Init(GPIOB, &GPIO_InitStructure);                  

    GPIO_SetBits(GPIOB,GPIO_Pin_9);                      

}


/********************************************************/

//

/********************************************************/

void RGB_LED_Write0(void)

{

    RGB_LED_HIGH;

    __nop();__nop();__nop();__nop();__nop();__nop();

    RGB_LED_LOW;

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();

}


/********************************************************/

//

/********************************************************/


void RGB_LED_Write1(void)

{

    RGB_LED_HIGH;

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();

    RGB_LED_LOW;

    __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();

    __nop();__nop();

}


void RGB_LED_Reset(void)

{

    RGB_LED_LOW;

    delay_us(80);

}


void RGB_LED_Write_Byte(uint8_t byte)

{

    uint8_t i;


    for(i=0;i<8;i++)

        {

            if(byte&0x80)

                {

                    RGB_LED_Write1();

            }

            else

                {

                    RGB_LED_Write0();

            }

        byte <<= 1;

    }

}


void RGB_LED_Write_24Bits(uint8_t green,uint8_t red,uint8_t blue)

{

    RGB_LED_Write_Byte(green);

    RGB_LED_Write_Byte(red);

    RGB_LED_Write_Byte(blue);

}



//亮灯颜色设定,其他颜色以此类推

void RGB_LED_Red(void)

{

     uint8_t i;

    //4个LED全彩灯

    for(i=0;i<4;i++)

        {

            RGB_LED_Write_24Bits(0, 0xff, 0);

    }

}


void RGB_LED_Green(void)

{

    uint8_t i;


    for(i=0;i<4;i++)

        {

            RGB_LED_Write_24Bits(0xff, 0, 0);

    }

}


void RGB_LED_Blue(void)

{

    uint8_t i;


    for(i=0;i<4;i++)

        {

            RGB_LED_Write_24Bits(0, 0, 0xff);

    }

}


推荐阅读

史海拾趣

ANOVA公司的发展小趣事

ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。

Galil Motion Control Inc公司的发展小趣事

ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。

APLUS Products公司的发展小趣事

随着国内市场的不断饱和,APLUS Products公司开始寻求国际化发展的道路。在XXXX年,公司成功打入欧洲市场,并在当地建立了分支机构。通过深入了解欧洲消费者的需求和偏好,公司不断优化产品设计和营销策略,逐渐赢得了欧洲消费者的认可和喜爱。

Gespac Inc公司的发展小趣事

随着国内市场的不断饱和,APLUS Products公司开始寻求国际化发展的道路。在XXXX年,公司成功打入欧洲市场,并在当地建立了分支机构。通过深入了解欧洲消费者的需求和偏好,公司不断优化产品设计和营销策略,逐渐赢得了欧洲消费者的认可和喜爱。

科达嘉CODACA公司的发展小趣事

随着电子行业的快速发展,科达嘉意识到技术革新是企业持续发展的关键。因此,公司不断增加自动化生产设备,购置先进的质量测试仪器,并筹建了电感元器件分析实验室和标准的AEC-Q200可靠性实验室。这些举措大大增强了公司的研发分析能力,提升了产品质量和生产效率。科达嘉逐渐形成了以材料研发、产品研发、生产、质量及物控为基础的完整产业链。

FEIG ELECTRONIC公司的发展小趣事

FEIG ELECTRONIC与意法半导体(STMicroelectronics)的合作是其发展史上的又一重要篇章。两家公司共同研发了一种非接触式个性化设置系统,该系统能够在短时间内完成对托盘上有意法半导体ST25DV NFC动态标签的货品的个性化设置,无需打开产品电源或包装。这一创新技术不仅大大提高了产品生产效率,还为客户提供了更加便捷、高效的服务体验。

问答坊 | AI 解惑

烟雾检测系统设计

用单片机C语言做一个烟雾检测系统,有高手路过帮帮忙指点!…

查看全部问答>

FTP下载时,客户端的数据连接如何控制接收的数据包的大小

开发环境vxworks+at91rm9200, c语言 现在做的项目有个需求,要求在ftp下载时,客户端可以控制数据连接中从服务器接收的数据包的大小。设置TCP_MAXSEG好像只能限制发送的数据包的大小,接收的数据包大小的限制不知道如何实现,各位大侠给个思路 ...…

查看全部问答>

请教各位对ce6.0源码结构了解的比较深入的高手们

请教各位高手,我发现在ce6里,ce6桌面窗口的创建以及消息处理函数是放在 \\WINCE600\\public\\wceshellfe\\oak\\TASKMAN\\mindeskt.cpp这个目录下面. 消息处理函数是 LRESULT CALLBACK Desktop_WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM l ...…

查看全部问答>

can总线问题

本人弄一套基于单片机的can总线开发包(主要用于汽车控制),不知道哪个好,请大家帮忙推荐一下…

查看全部问答>

做led白光螢光粉簡介

replyreload += \',\' + 681485;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

F2812 寄存器速查手册

F2812 寄存器速查手册,希望对大家有用! …

查看全部问答>

ADS1115 读低八位直接显示255

调ADS1115,低八位读出来的值总是显示255,所以最小只能调到255, 希望大侠们速度帮下忙! void main() {   ulong temp1=0,temp2=0,temp3=0;   int i;   // Stop watchdog timer to prevent time out reset & ...…

查看全部问答>

关于 大气采样器交流电机部分故障维修记录

今天想起来看看由车间送来的故障飞梭版的大气采样器,开机试机,发现工作不到3分钟,电机飞车。反复检查,也没找到问题所在。用示波器查看控制脉冲一切正常。 怀疑双向可控硅有质量问题,更换,再也没有这种故障了! 打开采样器,发现流量不稳, ...…

查看全部问答>

存储测试之h2testw

h2testw是德国人写的一个windows下免费的u盘(Flash)读写速度测试和坏块检测软件 ,可以检测目前所有的半导体存储设备的坏块情况,该软件通过向选择的目录内写入自行产生的单个最大1G的文件然后读出校验的方式确定坏块,准确性不容怀疑;同时,该软 ...…

查看全部问答>

多路复用器:并非那么简单

将多路复用器(或简称mux)设计成信号链很简单,对吗?毕竟,设备只需将多个信号放入数据转换器。 实际上,复用器可以各种方式显著影响信号链的性能。例如,导通电容可能导致通道之间的串扰。导通电阻的信号和温度相关变化可能导致信号失真。多路 ...…

查看全部问答>