RENESAS RA0微控制器序列化SPI驱动器WB2812B?

1前言WS2812B是一个数字程序LED灯条,也称为Neopixel。它由LED的三种颜色组成:RGB(红色,绿色和蓝色),包括控制电路和信号处理操作。每个WS2812B LED都有一个唯一的地址,可以通过单个数据电缆连接到该系列。 WS2812B具有以下功能:高度编程:每个LED都可以独立设置颜色和亮度,因此可以实现不同的动态效果和颜色变化。简单控制接口:WS2812B使用单个数据电缆进行通信,通过发送特定续集来控制每个LED的颜色和亮度。低功耗:WS2812B使用出色的LED驾驶技术,并且具有低功耗,这使其在电池供电的应用程序上更适当。灵活应用:WS2812B可以广泛用于室内装饰,艺术照明,电子产品原型设计和其他领域,具有丰富的创意和应用方案。 24比特dat结构G7 G6 G5 G4 G4 G3 G2 G1 G1 G1 G0 R7 R5 R4 R4 R3 R2 R2 R2 R0 B7 B7 B6 B5 B4 B4 B4 B3 B2 B2 B1 B0注意:数据首先发送到高位置,并且在GRB之后将数据发送到GRB。 2针图引脚功能课程描述,在使用过程中,我们通常使用多个LED灯,该灯会在灯条或灯板上执行多个灯。这次我们使用轻板。级联的特定方法如下:标准应用数据:外围电路不需要添加滤波器电容器,这也是数据的输入终端。 EACH LED需要24位数据控制。额外的数据可以传递给Dout Pin的下一个LED,依此类推。当WS2812收到高于280US的低水平时,数据写在LED上和灯的颜色上。以下是数据表示方法:波 - 置换干预时间的交付时间交付时间:连接过程:此时我使用SPI驱动它。 SPI时钟被调整为8MHz,一个BYTE正好是1.25US。将0发送给WS2812,即通过SPI总线发送11000000B,然后发送1,即通过SPI总线发送11111100B,这是一种非常聪明的方式。根据上述原则,我首先配置了SPI堆栈如下:审查原理图后,SPI MOSI将在P101处进行配置。开发项目后,编写代码WS2812B.C,例如:请参阅夹板印刷上的Plaincopy? 1。#include“ WS2812.H” 2.3。 Static UINT8_T Spidate [Spibufl] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 4. 0x00, 0x00, 0x00, 0x00, 4. 0x000. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0,0x0,0x0,0xf8,11。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0XC0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,16。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,21.2222。 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,25.265.26。 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,0xf8,27。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x 0xc0, 0xc0, 0xc0, 0xc0, 0xC0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,35。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0XC0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc00xf8,0xf8,53.54。 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,0xf8,55。 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,0xc0, 0xf8, 0xF8, 60. 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 65.66. 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,0xf8,65.66。 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf8,0xf8,0xf8,65.66。 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xf8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xc0, 0xc0, 0xF8, 0xF8, 0xF8, 0xf8,0xf8,0xf8,0xf8,0xc0,0xc0,0xf8,0xf8,0xf8,0xf8,0xf8,0xc0,0xc0,0xc0,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xc0 0xc0, 0xF8, 0xF8, 0xF8, 0xc0, 0xc0, 0xF8, 0xf8, 0xf8, 0xf8, 0xf8, 0xc0, 0xc0, 0xF8, 0xF8, 0xF8, 0xc0, 0xc0, 0xF8, 0xF8, 0xF8, 0xF8,72. 0xc0,0xc0,0xc0,0xc0,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf873。 }; 74.75。 void WS2812in(void)76。{77。 r_sau_spi_open(g_spi0_ctrl,g_spi0_cfg); 78.79。 } 80。81。void show(void)82。{83。 r_sau_spi_write(g_spi0_ctrl,spidate,spibufl,spi_bit_width_8_bits); 84。85。} 86.87。 void(void)88。{89。 memset(spidate [numres],0xc0,(numpixels) * 3 * 8); 90.} 91.92。估值setPixelColor(Uint16_t N,Uint8_t G,Uint8_t R,Uint8_t b)93。{94。 if(n numpixels){95。 uint8_t *p; 96。p= spidate [numres + n * 24]; 97。对于(uint8_t i = 0; i i ++)98。{99。 *(p + i)=(0 ==(g(1(7 -i))))? 0xc0:0xf8; 100.} 101。for(uint8_t i = 0; i i ++)102。{103。 *(p + i + 8)=(0 ==(r(1(7 -i))))? 0xc0:0xf8; 104.} 105。对于(uint8_t i = 0; i i ++)106。{107。 *(p + i + 16)=(0 ==(b(1(7 -i))))? 0xc0:0xf8; 108.} 109.} 110.} WS18B20C.H:请参阅剪贴板上的Plaincopy? 1。#IFNDEF WS2812_H_2。 #Define WS2812_H_3。 #include“ hal_data.h” 4.5。 #define numpixels(8)6。#define numres(60)7。#define spibufl(((numpixels) * 3 * 8 + numres)8.9。 void ws2812in(void); 10。估值表(void); 11。void(void); 12。void setPixelColor(Uint16_t N,Uint8_t G,Uint8_t R,U,Uint8_t b); 13.14。 #endif / * WS2812_H_ * /将测试代码添加到基本函数中,如下所示:请参阅clipboardprint上的Plaincopy? 1。有效的sau_spi_callback(spi_callback_args_t *p_args)2。{3。 (void)p_args; 4。 / * todo:在此处添加您自己的代码 * / 5。} 6.7。 /**********************************************************************************是由ra configur edi tor生成的,如果是我们的rtos,则用于生成线程。此函数9。 *当没有人使用rto.10时,由main()调用。 ********************************************************************************************************************* /*todo:在此处添加您自己的代码* /14。WS2812IN(); 15.16。而(1)17。{18。清除 (); 19.20。 for(uint8_t i = 0; i numpixels; i ++)21。{22。 setPixelColor(i,i*8+2,i*2,i*15); 23. show(); 24。25。} 26.27。 } 28.29.30。 #if bsp_tz_secure_build31。 / *输入非安全代码 */32。r_bsp_nonecureenter(); 33。#endif34。 }代码的主要思想是首先覆盖写作buff,然后在数据中写下指定的RGB数据编号,最后刷新它在SPI巴士上。