<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于STM32G070RB的七彩星空燈教程(一)

          基于STM32G070RB的七彩星空燈教程(一)

          作者:zhuzhaokun1987 時間:2022-05-19 來源:EEPW論壇 收藏

          今天我們用G070RB NUCLEO開發(fā)板  和WS2812燈帶  制作一個七彩

          本文引用地址:http://www.ex-cimer.com/article/202205/434253.htm

          先簡單說下WS2812的工作過程吧

          1, 上電時,WS2812數(shù)據(jù)IO為低電平保持。

          2, 空閑時,IO為低電平。

          3, 數(shù)據(jù)發(fā)送完畢后,保持電平,超過規(guī)格書上定義的RESET時間(只有低電平時間超過280us,就可以認為是RESET.)

          先看下數(shù)據(jù)的時序

          image.png

          如下是每24bit的組成。注意,順序不是RGB888,而是GRB888。一般我們?nèi)☆伾臄?shù)值,都是RGB順序,所以這里在代碼里實現(xiàn)的時候,會需要做一下移位。另外,需要注意的是,需要高位先發(fā)(MSB)。

          1620462565424012.png

          時序波形圖。關(guān)鍵在于用什么方法去表示Bit的波形,網(wǎng)絡上的方法有很多。例如PWM,也有用SPI。今天我們就先用一種簡單方法實行吧,IO口模擬是不錯的選擇。

          1620462611495119.png

          萬事從新建工程開始,打開CubeMX

          image.png

          在搜索框內(nèi)搜索 我們的開發(fā)板型號,也就是G070RB,好的這樣工程就新建好的,

          1620462694480698.png

          配置時鐘樹,如下圖所示。

          1620462707594790.png

          接下來配置引腳 ,這里我們采用的是PWM+DMA的方式來驅(qū)動WS2812,通過WS2812的手冊可以得知驅(qū)動需要800KHZ的頻率好的我們現(xiàn)在來配置定時器,這里以定時器1為例來配置。如下圖所示。計算方法79=(64M/800K)-1得出。下面的Pulse是指一個周期的脈沖數(shù)

          1620462732346161.png

          下面我們開始配置DMA,如下圖所示配置

          1620462745140906.png

          好的到這里就可以生成代碼

          1620462761352853.png

          好的到這里我們就已經(jīng)把我們需要用到的資源初始化完成了,下次我們開始點亮彩燈。

          有了解過的,可以先嘗試嘗試哦。



          關(guān)鍵詞: STM32 單片機 星空燈 STM32G070RB

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();