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

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

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

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

CW32模塊使用 WS2812彩燈

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-02-24 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

WS2812E是一個集控制電路與發(fā)光電路于一體的智能外控LED光源。其外型與一個5050LED燈珠相同,每個 元件即為一個像素點。像素點內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號整形放大驅(qū)動電路,還包含有高精度的內(nèi)部 振蕩器和可編程電流控制部分,有效保證了像素點光的顏色高度一致。

一、模塊來源

模塊實物展示:

wKgZPGe76XeANC0oAAAfUlVVwuI708.jpg


資料鏈接:https://pan.baidu.com/s/1OkCpw8ooDyuw947V0b89Rw
資料提取碼:AB12

二、規(guī)格參數(shù)

工作電壓:3.7-5.3V

工作電流:16MA

控制方式:單總線

管腳數(shù)量:4 Pin(2.54mm間距排針

以上信息見廠家資料文件

三、移植過程

我們的目標(biāo)是將例程移植至CW32F030C8T6開發(fā)板上【能夠?qū)崿F(xiàn)設(shè)置彩燈顏色的功能】。首先要獲取資料,查看數(shù)據(jù)手冊應(yīng)如何實現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。

3.1查看資料

WS2812的數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式,支持串行級聯(lián)接口,能通過一根信號線完成數(shù)據(jù)的接收與解碼。每個燈就是一個像素點,每個像素點的三基色顏色可實現(xiàn)256級亮度顯示,完成16777216種顏色的全真色彩顯示。

像素點在上電復(fù)位以后,DIN端接受從控制器傳輸過來的數(shù)據(jù),首先送過來的24bit數(shù)據(jù)被第一個像素點提取后,送到像素點內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過內(nèi)部整形處理電路整 形放大后通過DO端口開始轉(zhuǎn)發(fā)輸出給下一個級聯(lián)的像素點,每經(jīng)過一個像素點的傳輸,信號減少24bit。像素點采用自動整形轉(zhuǎn)發(fā)技術(shù),使得該像素點的級聯(lián)個數(shù)不受信號傳送的限制,僅受限信號傳輸速度要求。

控制方式

因為使用的是單總線,一根線完成一個燈要顯示的24位顏色數(shù)據(jù),是通過高低電平的時間長度來確定發(fā)送的是什么數(shù)據(jù)。24位的數(shù)據(jù)結(jié)構(gòu)見下圖。

wKgZO2e76XeAHm6FAAAafKT6l8o268.jpg

其中G代表三色中的綠色,R代表三色中的紅色,B表示三色中的藍(lán)色。例如想要只顯示紅色則發(fā)送 0X00FF00即可。

控制時序

發(fā)送24位顏色數(shù)據(jù),是通過高低電平的時間長度來確定發(fā)送的是0還是1。

wKgZPGe76XiABBtCAAA7fDtAP7s561.jpg

發(fā)送一位數(shù)據(jù)0,需要總線拉高T0H的時間再拉低T0L的時間,WS2812才會自動識別該數(shù)據(jù)是0。

發(fā)送一位數(shù)據(jù)1,需要總線拉高T1H的時間再拉低T1L的時間,WS2812才會自動識別該數(shù)據(jù)是1

3.2引腳選擇

該模塊有3個引腳,具體引腳連接見各引腳連接。

wKgZO2e76XiAaWz3AAC7sH4IYxc314.jpg

模塊接線圖

3.3移植至工程

移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_ws2812.c與bsp_ws2812.h。這里不再過多講述,移植完成后面修改相關(guān)代碼。

在文件bsp_ws2812.c中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */
#include "bsp_ws2812.h"
#include "stdio.h"
#include "math.h"


unsigned char LedsArray[WS2812_MAX * 3];      //定義顏色數(shù)據(jù)存儲數(shù)組
unsigned int  ledsCount   = WS2812_NUMBERS;   //定義實際彩燈默認(rèn)個數(shù)
unsigned int  nbLedsBytes = WS2812_NUMBERS*3; //定義實際彩燈顏色數(shù)據(jù)個數(shù)

void delay_0_30us(void)
{
        __NOP;__NOP;__NOP;__NOP;__NOP;
}


