一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RA2E1通過(guò)SPI驅(qū)動(dòng)燈帶

RA生態(tài)工作室 ? 2022-01-04 14:37 ? 次閱讀
poYBAGG2ot-AGNHBAABs_TTBnPY753.png



1.概述


本期分享的是使用RA2E1通過(guò)SPI的MOSI腳產(chǎn)生WS2812的控制時(shí)序,實(shí)現(xiàn)燈帶控制的效果。

2.燈帶介紹


WS2812是24位(1600萬(wàn))色LED燈源芯片,集成了信號(hào)整形控制、電源反接保護(hù)等功能,5V安全供電,性價(jià)比高,在智能燈帶市場(chǎng)中應(yīng)用非常廣泛。芯片以級(jí)聯(lián)的方式串接起來(lái),每顆燈源可單獨(dú)尋址控制,根據(jù)需要的長(zhǎng)度和間距,定制出各種顯示效果,如直線燈帶、環(huán)形、點(diǎn)陣屏等。很多創(chuàng)客喜歡用WS2812彩燈DIY一些酷炫的項(xiàng)目,可以說(shuō)網(wǎng)上關(guān)于WS2812的資料是比較豐富的。有用不同的控制核心實(shí)現(xiàn)控制,以及通過(guò)不同的方式進(jìn)行控制。我們選用RA的SPI(默認(rèn)使能DTC)MOSI口實(shí)現(xiàn)WS2812控制時(shí)序的輸出。

WS2812需要的時(shí)序是這樣的:

c01ce818-6b23-11ec-ad3b-dac502259ad0.png

c02bd9ea-6b23-11ec-ad3b-dac502259ad0.png

需要注意的是不同廠家的產(chǎn)品時(shí)序略有差別,實(shí)際需要根據(jù)手冊(cè)調(diào)整代碼,以產(chǎn)生對(duì)應(yīng)控制波形。

3.軟件配置

e2studio中如下配置RA2E1的SPI:

c03e4aee-6b23-11ec-ad3b-dac502259ad0.png

8M的SPI波特率,一個(gè)位的時(shí)間等于1s ÷ 8 × 10^6,為0.125μs。

WS2812需要的0碼對(duì)應(yīng)SPI發(fā)送 0b 1100 0000

WS2812需要的1碼對(duì)應(yīng)SPI發(fā)送 0b 1111 1000

設(shè)置SPI發(fā)送下面數(shù)據(jù):

c0487aa0-6b23-11ec-ad3b-dac502259ad0.png

4.燒錄測(cè)試

燒錄后實(shí)際測(cè)一下P213引腳波形

復(fù)位

c05a82b8-6b23-11ec-ad3b-dac502259ad0.png

0碼

c064f022-6b23-11ec-ad3b-dac502259ad0.png

1碼

c072ab54-6b23-11ec-ad3b-dac502259ad0.png

實(shí)際效果

c08311ec-6b23-11ec-ad3b-dac502259ad0.gif

5.例程獲取

歡迎follow我們的gitee倉(cāng)庫(kù)獲取更多示例代碼及相關(guān)資料:https://gitee.com/ramcu/ra-eco-ra2-e1-48-pin

模塊已接口化實(shí)現(xiàn),方便調(diào)用

/*
 * ws2812.h
 *
 *  Created on: 2021年12月21日
 *      Author: ramcu
 */

#ifndef WS2812_H_
#define WS2812_H_
#include "hal_data.h"

#define NUMPIXELS   (16)
#define NUMRES      (60)
#define SPIBUFL     ((NUMPIXELS) * 3 * 8 + NUMRES)

void ws2812Init(void);
void show(void);
void clear(void);
void setPixelColor(uint16_t n, uint8_t g, uint8_t r, uint8_t b);

#endif /* WS2812_H_ */


/*
 * ws2812.c
 *
 *  Created on: 2021年12月21日
 *      Author: ramcu
 */
#include "ws2812.h"

static uint8_t spidate[SPIBUFL] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
                                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
                                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
                                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
                                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
                                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8,  \

                                    0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8,  \
                                    0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0xf8, 0xf8
                                };

void ws2812Init(void)
{
    R_SCI_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg);
}

