伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

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

CW32L012/F030靈眸X1智能小車——板載WS2812驅(qū)動示例

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2026-01-05 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、WS2812介紹

WS2812是一種廣泛使用的地址可控制的RGB LED模塊,其內(nèi)置驅(qū)動電路控制芯片,允許用戶通過單線信號控制多個LED的顏色和亮度。以下是WS2812模塊的一些主要特點和應(yīng)用:

主要特點

單線控制: WS2812模塊通過單一數(shù)據(jù)線進(jìn)行控制,簡化了連接線的復(fù)雜度。

地址可控: 每個WS2812 LED都有獨立的地址,這意味著你可以分別控制每個LED的顏色和亮度,適合制作動態(tài)效果。

多彩顯示: 支持全彩顯示,通常可以混合紅色、綠色和藍(lán)色三基色,產(chǎn)生多種顏色。

鏈?zhǔn)竭B接: 支持多顆WS2812 LED串聯(lián),可以方便地擴(kuò)展LED的數(shù)量,只需將下一顆LED的數(shù)據(jù)線連接到前一顆LED上。

高亮度和高密度: WS2812 LED具有較高的亮度,可以在較大面積上提供均勻的光效,適合室內(nèi)外裝飾和顯示。

控制精度: 通常提供256級亮度(8位)和1670萬種顏色選擇,確保豐富的視覺效果。

主控制板上的WS2812部分如下圖:

wKgZO2lVB06ANXwXAAAiTuM_e4g136.jpg

原理圖

主控制板上WS2812模塊的接線圖如下:

wKgZPGlVB06AOXP9AACKtvcP-Jw248.jpg

可以看到一共有八個模塊級聯(lián)在一起,并且由PA12控制。

通信原理

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)見下圖。

wKgZO2lVB0-AA1K_AABLB1JMq9U344.jpg

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

控制時序

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

wKgZPGlVB0-AanWlAAEAeGtKRK0435.jpg

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

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

二、驅(qū)動代碼編寫

WS2812的驅(qū)動方法有很多種,定時器DMA,SPI+DMA,軟件模擬等,我們這里選擇軟件模擬時序的方式來驅(qū)動。

首先初始化GPIO口,將PA12口配置為推挽輸出。注意CW32F030和CW32L012的時鐘配置區(qū)別。

void WS2812_Init(void)
{
        __RCC_GPIOA_CLK_ENABLE();//開啟時鐘
        GPIO_InitTypeDef GPIO_InitStruct; 
        GPIO_InitStruct.IT=GPIO_IT_NONE;
        GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;//推挽輸出
        GPIO_InitStruct.Pins=GPIO_PIN_12;
        GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;
        GPIO_Init(CW_GPIOA, &GPIO_InitStruct);

        RGB_Color_Init();//初始化所有燈
}

隨后根據(jù)時序的高低電平要求,先編寫一個ns延時,由于當(dāng)前使用主頻為64mhz,可以算出一個機(jī)器指令所需時間大概為1/64=15ns,然后加上GPIO電平翻轉(zhuǎn)時間即可。

/**************************
400ns延時
**************************/
void delay_400ns(void)//409
{
        __nop();__nop();__nop();__nop();__nop();//__nop();__nop();
}
/**************************
800ns延時
**************************/
void delay_800ns(void)//800
{
        __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
        __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
//        __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();
//        __nop();__nop();
}

然后根據(jù)時序所需的高低電平時間編寫0,1指令

/**************************
發(fā)送1
**************************/
void RGB_Send1(void)
{
        RGB_H;
        delay_800ns();
        RGB_L;
        delay_400ns();
}
/**************************
發(fā)送0
**************************/
void RGB_Send0(void)
{
        RGB_H;
        delay_400ns();
        RGB_L;
        delay_800ns();
}

然后就可以向芯片發(fā)送指令了,一個顏色分為RGB三個色域,一個色域為8位,所以我們需要八位數(shù)據(jù)一起發(fā)送,編寫如下代碼:

