瑞薩RA0單片機(jī)連載之SPI驅(qū)動WB2812B
1 前言
WS2812B是一種數(shù)字可編程LED燈條,也被稱為NeoPixel。它由RGB(紅、綠、藍(lán))三種顏色的LED組成,并集成了控制電路和信號處理功能。每個(gè)WS2812B LED 都有一個(gè)唯一的地址,并可以通過單個(gè)數(shù)據(jù)線進(jìn)行串聯(lián)連接。
WS2812B具有以下特點(diǎn):
高度可編程性:每個(gè)LED可以獨(dú)立地設(shè)置顏色和亮度,因此可以實(shí)現(xiàn)各種動態(tài)效果和彩色變化。
簡單的控制接口:WS2812B使用單個(gè)數(shù)據(jù)線進(jìn)行通信,通過發(fā)送特定的序列來控制每個(gè)LED的顏色和亮度。
低功耗:WS2812B采用高效的LED驅(qū)動技術(shù),具有較低的功耗,適合電池供電的應(yīng)用。
靈活的應(yīng)用:WS2812B可廣泛應(yīng)用于室內(nèi)裝飾、燈光藝術(shù)、電子產(chǎn)品原型設(shè)計(jì)等領(lǐng)域,具有豐富的創(chuàng)意空間和應(yīng)用場景。
24bit數(shù)據(jù)結(jié)構(gòu)
G7 G6 G5 G4 G3 G2 G1 G0 R7 R6 R5 R4 R3 R2 R1 R0 B7 B6 B5 B4 B3 B2 B1 B0
注:高位先發(fā),按照GRB 的順序發(fā)送數(shù)據(jù)。
2 引腳圖
引腳功能
序號 | 符號 | 管腳名 | 功能描述 |
1 | VDD | 電源 | 供電管腳 |
2 | DOUT | 數(shù)據(jù)輸出 | 控制數(shù)據(jù)信號輸出 |
3 | VSS | 地 | 信號接地和電源接地 |
4 | DIN | 數(shù)據(jù)輸入 | 控制數(shù)據(jù)信號輸入 |
當(dāng)然,在使用的過程中,我們往往會使用不止一個(gè)LED燈,會將多個(gè)燈級聯(lián)成燈帶或者燈板,我們這次使用的就是燈板。
具體級聯(lián)方式如下:
典型應(yīng)用數(shù)據(jù):外圍電路不需要加濾波電容
其中DIN作為數(shù)據(jù)的輸入端,每個(gè)LED需要24位數(shù)據(jù)控制,多出的數(shù)據(jù)會通過DOUT 引腳傳遞給下一個(gè)LED,以此類推,當(dāng)WS2812 接收到280us 以上的低電平時(shí),數(shù)據(jù)被寫入LED,燈的顏色改變。
以下是數(shù)據(jù)的表示方法:
數(shù)據(jù)傳輸時(shí)間
T0H | 0碼,高電平時(shí)間 | 220ns~380ns |
T1H | 1碼,高電平時(shí)間 | 580ns~1μs |
T0L | 0碼,低電平時(shí)間 | 580ns~1μs |
T1L | 1碼,低電平時(shí)間 | 580ns~1μs |
RES | 幀單位,低電平時(shí)間 | 280μs以上 |
時(shí)序波形圖
輸入碼型:
連接方法:
此次我采用SPI 的方式來驅(qū)動。SPI的時(shí)鐘調(diào)整為8MHz,發(fā)送一字節(jié)正好是1.25us,給ws2812 發(fā)送0即通過SPI 總線發(fā)送11000000b,發(fā)送1 即通過SPI 總線發(fā)送11111100b,非常巧妙的一種方式。
根據(jù)以上原理,我先配置SPI的stack如下:
經(jīng)查看原理圖,配置SPI 的MOSI 為P101。
生成工程后,編寫代碼ws2812b.c 如下:
ws18b20c.h:
在主函數(shù)中添加測測試代碼如下:
代碼的主要思路是,將寫入buff先清零,然后向數(shù)據(jù)中寫信指定個(gè)數(shù)的RGB 數(shù)據(jù),最后刷新到SPI 總線之中。
(本文來源于《EEPW》202507)
評論