3回答

1收藏

[原创] 【TYDE3.0 涂鸦智能 IoT开发板】-坏RGB灯魔改到正常

物联网 物联网 5418 人阅读 | 3 人回复 | 2018-02-26

本帖最后由 简简单单_3013189 于 2018-2-26 16:32 编辑

1.RGB不能工作原因说明:
背景:相信好多小伙伴收到板子后发现有些板子上的RGB灯无法工作!!!
原因:板子上的RGB灯物料安装错误,查看了原理图的朋友可能知道,正常的RGB灯应该是只含有3个LED的,但是我们有些板子的RGB灯却是个高级货(WS2813),内置控制芯片,需要满足控制时序才能点亮,那么我们就来改改电路和时序让WS2813亮起来。

2.WS2813芯片介绍:


3.开发板硬件电路改动图
【1】1脚对应NC用剪刀剪断,否则影响工作.
【2】把5脚R灯对应的电阻换成0欧,把此脚当作RGB灯的地线端.(PB8).
【3】把4脚G灯端当作WS2813的数据输入端(PB7),硬件不用修改,这里只是说明一下.


4.WS2813芯片时序介绍:


5.RGB控制代码改动:
【1】数据传输函数
void Send_8bits(uint8_t dat) {
         uint8_t a;

         for(a=0;a<8;a++)   {
                   GPIO_SetBits(GPIOB, GPIO_Pin_ 7);     
                   If(dat & 0x80) {
                asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                 asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            dat=dat<<1;      
                            GPIO_ResetBits(GPIOB, GPIO_Pin_ 7);
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");     
                   }     else     {
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");        
                            dat=dat<<1;      
                            GPIO_ResetBits(GPIOB, GPIO_Pin_ 7);
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");      
                            asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");   
                   }      
         }
}  
【2】控制灯光颜色函数
void Send_2811_24bits(uint8_t dat1,uint8_t dat2,uint8_t dat3) {  
         Send_8bits(dat1);   // Red Value
         Send_8bits(dat2);   // Green Value
         Send_8bits(dat3);  // Blue Value
}  
【3】WS2813复位函数
void rst() {
         uint16_t i;  
         GPIO_ResetBits(GPIOB, GPIO_Pin_ 7);
         for(i=0;i<100;i++);
}
【4】移植方法:
需要把RGB_LED_control(uint8_t R, uint8_t G, uint8_t B)改为
void RGB_LED_control(uint8_t R, uint8_t G, uint8_t B){
    GPIO_ResetBits(GPIOB, GPIO_Pin_ 8); //RGB 接地
    rst();//复位
    Send_2811_24bits(R,G,B);
}

祝你们好运,调好后RGB就能正常工作啦!下一篇发表我自己的测试结果,有问题可以回帖

分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

简简单单_3013189

发表于 2018-2-26 20:38:42 | 只看该作者

附上改好后的代码,错误RGB就能工作了

Mike_RGB.rar

2.98 MB, 下载次数: 21

板凳

toofree

发表于 2018-2-26 23:26:42 | 只看该作者

厉害厉害
地板

tobot

发表于 2018-2-27 00:08:14 | 只看该作者

我也魔改了。。。,硬件已经弄了,但还没写程序
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条