/**************************
發(fā)送顏色數(shù)據(jù),高位先行
**************************/
void RGB_send_Data(uint8_t Data)
{
        uint8_t i;
        for(i=0;i

這樣就可以向芯片發(fā)送指定的顏色數(shù)據(jù)啦,最后在封裝一下,我們想要的要求是指定某個燈亮某種顏色,或者指定某個燈熄滅,不能影響到其他燈,所以我們定義一個數(shù)組來裝下所有燈的顏色數(shù)據(jù),到時候只需要改變數(shù)組中固定位置的值就可以直接改變顏色了,代碼如下:

/**************************
顯示顏色
n:第幾個燈
R:紅色
G:綠色
B:藍(lán)色
**************************/
void Send_RGB(uint8_t n,uint8_t R,uint8_t G,uint8_t B)
{
        uint8_t i;
        RGB_Data[3*n-3]=G;
        RGB_Data[3*n-2]=R;
        RGB_Data[3*n-1]=B;
        for(i=0;i

最后在main函數(shù)編寫如下代碼(OLED顯示代碼不在此處列出)

int main(void)
{
        OLED_Init();//初始化
        OLED_ShowString(1,1,"Hello");//OLED顯示字符串
        WS2812_Init();
        while(1)
        {
                Send_RGB(1,255,0,0);//255,0,0對應(yīng)紅色
                Delay_ms(500);
                Send_RGB(1,0,255,0);//255,0,0對應(yīng)綠色
                Delay_ms(500);
                Send_RGB(1,0,0,255);//255,0,0對應(yīng)藍(lán)色
                Delay_ms(500);
        }
}

三、工作現(xiàn)象

在燒寫代碼之后,我們可以觀察到以下現(xiàn)象,OLED第一行第一列顯示HELLO,第一個RGB燈每隔500ms轉(zhuǎn)換一次顏色,在紅綠藍(lán)三色之間反復(fù)切換。

wKgZO2lVB0-AIHi2AAAeGEdmbbk323.jpg


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

    關(guān)注

    244

    文章

    24654

    瀏覽量

    691858
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    835

    瀏覽量

    62125
  • 驅(qū)動電路
    +關(guān)注

    關(guān)注

    159

    文章

    1625

    瀏覽量

    111813
  • 智能小車
    +關(guān)注

    關(guān)注

    87

    文章

    565

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    CW32L012/F030X1智能小車——超聲波模塊配置

    SR04超聲波模塊是一款廣泛應(yīng)用的測距傳感器,主要用于使用超聲波測量物體與傳感器之間的距離。它是一個成本低廉、精度較高且易于使用的傳感器,常用于機(jī)器人、智能家居、無人機(jī)、汽車防撞系統(tǒng)等項目。
    的頭像 發(fā)表于 01-05 16:54 ?2996次閱讀
    <b class='flag-5'>CW32L012</b>/<b class='flag-5'>F030</b><b class='flag-5'>靈</b><b class='flag-5'>眸</b><b class='flag-5'>X1</b><b class='flag-5'>智能</b><b class='flag-5'>小車</b>——超聲波模塊配置

    CW32L012/F030X1智能小車——使用藍(lán)牙模塊通訊

    主控板配套的是一款低功耗藍(lán)牙模塊,適用于短距離無線通信。該模塊通常被用于各種嵌入式項目,如物聯(lián)網(wǎng)(IoT)設(shè)備、手機(jī)配件、智能家居設(shè)備、醫(yī)療設(shè)備等。
    的頭像 發(fā)表于 04-01 16:54 ?629次閱讀
    <b class='flag-5'>CW32L012</b>/<b class='flag-5'>F030</b><b class='flag-5'>靈</b><b class='flag-5'>眸</b><b class='flag-5'>X1</b><b class='flag-5'>智能</b><b class='flag-5'>小車</b>——使用藍(lán)牙模塊通訊

    STM32F030 MDA+PWM驅(qū)動ws2812b,起始的50US的低電平是怎么產(chǎn)生?

    STM32F030 MDA+PWM 驅(qū)動 ws2812b,起始的50US的低電平怎么產(chǎn)生? 現(xiàn)在dma+pwm,倒是可以產(chǎn)生一個800K hz的驅(qū)動數(shù)據(jù),但是
    發(fā)表于 04-12 07:23

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

    通過單總線方式控制,只需一個 IO 口,就可以點亮數(shù)千個燈珠。 這里使用 RA4L1 點亮 WS2812 燈珠,效果如下: WS2812 可以使用 IO 模擬時序控制,也可以使用 PWM
    發(fā)表于 06-09 12:48

    **CW32L012****開發(fā)評估板的第一個程序**

    CW32L012****開發(fā)評估板的第一個程序 最近以15.99在CW32生態(tài)社區(qū)入手了這塊CW32L012開發(fā)評估板,我迫不及待的燒錄進(jìn)電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學(xué)習(xí)
    發(fā)表于 11-22 00:09

    CW32L012小型機(jī)器人控制評估板活動 四足機(jī)器人+智能小車 開箱評測

    CW32L012活動相關(guān)資料鏈接:https://dwi41yhz703.feishu.cn/wiki/B1Ihw31ebiX0vkkhQr2cINnkn1g 小型機(jī)器人+智能小車
    發(fā)表于 11-24 23:44

    使用DMA+PWM方式驅(qū)動ws2812

    :STM32 使用 DMA+PWM 方式驅(qū)動 ws2812x4)附件:MDK5 示例工程一、DMA 的雙緩存模式STM32 系列的 MCU DMA 可以搬運(yùn)2個源地址的數(shù)據(jù),DMA
    發(fā)表于 12-06 08:24

    STM32F103C8T6+PWM+DMA驅(qū)動WS2812燈帶的方法

    #STM32+PWM+DMA驅(qū)動 WS2812燈帶#文章目錄1.理論:2代碼:理論:使用STM32F103C8T6驅(qū)動
    發(fā)表于 02-22 06:59

    WS2812驅(qū)動的總結(jié)和時序的詳細(xì)資料分析

    都是用PWM驅(qū)動,想要控制亮度、顏色就要分別控制每個引腳上的PWM占空比,想要驅(qū)動多個LED就更麻煩了。恨的是WS2812對時序的要求比較高,對低速單片機(jī)不太友好。今天我們就詳細(xì)談一談WS28
    發(fā)表于 08-01 17:35 ?65次下載
    <b class='flag-5'>WS2812</b><b class='flag-5'>驅(qū)動</b>的總結(jié)和時序的詳細(xì)資料分析

    STM32使用LL庫PWM的DMA模式驅(qū)動ws2812

    驅(qū)動n個,當(dāng)然n是有限制的。時序超級簡單,也有一定難度。類似的帖子網(wǎng)上有很多,在此不再贅述。WS2812驅(qū)動方式大概有以下幾種:1.使用GPIO模擬,中間加延時實現(xiàn)“0”、“
    發(fā)表于 11-30 10:21 ?67次下載
    STM32使用LL庫PWM的DMA模式<b class='flag-5'>驅(qū)動</b><b class='flag-5'>ws2812</b>

    STM32F103C8T6+PWM+DMA驅(qū)動 WS2812燈帶

    #STM32+PWM+DMA驅(qū)動 WS2812燈帶#文章目錄1.理論:2代碼:理論:使用STM32F103C8T6驅(qū)動
    發(fā)表于 12-27 19:29 ?226次下載
    STM32<b class='flag-5'>F</b>103C8T6+PWM+DMA<b class='flag-5'>驅(qū)動</b> <b class='flag-5'>WS2812</b>燈帶

    PWM+DMA 驅(qū)動 WS2812

    PWM+DMA 驅(qū)動 WS2812一、項目要求(主要目的)使用 PWM+DMA 的方式驅(qū)動 WS2812B, 并每隔 800ms 隨機(jī)顯示不同顏色。(附加目的)探索一下 STM32 的
    發(fā)表于 12-28 19:14 ?118次下載
    PWM+DMA <b class='flag-5'>驅(qū)動</b> <b class='flag-5'>WS2812</b>

    如何使用智能手機(jī)控制16x16 WS2812 Led矩陣

    電子發(fā)燒友網(wǎng)站提供《如何使用智能手機(jī)控制16x16 WS2812 Led矩陣.zip》資料免費下載
    發(fā)表于 11-15 09:49 ?8次下載
    如何使用<b class='flag-5'>智能</b>手機(jī)控制16<b class='flag-5'>x</b>16 <b class='flag-5'>WS2812</b> Led矩陣

    使用ESP8266驅(qū)動WS2812彩燈

    本篇介紹ESP8266使用NeoPixel庫來驅(qū)動IOT Kit板載WS2812彩燈。
    的頭像 發(fā)表于 05-19 14:31 ?5408次閱讀
    使用ESP8266<b class='flag-5'>驅(qū)動</b><b class='flag-5'>WS2812</b>彩燈

    CW32L012與STM32F103的三角運(yùn)算性能對比

    沒有硬件浮點運(yùn)算單元。 但在運(yùn)算三角函數(shù)時,CW32L012支持CORDIC算法。 二、 三角運(yùn)算性能具體分析 1:標(biāo)準(zhǔn)庫浮點運(yùn)算(如 math.h 的 sinf, cosf) 這是最常用但也是最慢的方式。 STM32F103C
    的頭像 發(fā)表于 12-29 15:32 ?2420次閱讀
    <b class='flag-5'>CW32L012</b>與STM32<b class='flag-5'>F</b>103的三角運(yùn)算性能對比