本帖最后由 简简单单_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就能正常工作啦!下一篇发表我自己的测试结果,有问题可以回帖
|