基于STM32G070RB的七彩星空燈教程(一)
今天我們用STM32G070RB NUCLEO開(kāi)發(fā)板 和WS2812燈帶 制作一個(gè)七彩星空燈
本文引用地址:http://dyxdggzs.com/article/202205/434253.htm先簡(jiǎn)單說(shuō)下WS2812的工作過(guò)程吧
1, 上電時(shí),WS2812數據IO為低電平保持。
2, 空閑時(shí),IO為低電平。
3, 數據發(fā)送完畢后,保持電平,超過(guò)規格書(shū)上定義的RESET時(shí)間(只有低電平時(shí)間超過(guò)280us,就可以認為是RESET.)
先看下數據的時(shí)序
如下是每24bit的組成。注意,順序不是RGB888,而是GRB888。一般我們取顏色的數值,都是RGB順序,所以這里在代碼里實(shí)現的時(shí)候,會(huì )需要做一下移位。另外,需要注意的是,需要高位先發(fā)(MSB)。
時(shí)序波形圖。關(guān)鍵在于用什么方法去表示Bit的波形,網(wǎng)絡(luò )上的方法有很多。例如PWM,也有用SPI。今天我們就先用一種簡(jiǎn)單方法實(shí)行吧,IO口模擬是不錯的選擇。
萬(wàn)事從新建工程開(kāi)始,打開(kāi)STM32CubeMX
在搜索框內搜索 我們的開(kāi)發(fā)板型號,也就是STM32G070RB,好的這樣工程就新建好的,
配置時(shí)鐘樹(shù),如下圖所示。
接下來(lái)配置引腳 ,這里我們采用的是PWM+DMA的方式來(lái)驅動(dòng)WS2812,通過(guò)WS2812的手冊可以得知驅動(dòng)需要800KHZ的頻率好的我們現在來(lái)配置定時(shí)器,這里以定時(shí)器1為例來(lái)配置。如下圖所示。計算方法79=(64M/800K)-1得出。下面的Pulse是指一個(gè)周期的脈沖數
下面我們開(kāi)始配置DMA,如下圖所示配置
好的到這里就可以生成代碼
好的到這里我們就已經(jīng)把我們需要用到的資源初始化完成了,下次我們開(kāi)始點(diǎn)亮彩燈。
有了解過(guò)的,可以先嘗試嘗試哦。
評論