/******************************************************************
 * 函 數(shù) 名 稱:WS2812_GPIO_Init
 * 函 數(shù) 說 明:對WS2812引腳初始化
 * 函 數(shù) 形 參:無
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void WS2812_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體

    RCC_DIN_ENABLE();        // 使能GPIO時鐘

    GPIO_InitStruct.Pins = GPIO_DIN;                        // GPIO引腳
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;             // 推挽輸出
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;                // 輸出速度高
    GPIO_Init(PORT_DIN, &GPIO_InitStruct);                  // 初始化

    GPIO_WritePin(PORT_DIN, GPIO_DIN, GPIO_Pin_RESET);
}
/******************************************************************
 * 函 數(shù) 名 稱:rgb_SetColor
 * 函 數(shù) 說 明:設(shè)置彩燈顏色
 * 函 數(shù) 形 參:LedId控制的第幾個燈  color顏色數(shù)據(jù)
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:在這里我將綠和紅色進(jìn)行顛倒,這樣比較符合我們?nèi)粘I畹募t綠藍(lán)的順序
******************************************************************/

void rgb_SetColor(unsigned char LedId, unsigned long color)
{
    if( LedId > ledsCount )
    {
        return;    //to avoid overflow
    }
    LedsArray[LedId * 3]     = (color>>8)&0xff;
    LedsArray[LedId * 3 + 1] = (color>>16)&0xff;
    LedsArray[LedId * 3 + 2] = (color>>0)&0xff;
}

/******************************************************************
 * 函 數(shù) 名 稱:rgb_SetRGB
 * 函 數(shù) 說 明:設(shè)置彩燈顏色(三原色設(shè)置)
 * 函 數(shù) 形 參:LedId控制的第幾個燈 red紅色數(shù)據(jù)  green綠色數(shù)據(jù)  blue藍(lán)色數(shù)據(jù)
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void rgb_SetRGB(unsigned char LedId, unsigned long red, unsigned long green, unsigned long blue)
{
    unsigned long Color=red> i) )//當(dāng)前位為1
        {
            RGB_PIN_H();
            delay_us(1);//0.75us
            RGB_PIN_L();
            __NOP;__NOP;__NOP;__NOP;__NOP;//0.25us
        }
        else//當(dāng)前位為0
        {
            RGB_PIN_H();
            __NOP;__NOP;__NOP;__NOP;__NOP;//0.25us
            RGB_PIN_L();
            delay_us(1);//0.833us
        }
    }
}

在文件bsp_ws2812.h中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */

#ifndef _BSP_WS2812_H_
#define _BSP_WS2812_H_

#include "board.h"

#define RCC_DIN_ENABLE()    __RCC_GPIOB_CLK_ENABLE()
#define PORT_DIN            CW_GPIOB
#define GPIO_DIN            GPIO_PIN_12


//用戶修改參數(shù)區(qū)
//#define WS2812_FREQUENCY
#define RGB_PIN_L()       GPIO_WritePin(PORT_DIN, GPIO_DIN, GPIO_Pin_RESET)  //控制彩燈引腳(需要配置為強(qiáng)推挽輸出)
#define RGB_PIN_H()       GPIO_WritePin(PORT_DIN, GPIO_DIN, GPIO_Pin_SET)    //控制彩燈引腳(需要配置為強(qiáng)推挽輸出)
#define WS2812_MAX        8                        //彩燈最大個數(shù)
#define WS2812_NUMBERS    8                        //彩燈個數(shù)


#define RED               0xff0000                  //紅色
#define GREEN             0x00ff00                  //綠色
#define BLUE              0x0000ff                  //藍(lán)色
#define BLACK             0x000000                  //熄滅
#define WHITE             0xffffff                  //白色



//8.3 -8  0.000000083
//4.16 -9 0.00000000416
void Ws2812b_WriteByte(unsigned char byte);//發(fā)送一個字節(jié)數(shù)據(jù)(@12.000MHz,理論每個機(jī)器周期83ns,測試約為76ns)
void setLedCount(unsigned char count);//設(shè)置彩燈數(shù)目,范圍0-25.
unsigned char getLedCount();//彩燈數(shù)目查詢函數(shù)
void rgb_SetColor(unsigned char LedId, unsigned long color);//設(shè)置彩燈顏色
void rgb_SetRGB(unsigned char LedId, unsigned long red, unsigned long green, unsigned long blue);//設(shè)置彩燈顏色
void rgb_SendArray();//發(fā)送彩燈數(shù)據(jù)

