于WS2812的时序解析
由此可以看的出来WS2812对时序还是要求比较严格的,需要到ns级别,我们也可以看到发0码的时序和发1码的时序是刚好相反的。 发送数据格式解析
- void WS2812_bit(bit data_bit)
- {
- if(data_bit)
- {
- LED=1;
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();_nop_();
- LED=0;
- }
- else
- {
- LED=1;
- _nop_();_nop_();_nop_();_nop_();
- LED=0;
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();
- }
- }
- void WS2812_rand_color(unsigned char R,unsigned char G,unsigned char B)
- {
- WS2812_bit(G&0X80);WS2812_bit(G&0X40);WS2812_bit(G&0X20);WS2812_bit(G&0X10);
- WS2812_bit(G&0X08);WS2812_bit(G&0X04);WS2812_bit(G&0X02);WS2812_bit(G&0X01);
-
- WS2812_bit(R&0X80);WS2812_bit(R&0X40);WS2812_bit(R&0X20);WS2812_bit(R&0X10);
- WS2812_bit(R&0X08);WS2812_bit(R&0X04);WS2812_bit(R&0X02);WS2812_bit(R&0X01);
-
- WS2812_bit(B&0X80);WS2812_bit(B&0X40);WS2812_bit(B&0X20);WS2812_bit(B&0X10);
- WS2812_bit(B&0X08);WS2812_bit(B&0X04);WS2812_bit(B&0X02);WS2812_bit(B&0X01);
- }
|