void show(void)
{
    R_SCI_SPI_Write(&g_spi0_ctrl, spidate, SPIBUFL, SPI_BIT_WIDTH_8_BITS);
    R_BSP_SoftwareDelay(80, BSP_DELAY_UNITS_MICROSECONDS);
}

void clear(void)
{
    memset(& spidate[NUMRES], 0xc0, (NUMPIXELS) * 3 * 8);
}

void setPixelColor(uint16_t n, uint8_t g, uint8_t r, uint8_t b)
{
    if (n < NUMPIXELS) {
      uint8_t *p;
      p = &spidate[NUMRES + n * 24];
      for(uint8_t i = 0; i < 8; i++)
      {
          *(p + i) = (0 == (g & (1 << (7 - i)))) ? 0xc0 : 0xf8;
      }
      for(uint8_t i = 0; i < 8; i++)
      {
          *(p + i + 8) = (0 == (r & (1 << (7 - i)))) ? 0xc0 : 0xf8;
      }
      for(uint8_t i = 0; i < 8; i++)
      {
          *(p + i + 16) = (0 == (b & (1 << (7 - i)))) ? 0xc0 : 0xf8;
      }
    }
}


void hal_entry(void)
{
    /* TODO: add your own code here */
    ws2812Init();

    while(1)
    {
        clear();

        for(uint8_t i = 0; i < NUMPIXELS; i++)
        {
            setPixelColor(i, 0, 0, i + 4);
            show();
            R_BSP_SoftwareDelay(50, BSP_DELAY_UNITS_MILLISECONDS);
        }

    }

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17718

    瀏覽量

    358363
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9270

    瀏覽量

    373641
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5389

    瀏覽量

    100988
  • 瑞薩電子
    +關(guān)注

    關(guān)注

    37

    文章

    2903

    瀏覽量

    73032
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【瑞薩RA2L1入門(mén)學(xué)習(xí)】+開(kāi)箱評(píng)測(cè)

    R7FA2L1AB2DFL。RA2L1 產(chǎn)品組采用優(yōu)化的制程和瑞薩電子的低功耗工藝技術(shù),是業(yè)界一流水平的超低功耗微控制器。 本次收到的開(kāi)發(fā)板印刷RA2L1RA2E1兩個(gè)型號(hào)。 主打低
    發(fā)表于 03-09 07:40

    【瑞薩RA2L1入門(mén)學(xué)習(xí)】01. PWM 呼吸

    【實(shí)驗(yàn)資源】 開(kāi)發(fā)板:RA-Eco-RA2L1-48PIN-V1.0 IDE:E2 Studio 下載工具:Renesas Flash Programme,用到USB轉(zhuǎn)TTL模塊 【e2s Hex
    發(fā)表于 03-07 11:43

    瑞薩電子RA8E1RA8E2 MCU新品解讀

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1RA8E2兩款新產(chǎn)品。這兩款新產(chǎn)品已正式量產(chǎn)上市,將高算力的RA8系列擴(kuò)展到入門(mén)級(jí)領(lǐng)域的應(yīng)用,降低BOM成本,
    的頭像 發(fā)表于 12-09 10:35 ?773次閱讀
    瑞薩電子<b class='flag-5'>RA8E1</b>和<b class='flag-5'>RA8E2</b> MCU新品解讀

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】開(kāi)發(fā)板介紹和環(huán)境搭建

    A72DFL為主控芯片,擁有豐富的外設(shè),集成度高功能非常強(qiáng)大,具有優(yōu)越的性能和低功耗。 RA2E1 產(chǎn)品群是 RA 系列的入門(mén)級(jí)單芯片微控制器,基于48 MHz Arm? Cortex?-M23 內(nèi)核,具有高**達(dá)
    發(fā)表于 11-09 17:16

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】開(kāi)發(fā)板介紹&amp;環(huán)境搭建

    A72DFL為主控芯片,擁有豐富的外設(shè),集成度高功能非常強(qiáng)大,具有優(yōu)越的性能和低功耗。 RA2E1 產(chǎn)品群是 RA 系列的入門(mén)級(jí)單芯片微控制器,基于48 MHz Arm? Cortex?-M23 內(nèi)核,具有高**達(dá)
    發(fā)表于 11-09 17:09

    瑞薩電子推出RA8E1RA8E2微控制器產(chǎn)品群

    Arm Cortex-M85處理器的MCU,實(shí)現(xiàn)市場(chǎng)領(lǐng)先的6.39 CoreMark/MHz(注)性能。新款RA8E1RA8E2 MCU在保持同等性能的同時(shí),通過(guò)精簡(jiǎn)功能集降低成本,成為工業(yè)和家居自動(dòng)化、辦公設(shè)備、醫(yī)療保健和消
    的頭像 發(fā)表于 11-09 16:59 ?834次閱讀

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】(第二篇)串口打印+SPI_OLED顯示

    串口打印 想要使用微庫(kù)就必須將主堆棧設(shè)置大于0x1000(4K),就是這個(gè)東西,之前沒(méi)有注意一直編譯報(bào)錯(cuò)[難過(guò)] 通過(guò)手冊(cè)可以得知R7FA2E1A72DFL并沒(méi)有獨(dú)立的UART,而是使用的SCI
    發(fā)表于 11-09 01:30

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】簡(jiǎn)介、環(huán)境搭建、工程測(cè)試

    、主控,其次介紹了 Renesas 官方 e2 studio 編譯環(huán)境的配置,最后給出新建閃工程,以及固件燒錄測(cè)試。 開(kāi)發(fā)板簡(jiǎn)介 RA-Eco-RA2E1-48PIN-V1.0 開(kāi)發(fā)板基于48
    發(fā)表于 11-05 15:47

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板基于Keil MDK環(huán)境搭建

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板簡(jiǎn)介。 以瑞薩R7FA2E1A72DFL為主控芯片,擁有豐富的外設(shè),集成度高功能非常強(qiáng)大,具有優(yōu)越的性能和低功耗。 RA2E1 產(chǎn)品群是
    發(fā)表于 11-04 22:58

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】開(kāi)箱點(diǎn)燈

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板。這不僅為我的嵌入式開(kāi)發(fā)學(xué)習(xí)提供了寶貴的實(shí)踐機(jī)會(huì),也可以讓我深入理解了該開(kāi)發(fā)板的功能和特性,同時(shí),也給我們學(xué)校的教學(xué)研究提供了幫助。在申請(qǐng)、溝通過(guò)程中,我深感電子發(fā)燒友平臺(tái)的積極支持
    發(fā)表于 10-26 22:47

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】2、SPI驅(qū)動(dòng)LCD(ST7735)屏

    本文描述用RA2E1分別用軟件和硬件SPI兩種方式驅(qū)動(dòng)LCD(ST7735)屏。 一、軟件SPI驅(qū)動(dòng)LCD 連線圖:
    發(fā)表于 10-22 14:08

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】先來(lái)點(diǎn)個(gè)

    收到瑞薩RA2E1開(kāi)發(fā)板,十分小巧精致。 今天就來(lái)點(diǎn)個(gè)吧。 e2 studio(自帶FSP)軟件安裝就不贅述了,詳見(jiàn): 【RA-Eco-RA0E1-32PIN-V1.0開(kāi)發(fā)板試用】
    發(fā)表于 10-18 22:50

    RA-Eco-RA2E1-48PIN-V1.0開(kāi)發(fā)板試用】1、資料獲取、環(huán)境搭建及簡(jiǎn)單驗(yàn)證

    需要注冊(cè)才可以下載 RA2E1的資料入口: https://www.renesas.cn/zh/products/microcontrollers-microprocessors
    發(fā)表于 10-18 13:07

    RA-Eco-RA0E1-32PIN-V1.0開(kāi)發(fā)板試用】軟件驅(qū)動(dòng)TFT屏幕

    接上篇:【RA-Eco-RA0E1-32PIN-V1.0開(kāi)發(fā)板試用】開(kāi)發(fā)環(huán)境搭建及流水燈(附踩坑記錄) - 瑞薩單片機(jī)論壇 - 電子技術(shù)論壇 - 廣受歡迎的專業(yè)電子論壇! (elecfans.com
    發(fā)表于 08-26 21:45

    RA4E2數(shù)據(jù)手冊(cè)(英)

    RA4E2數(shù)據(jù)手冊(cè)
    發(fā)表于 06-20 15:18 ?2次下載