燈廠們背后的MCU缰泡,看LPC如何花式點燈(之一)

近幾年烧颖,PC領域隨著電競類的鍵盤鼠標加燈的風潮弱左,各種帶有花式“光污染”的PC外設被推到市場上來,這些“神光同步”的PC外設背后離不開高性能MCU去協(xié)助點燈這項工作倒信,反正神光一亮性能立馬提升10%科贬。
在燈光方案的選擇上,WS2812這類單線制串行LED燈珠被應用的最廣鳖悠,而且很多LPC Inside的鍵鼠設備也許正躺在各位臭打游戲的桌面上,所以本文以WS2812為基礎优妙,逐一介紹如何用LPC單片機上的不同的外設實現(xiàn)同樣的驅動WS2812這類串行LED燈帶乘综。
這個系列我計劃分成3篇,這是第一篇講基礎和SPI的方式實現(xiàn)套硼,第二篇講SCT卡辰,EZH的實現(xiàn),雙核點燈,第三篇講如何移植NeoPixel-KnightRider到MCU九妈,實現(xiàn)花式點燈反砌。

首先介紹下WS2812

WS2812是一種5050封裝,集成了電流控制芯片的低功耗的RGB三色燈萌朱,是各種LED燈帶的靈魂所在宴树。WS2812采用串行級連接口,可以實現(xiàn)256級亮度的三基色顏色顯示即完成16777216種顏色的顯示且掃描頻率不低于400Hz晶疼,刷新速率30幀/秒時酒贬,級連數(shù)不小于1024點,串行數(shù)據(jù)發(fā)送速度可達800Kbps翠霍。


WS2812單燈模塊

WS2812燈帶在淘寶上有各種規(guī)格:66燈的锭吨,144燈的,密封的5m寒匙,密封的1m零如,裸露的5m,裸露的1m锄弱,等等埠况。


WS2812燈帶

WS2812 功能引腳

WS2812引腳功能圖

WS2812 級聯(lián)


WS2812級聯(lián)示意圖

WS2812 時序波形圖

WS2812時序波形圖

WS2812 RGB數(shù)據(jù)結構

WS2812 RGB數(shù)據(jù)結構

如何用LPC55S69 驅動WS2812

了解完WS2812的時序后,我們分析下LPC55S69上的外設棵癣,目前評估下來辕翰,可以用LPC55S69上的SPI,SCT定時器狈谊,EZH或者用雙核里的那個小核控制GPIO口 這四種方案來實現(xiàn)喜命,本文會介紹SPI的方式,之后的文章會分別介紹SCT河劝,EZH以及雙核實現(xiàn)壁榕。

利用LPC55S69的SPI接口實現(xiàn)WS2812的控制

實現(xiàn)分析

由分析WS2812的時序可知,0碼和1碼代表的是占空比的不同赎瞎,我們可以用SPI傳輸?shù)?個bit中的1和0的個數(shù)不同來表示0碼和1碼牌里,即0碼可以是由 01110000 來表示,1碼可以是01111100來表示务甥。
WS2812的基礎通信時鐘是800kbps牡辽,SPI是8bit傳輸?shù)模許PI的時鐘頻率應該定在800kbps x 8 = 6.4Mbps


SDK里如何設置SPI的時鐘

這樣我們就可以建立一個WS2812顯示顏色用的數(shù)組uint8_t g_WS2812TxBuf[WS2812_PIXELS*24+100]敞临,x24 的原因是一個WS2812需要RBG 3個色元态辛,各8bit。
雖然用SPI控制WS2812比較簡單挺尿,但是各位看官也看到了奏黑,這種辦法是比較吃RAM的炊邦, 還好LPC55系列的RAM都不是一般的大,足夠應對熟史。

復位

