近年來電競市場的發展非常的蓬勃,各種炫彩的LED吸引了不少玩家,舉凡鍵盤滑鼠、主機板、顯示卡、螢幕、機殼等等,你想的到或想不到的都配上LED就對了,滿滿的RGB信仰再配上高規的配備能在這宅經濟市場吸住所有玩家的眼球。
NuMicro® NUC126系列為 32 位 元微控制器,內建ARM® Cortex®-M0 內核,速度高達72 MHz。主要產品特色包含內置48 MHz 高精度高速 RC 振盪器並支持 USB 傳輸不須外掛晶體 ( Crystal-less ) ;可調式VDDIO管腳,其接受寬電壓範圍為 2.5V 到 5.5V ,便於連接與VDD電壓不同之外部元件,達成更彈性的設計。內建硬體除法器,提升軟體執行速度;此外,NUC126內建SPROM ( Security Protection ROM ) ,提供一個獨立的安全加密執行區域,以保護開發者的智慧財產權。
此方案運用了SPI搭配PDMA,可輕鬆的同時推動5組ARGB燈條,比起傳統RGB使用PWM的控制方式,不僅節省了MCU的腳位,也大大降低了PCB的複雜程度。
應用線路
- LDO_CAP需接1uF對地,給內部電源使用
- Reset接10k歐姆及10uF
- ICE_DAT及ICE_CLK為除錯及韌體更新的SWD接口,建議預留線路
- ARGB只需使用SPI的MOSI來控制即可

控制邏輯及程式架構 :
此方案配合的ARGB LED為目前市場運用很廣的WS2812B,SPI 頻率設定在3.2MHz左右,達到SPI data 1 bit約310us的時間,並且使用4bits來表示一個LED bit的資訊,也就是T0H及T1L約莫於310us,T0L及T1H約莫於930ns,皆可滿足WS2812B的規格.
此程式架構可支持5組ARGB LED燈條,下圖為每個燈條可設定的基本參數
Timer0設定每1ms中斷一次,並將每個燈條的計數累加,做為之後演算法使用
主程式內則判斷每組LED_Stripe的PDMA是否傳送完成,若傳送完成則進行下一次的特效演算,然後在觸發一次PDMA
透過Set_LED_RGB()或Set_LED_Array()函式將演算好的LED特效轉換成SPI輸出buffer的資料
下面為恆亮的演算法,將燈條設定的RGB值成上亮度(0~10)再除以10以達到亮度的調整,最後只要將設定好的RGB值填入Set_LED_RGB函式,即可幫我們轉換成SPI所要輸出的訊號