void WS2812_GPIO_Init(void);

void RGB_LED_Write1(void);
void RGB_LED_Reset(void);


#endif

四、移植驗證

在自己工程中的main主函數(shù)中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-24     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_ws2812.h"

uint8_t Co = 100;
unsigned int buff[]={RED,GREEN,BLUE,WHITE};

int32_t main(void)
{
    int i = 0;

    board_init();

    uart1_init(115200);

    WS2812_GPIO_Init();
    printf("Start--->rn");

    while(1)
    {
        for( i = 0; i < 8; i++ )
        {
            rgb_SetColor(i,buff[i%3]);
            rgb_SendArray();
            delay_ms(10);
        }
        delay_ms(3000);

        i = 0;
        while( Co )
        {
            rgb_SetColor((i+0)%8,buff[0]);
            rgb_SetColor((i+1)%8,buff[1]);
            rgb_SetColor((i+2)%8,buff[2]);
            rgb_SetColor((i+3)%8,buff[3]);

            rgb_SetColor((i+4)%8,BLACK);
            rgb_SetColor((i+5)%8,BLACK);
            rgb_SetColor((i+6)%8,BLACK);
            rgb_SetColor((i+7)%8,BLACK);

            rgb_SendArray();
            delay_ms(200);
            Co--;
            i++;
        }
        Co = 100;
    }
}

移植現(xiàn)象:三秒前八個燈全亮,后面循環(huán)流水燈顯示。

wKgZPGe76XiAA10OAABNdzpzZ9U929.jpg

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1boqb5UkpomK2avKNqAjz-w?pwd=LCKF