WS2812的50uS以上的低電平復位信號是比較容易實現(xiàn)馁害,可以通過控制GPIO的高低狀態(tài)就可以實現(xiàn)。當然我們也已利用SPI發(fā)送數(shù)據(jù)0實現(xiàn)蹂匹,LPC55的這個demo我們是用SPI發(fā)送0數(shù)據(jù)產(chǎn)生復位信號的碘菜,我們把用于SPI發(fā)送的數(shù)據(jù)額外多設置100個字節(jié),開始的100個字節(jié)填充0怒详,這樣我們就可以產(chǎn)生復位信號了炉媒。


SPI傳輸用的數(shù)組為了復位信號多加了100個字節(jié)

時鐘精度

結合LPC55的SDK,為了得到比較精確的6.8Msps的SPI傳輸速率昆烁,我們得把MCU的主頻提升至比較高的級別吊骤,這里我們用LPC55上的96MHz的高速FRO作為MCU的時鐘源,這樣可以達到比較好的能耗平衡静尼。
將SDK里SPI初始化中關于時鐘部分改成6800000Hz白粉。
在96MHz基礎上去得到6.8MHz是肯定有偏差的,實際我們得到的SPI時鐘頻率是6.857MHz鼠渺,好在WS2812實際允許的150nS的偏差的鸭巴。我們這種方法實際是可以完美驅動WS2812的。
當然如果是強迫癥拦盹,我們可以用LPC55上的PLL來生成完美匹配6.8MHz的頻率的主頻鹃祖,比如68MHz,136MHz等給內(nèi)核用普舆。這樣做無非是略微增加了一點功耗恬口。

用輪詢(Polling)的方式實現(xiàn)SPI數(shù)據(jù)傳遞給WS2812

輪詢的方式實現(xiàn)比較簡單,我們傳輸?shù)氖枪潭ǖ臄?shù)據(jù)沼侣,所以我就沒有用SDK的標準API祖能,自己實現(xiàn)了非常直接的發(fā)送函數(shù)

SPI發(fā)送函數(shù)

點燈前別忘設置燈的個數(shù)

如果我們用的WS2812燈帶有8個燈,在drv_ws2812_spi.h里修改LED的數(shù)量


如何更改WS2812顯示的個數(shù)

接下來蛾洛,如果我們要把WS2812按照流水燈的方式养铸,顯示RGB 三原色。則按照順序轧膘,輪流修改g_WS2812TxBuf中的數(shù)據(jù)組合即可钞螟。


修改WS2812 顯示的顏色API

效果

LPC55S69點WS2812

最后所有的代碼放到了論壇,www.nxpic.com

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扶供,一起剝皮案震驚了整個濱河市筛圆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椿浓,老刑警劉巖太援,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扳碍,居然都是意外死亡提岔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門笋敞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碱蒙,“玉大人,你說我怎么就攤上這事夯巷∪停” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵趁餐,是天一觀的道長喷兼。 經(jīng)常有香客問我,道長后雷,這世上最難降的妖魔是什么季惯? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮臀突,結果婚禮上勉抓,老公的妹妹穿的比我還像新娘。我一直安慰自己候学,他們只是感情好藕筋,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梳码,像睡著了一般隐圾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上边翁,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天翎承,我揣著相機與錄音,去河邊找鬼符匾。 笑死叨咖,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的啊胶。 我是一名探鬼主播甸各,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼焰坪!你這毒婦竟也來了趣倾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤某饰,失蹤者是張志新(化名)和其女友劉穎儒恋,沒想到半個月后善绎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡诫尽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年禀酱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牧嫉。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡剂跟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酣藻,到底是詐尸還是另有隱情曹洽,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布辽剧,位于F島的核電站送淆,受9級特大地震影響,放射性物質發(fā)生泄漏抖仅。R本人自食惡果不足惜坊夫,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撤卢。 院中可真熱鬧环凿,春花似錦、人聲如沸放吩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渡紫。三九已至到推,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惕澎,已是汗流浹背莉测。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唧喉,地道東北人捣卤。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像八孝,于是被迫代替她去往敵國和親董朝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359