瑞薩RA0單片機連載之SPI驅動WB2812B
1 前言
WS2812B是一種數字可編程LED燈條,也被稱為NeoPixel。它由RGB(紅、綠、藍)三種顏色的LED組成,并集成了控制電路和信號處理功能。每個WS2812B LED 都有一個唯一的地址,并可以通過單個數據線進行串聯連接。
WS2812B具有以下特點:
高度可編程性:每個LED可以獨立地設置顏色和亮度,因此可以實現各種動態效果和彩色變化。
簡單的控制接口:WS2812B使用單個數據線進行通信,通過發送特定的序列來控制每個LED的顏色和亮度。
低功耗:WS2812B采用高效的LED驅動技術,具有較低的功耗,適合電池供電的應用。
靈活的應用:WS2812B可廣泛應用于室內裝飾、燈光藝術、電子產品原型設計等領域,具有豐富的創意空間和應用場景。
24bit數據結構
G7 G6 G5 G4 G3 G2 G1 G0 R7 R6 R5 R4 R3 R2 R1 R0 B7 B6 B5 B4 B3 B2 B1 B0
注:高位先發,按照GRB 的順序發送數據。
2 引腳圖

引腳功能
| 序號 | 符號 | 管腳名 | 功能描述 |
| 1 | VDD | 電源 | 供電管腳 |
| 2 | DOUT | 數據輸出 | 控制數據信號輸出 |
| 3 | VSS | 地 | 信號接地和電源接地 |
| 4 | DIN | 數據輸入 | 控制數據信號輸入 |
當然,在使用的過程中,我們往往會使用不止一個LED燈,會將多個燈級聯成燈帶或者燈板,我們這次使用的就是燈板。
具體級聯方式如下:
典型應用數據:外圍電路不需要加濾波電容

其中DIN作為數據的輸入端,每個LED需要24位數據控制,多出的數據會通過DOUT 引腳傳遞給下一個LED,以此類推,當WS2812 接收到280us 以上的低電平時,數據被寫入LED,燈的顏色改變。
以下是數據的表示方法:
數據傳輸時間
| T0H | 0碼,高電平時間 | 220ns~380ns |
| T1H | 1碼,高電平時間 | 580ns~1μs |
| T0L | 0碼,低電平時間 | 580ns~1μs |
| T1L | 1碼,低電平時間 | 580ns~1μs |
| RES | 幀單位,低電平時間 | 280μs以上 |
時序波形圖
輸入碼型:

連接方法:

此次我采用SPI 的方式來驅動。SPI的時鐘調整為8MHz,發送一字節正好是1.25us,給ws2812 發送0即通過SPI 總線發送11000000b,發送1 即通過SPI 總線發送11111100b,非常巧妙的一種方式。
根據以上原理,我先配置SPI的stack如下:

經查看原理圖,配置SPI 的MOSI 為P101。
生成工程后,編寫代碼ws2812b.c 如下:





ws18b20c.h:

在主函數中添加測測試代碼如下:


代碼的主要思路是,將寫入buff先清零,然后向數據中寫信指定個數的RGB 數據,最后刷新到SPI 總線之中。
(本文來源于《EEPW》202507)











評論