提取碼:LCKF

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    33

    瀏覽量

    6724
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    255

    瀏覽量

    1254
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何使用新版本J-Flash編程CW32 MCU?

    CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運行JFlash.exe,通過Jlink連接CW32 MCU測試板,進(jìn)行編程測試
    的頭像 發(fā)表于 07-01 15:05 ?146次閱讀
    如何使用新版本J-Flash編程<b class='flag-5'>CW32</b> MCU?

    【RA4L1-SENSOR】點亮 WS2812 全彩點陣屏

    WS2812 是彩色燈珠控制芯片,可以控制 RGB 三色燈珠混合呈現(xiàn)出 16M 種顏色,WS2812 有單顆芯片形式,需要外接 RGB 燈珠,也有集成 WS2812 的 RGB 燈珠。 WS2
    發(fā)表于 06-09 12:48

    【RA-Eco-RA4M2開發(fā)板評測】點亮WS2812點陣屏

    WS2812 是彩色燈珠控制芯片,可以控制 RGB 三色燈珠混合呈現(xiàn)出 16M 種顏色,WS2812 有單顆芯片形式,需要外接 RGB 燈珠,也有集成 WS2812 的 RGB 燈珠。 WS2
    發(fā)表于 05-07 15:28

    WS2812B on S32K144始終閃爍白色,即使沒有數(shù)據(jù)也是如此,為什么?

    ;devassert.h" /* For DEV_ASSERT macro if used */ /* * WS2812 庫定義: * 1) * 2) */ #define
    發(fā)表于 04-08 07:15

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機(jī)CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發(fā)表于 03-03 15:15 ?696次閱讀
    代碼+案例+生態(tài):武漢芯源半導(dǎo)體<b class='flag-5'>CW32</b>嵌入式開發(fā)實戰(zhàn)正式出版

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們: 大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機(jī)CW32正式出書啦!《基于ARM Cortex-M0+
    發(fā)表于 03-03 15:14

    零知開源——使用 GPIO 模擬時序驅(qū)動 WS2812B LED 燈帶

    ?利用零知增強(qiáng)版的GPIO 模擬時序 ???????在本教程中,我們將探討如何使用 零知增強(qiáng)版的 GPIO 接口來模擬 WS2812B LED 燈帶的信號傳輸時序,從而實現(xiàn)對單色或多彩 LED 燈帶
    的頭像 發(fā)表于 02-20 15:43 ?1194次閱讀
    零知開源——使用 GPIO 模擬時序驅(qū)動 <b class='flag-5'>WS2812</b>B LED 燈帶

    零知開源——使用 GPIO 模擬時序驅(qū)動 WS2812B LED 燈帶

    WS2812B LED 燈帶的信號傳輸時序,從而實現(xiàn)對單色或多彩 LED 燈帶的控制。這種技術(shù)允許我們避開專用驅(qū)動庫,直接與硬件進(jìn)行交互,理解并掌握 WS2812B 的通信機(jī)制。 一、工具原料 電腦
    發(fā)表于 02-20 14:31

    零知開源——玩轉(zhuǎn)WS2812B燈條模塊

    WS2812RGB燈帶 ????? 通過零知標(biāo)準(zhǔn)開發(fā)板平臺上驅(qū)動WS2812RGB燈珠,包括WS2812B的供電電壓、接線和代碼實現(xiàn)。通過創(chuàng)建延時函數(shù)和設(shè)置級聯(lián)數(shù)據(jù),實現(xiàn)對RGB燈珠的控制,展示了從
    的頭像 發(fā)表于 02-19 15:09 ?1553次閱讀
    零知開源——玩轉(zhuǎn)<b class='flag-5'>WS2812</b>B燈條<b class='flag-5'>模塊</b>

    CW32模塊使用 紅外接收模塊

    一、模塊來源 模塊實物展示: ? 資料鏈接:https://pan.baidu.com/s/1dEWVMIFDWb7k1NcsRy5hHA 資料提取碼:uucv 二、規(guī)格參數(shù) 1.CR2025環(huán)保
    的頭像 發(fā)表于 01-23 13:16 ?494次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 紅外接收<b class='flag-5'>模塊</b>

    【敏矽微ME32G070開發(fā)板免費體驗】開箱及環(huán)境搭建

    “http://www.mesilicon.com/”字樣,訪問的官方二維碼,還有一些少量電子元器件,非常人性化。 二、上電測試 開發(fā)板出廠時已燒錄了閃燈程序,板子上集成的8顆WS2812 RGB彩燈
    發(fā)表于 12-17 22:13

    基于瑞薩FPB-RA4E2智能床頭燈項目——1編譯環(huán)境搭建與點亮驅(qū)動ws2812全彩LED

    先看效果: 下載安裝e2后安裝FSP后即可新建項目: 選擇匹配的芯片類型:RA4E2 選擇默認(rèn)選項 選擇無RTOS模式: 選擇默認(rèn)即可: 新建文件夾:放ws2812驅(qū)動底層代碼 文件夾分別是C文件
    發(fā)表于 11-22 21:34

    武漢芯源半導(dǎo)體CW32芯片重慶地區(qū)線下技術(shù)交流會成功舉辦

    2024年10月19日,武漢芯源半導(dǎo)體授權(quán)CW32生態(tài)社區(qū)主辦的“CW32芯片-重慶地區(qū)技術(shù)交流會”在重慶市科技工作者眾創(chuàng)之家成功舉辦。此次交流會匯聚重慶地區(qū)的嵌入式開發(fā)工程師和電子信息類企業(yè)代表,共同探討CW32芯片在儀器儀表
    的頭像 發(fā)表于 10-24 10:55 ?980次閱讀

    論如何使用WS2812以及類似燈珠

    ? ?WS2812 LED燈珠,這是一種非常流行的可尋址RGB LED。每個WS2812 LED內(nèi)部集成了控制電路,因此可以通過一個數(shù)據(jù)輸入線來單獨控制每一個LED的顏色和亮度。這種特性使得
    的頭像 發(fā)表于 09-30 15:11 ?1479次閱讀
    論如何使用<b class='flag-5'>WS2812</b>以及類似燈珠

    在AvaotaA1全志T527開發(fā)板上驅(qū)動WS2812 RGB LCD

    16777216)種顏色的全真色彩顯示。模塊支持最大1024顆外控 LED級聯(lián)。 WS2812 驅(qū)動介紹 LED 典型電路如圖所示,其中 DI 表示控制數(shù)據(jù)輸入腳,DO 表示控制數(shù)據(jù)輸出腳。DI 端接
    發(fā)表于 07-22 10:45