chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于STM32F103C8T6驅(qū)動(dòng)WS2812彩燈模塊點(diǎn)亮RGB燈

jf_88434166 ? 來(lái)源:jf_88434166 ? 作者:jf_88434166 ? 2025-12-04 11:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、WS2812模塊簡(jiǎn)介

WS2812是一個(gè)集控制電路與發(fā)光電路于一體的智能外控LED光源。其外型與一個(gè)5050LED燈珠相同,每個(gè)元件即為一個(gè)像素點(diǎn)。像素點(diǎn)內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號(hào)整形放大驅(qū)動(dòng)電路,還包含有高精度的內(nèi)部振蕩器和12V高壓編程電流控制部分,有效保證了像素點(diǎn)光的顏色高度一致。
數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式,像素點(diǎn)在上電復(fù)位以后,DIN端接受從控制器傳輸過(guò)來(lái)的數(shù)據(jù),首先送過(guò)來(lái)的24bit數(shù)據(jù)被第一個(gè)像素點(diǎn)提取后,送到像素點(diǎn)內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過(guò)內(nèi)部整形處理電路整形放大后通過(guò)DO端口開(kāi)始轉(zhuǎn)發(fā)輸出給下一個(gè)級(jí)聯(lián)的像素點(diǎn),每經(jīng)過(guò)一個(gè)像素點(diǎn)的傳輸,信號(hào)減少24bit。像素點(diǎn)采用自動(dòng)整形轉(zhuǎn)發(fā)技術(shù),使得該像素點(diǎn)的級(jí)聯(lián)個(gè)數(shù)不受信號(hào)傳送的限制,僅僅受限信號(hào)傳輸速度要求。
LED具有低電壓驅(qū)動(dòng),環(huán)保節(jié)能,亮度高,散射角度大,一致性好,超低功率,超長(zhǎng)壽命等優(yōu)點(diǎn)。將控制電路集成于LED上面,電路變得更加簡(jiǎn)單,體積小,安裝更加簡(jiǎn)便。

二、主要特點(diǎn)與LED特性參數(shù)

  1. 特點(diǎn)
    ● 控制電路與RGB芯片集成在一個(gè)5050封裝的元器件中,構(gòu)成一個(gè)完整的外控像素點(diǎn)。
    ● 內(nèi)置信號(hào)整形電路,任何一個(gè)像素點(diǎn)收到信號(hào)后經(jīng)過(guò)波形整形再輸出,保證線路波形畸變不會(huì)累加。
    ● 內(nèi)置上電復(fù)位和掉電復(fù)位電路。
    ● 每個(gè)像素點(diǎn)的三基色顏色可實(shí)現(xiàn)256級(jí)亮度顯示,完成16777216種顏色的全真色彩顯示,掃描頻率不低于400Hz/s。
    ● 串行級(jí)聯(lián)接口,能通過(guò)一根信號(hào)線完成數(shù)據(jù)的接收與解碼。
    ● 任意兩點(diǎn)傳傳輸距離在不超過(guò)5米時(shí)無(wú)需增加任何電路。
    ● 當(dāng)刷新速率30幀/秒時(shí),低速模式級(jí)聯(lián)數(shù)不小于512點(diǎn),高速模式不小于1024點(diǎn)。
    ● 數(shù)據(jù)發(fā)送速度可達(dá)800Kbps。
    ● 光的顏色高度一致,性價(jià)比高。
  2. LED參數(shù)

三、模塊引腳定義

VCC輸入電壓正極
GND輸入電壓負(fù)極
DI數(shù)據(jù)輸入
DO數(shù)據(jù)輸出,與下一聯(lián)級(jí)的DI連接

四、工作原理與數(shù)據(jù)協(xié)議

工作原理

  1. 高度集成的像素級(jí)控制
    WS2812 本質(zhì)上是將一個(gè)小型控制器和 3 顆小功率 LED 集成在一起的智能光源?。其封裝內(nèi)包含:
  • 精密振蕩器:提供約 800 kHz 的時(shí)鐘參考,確保協(xié)議時(shí)序穩(wěn)定;?
  • 數(shù)字移位寄存器:按順序接收并鎖存 24 bit 的顏色數(shù)據(jù);?
  • 信號(hào)重塑單元:對(duì)接收到的微弱信號(hào)進(jìn)行再生放大,保證后級(jí)級(jí)聯(lián)時(shí)信號(hào)不失真;?
  • 恒流驅(qū)動(dòng)模塊:為 R、G、B 三色 LED 提供精確的驅(qū)動(dòng)電流,保證色彩一致性;?
  1. 信號(hào)重塑與級(jí)聯(lián)能力
    當(dāng)?shù)谝活w WS2812 接收到完整的 24 bit 數(shù)據(jù)并將其鎖存后,余下的數(shù)據(jù)(即除自身所用的 24 bit 外)會(huì)被 信號(hào)重塑電路 放大并輸出到 DOUT,引入下一級(jí)的 DIN 端?。這一機(jī)制使得即使在長(zhǎng)鏈(理論上可達(dá)數(shù)千點(diǎn))中,每一級(jí)仍能收到清晰、符合時(shí)序的波形,無(wú)需額外的中繼或放大器

數(shù)據(jù)協(xié)議

  1. 單線編碼
    WS2812 只需一根數(shù)據(jù)線即可傳輸所有信息,協(xié)議利用“高電平時(shí)長(zhǎng)”區(qū)分 0/1:
    ‘0’ 碼:高電平約 0.35 μs(±150 ns),低電平約 0.8 μs,總周期 ≈ 1.25 μs;?
    ‘1’ 碼:高電平約 0.7 μs,低電平約 0.6 μs,總周期 ≈ 1.25 μs;?
    這種編碼在高電平和低電平上都不歸零于同一電平,不僅簡(jiǎn)化了硬件設(shè)計(jì),還提升了抗抖動(dòng)能力。

  2. 24 Bit 數(shù)據(jù)格式
    每個(gè)像素點(diǎn)需要 24 bit,按 G7…G0 → R7…R0 → B7…B0 的順序依次發(fā)送?。例如,要顯示純綠(255,0,0),主控會(huì)發(fā)送:11111111 00000000 00000000;其中 11111111 對(duì)應(yīng)十進(jìn)制 255 的綠色通道,高位先發(fā)。
  3. 復(fù)位與數(shù)據(jù)鎖存
    在一連串 24 bit 數(shù)據(jù)發(fā)送完畢后,必須將數(shù)據(jù)線拉低 > 50 μs,WS2812 內(nèi)部的移位寄存器才會(huì)被復(fù)位并將新接收的數(shù)據(jù)輸出到 LED 驅(qū)動(dòng)單元,否則會(huì)出現(xiàn)刷新失敗?。
  4. 總線級(jí)聯(lián)
    WS2812 擁有內(nèi)置信號(hào)整形功能,能將余下的數(shù)據(jù)完整透?jìng)髦料乱患?jí),無(wú)需中斷或額外控制。這使得在同一根數(shù)據(jù)線下,可以串聯(lián)數(shù)十、乃至上千顆 WS2812,主控只需一次完整的數(shù)據(jù)發(fā)送即可更新整條鏈?。

通過(guò)上述工作原理與協(xié)議解讀,在有多個(gè)led級(jí)聯(lián)的情況下,先發(fā)送第一個(gè)led的數(shù)據(jù),后第二個(gè)、第三個(gè)、以此類推。

五、STM32F103C8T6驅(qū)動(dòng)示例

1.引腳接線

STM32F103C8T6WS2812
5V5V,注意:如果多個(gè)級(jí)聯(lián)要外接電源,不要用單片機(jī)的5V
GNDGND
PA0DI
2. 代碼示例
WS2812.c
#include "ws2812.h"

void WS2812_Init(void) {
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_OCInitTypeDef TIM_OCInitStructure;
	DMA_InitTypeDef DMA_InitStructure;
	
    //使能 TIM2、DMA1 和 GPIOA 時(shí)鐘
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);   // TIM2 定時(shí)器時(shí)鐘
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);     // DMA1 總線時(shí)鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  // GPIOA 時(shí)鐘
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

    TIM_InternalClockConfig(TIM2);
	
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStructure.TIM_Period = 90 - 1;		//ARR
	TIM_TimeBaseInitStructure.TIM_Prescaler = 1 - 1;		//PSC
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
	
	TIM_OCStructInit(&TIM_OCInitStructure);
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;		//CCR
	TIM_OC1Init(TIM2, &TIM_OCInitStructure);
	
	DMA_DeInit(DMA1_Channel2);
	DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&TIM2- >CCR1;
	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
	DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)My_ws_buf;
	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
	DMA_InitStructure.DMA_BufferSize = 0;
	DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
	DMA_InitStructure.DMA_Priority = DMA_Priority_High;
	DMA_Init(DMA1_Channel2, &DMA_InitStructure);
	
	TIM_DMACmd(TIM2, TIM_DMA_Update, ENABLE);
}

/**
 * @brief  設(shè)置單顆 WS2812B 燈的 RGB 顏色(十進(jìn)制 0–255)
 * @param  r 紅色分量,0 表示關(guān)閉,255 表示最大亮度
 * @param  g 綠色分量,0 表示關(guān)閉,255 表示最大亮度
 * @param  b 藍(lán)色分量,0 表示關(guān)閉,255 表示最大亮度
 */
void WS2812B_SetColor(uint32_t r, uint32_t g, uint32_t b)
{
    uint16_t *p = My_ws_buf;         
    uint32_t mask, rep, bit;          
    uint32_t GRB_Data;
    
    GRB_Data = ((g & 0xFFU) < < 16)
             | ((r & 0xFFU) < < 8)
             |  (b & 0xFFU);         
 
    for (rep = 0; rep < LED_REPEAT; rep++) {
        mask = 1UL < < (BITS_PER_LED - 1);
        for (bit = 0; bit < BITS_PER_LED; bit++, mask > >= 1) {
            *p++ = (GRB_Data & mask) ? WS2812_HIGH : WS2812_LOW;
        }
    }
}

//發(fā)送信號(hào)
void WS2812B_Send(void)
{
    //清除 DMA 標(biāo)志、重載傳輸長(zhǎng)度
    DMA_ClearFlag(DMA1_FLAG_TC2);
    DMA_SetCurrDataCounter(DMA1_Channel2, LED_REPEAT * BITS_PER_LED);

    //啟動(dòng) DMA & 定時(shí)器
    DMA_Cmd(DMA1_Channel2, ENABLE);
    TIM_Cmd(TIM2, ENABLE);

    //等待傳輸完成
    while (!DMA_GetFlagStatus(DMA1_FLAG_TC2));

    //關(guān)閉 TIM & DMA 并清標(biāo)志,產(chǎn)生 >50μs 復(fù)位低電平
    TIM_Cmd(TIM2, DISABLE);
    DMA_Cmd(DMA1_Channel2, DISABLE);
    DMA_ClearFlag(DMA1_FLAG_TC2);
}

void ws2812_OFF(void)
{
	WS2812B_SetColor(0, 0, 0);
	WS2812B_Send();
}

main.c

#include "stm32f10x.h"                  // Device header
#include "ws2812.h"
#include "delay.h"

static const uint8_t color_list[][3] = {
    {255,    0,   0},  // 紅
    {255,  125,   0},  // 橙
    {255,  255,   0},  // 黃
    {  0,  255,   0},  // 綠
    {  0,  255, 255},  // 青
    {  0,    0, 255},  // 藍(lán)
    {255,    0, 255},  // 紫
    {  0,    0,   0}   // 關(guān)燈
};

uint16_t NUM_COLORS = sizeof(color_list) / sizeof(color_list[0]);
uint32_t idx = 0;

int main(void)
{
    WS2812_Init(); 
//	ws2812_OFF();
	
	while(1){
		uint8_t r = color_list[idx][0];
        uint8_t g = color_list[idx][1];
        uint8_t b = color_list[idx][2];
        
        WS2812B_SetColor(r, g, b);
        WS2812B_Send();
		
		Delay_ms(1000);
		idx = (idx + 1) % NUM_COLORS;
	}
}
  1. 效果展示

總結(jié)

WS2812 是一款將控制電路、信號(hào)整形放大和恒流驅(qū)動(dòng)與 RGB 發(fā)光單元集成于 5050 封裝中的智能化全彩 LED 模塊,僅需一根數(shù)據(jù)線即可以 800 kbps 單線協(xié)議傳輸精確的色彩控制信號(hào),從而實(shí)現(xiàn)鏈?zhǔn)郊?jí)聯(lián)上千點(diǎn)的獨(dú)立尋址與顯示?。內(nèi)部集成的數(shù)字移位寄存器與精密振蕩器可按 GRB 順序(G7…G0→R7…R0→B7…B0)接收并鎖存 24 bit 顏色數(shù)據(jù),隨后通過(guò)恒流驅(qū)動(dòng)電路根據(jù)不同位的高低電平寬度產(chǎn)生對(duì)應(yīng)亮度,并將余下數(shù)據(jù)重塑后輸出到下一顆,實(shí)現(xiàn)信號(hào)級(jí)聯(lián)???蓮V泛應(yīng)用于燈帶、燈環(huán)、可穿戴燈效、舞臺(tái)裝飾等場(chǎng)景?。
注意事項(xiàng):

  • 嚴(yán)格時(shí)序控制:軟件模擬易受中斷或系統(tǒng)抖動(dòng)影響,易導(dǎo)致亮度不穩(wěn)定或色偏,推薦使用定時(shí)器+DMA、SPI 或 RMT(ESP32)等硬件外設(shè)生成 PWM 波形,以確保 T0H/T1H 與 T0L/T1L 寬度的高精度?。
  • 復(fù)位低電平:發(fā)送完 24 bit 數(shù)據(jù)后,必須將數(shù)據(jù)線保持低電平 > 50 μs,WS2812 內(nèi)部才會(huì)將新數(shù)據(jù)鎖存并更新輸出;低于此時(shí)長(zhǎng)可能導(dǎo)致刷新失敗或出現(xiàn)殘影?。
  • 鏈?zhǔn)郊?jí)聯(lián)能力:得益于內(nèi)部信號(hào)整形,單線級(jí)聯(lián)可支持 ≥ 1 024 個(gè)像素刷新(30 fps 條件下);在更高刷新率或更長(zhǎng)鏈長(zhǎng)場(chǎng)景下,建議分段布線并選用多路輸出或并行總線以降低時(shí)延和信號(hào)累積失真?。

以上僅為個(gè)人觀點(diǎn)供參考,如有問(wèn)題歡迎大家留言討論,如需源碼可點(diǎn)贊收藏加關(guān)注,在評(píng)論留下郵箱獲?。。?!

審核編輯 黃宇

聲明:本文內(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)投訴
  • STM32單片機(jī)
    +關(guān)注

    關(guān)注

    59

    文章

    553

    瀏覽量

    60458
  • WS2812
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【瑞薩RA6E2】點(diǎn)亮 WS2812 全彩點(diǎn)陣屏

    通過(guò)單總線方式控制,只需一個(gè) IO 口,就可以點(diǎn)亮數(shù)千個(gè)珠。 這里使用 RA6E2 點(diǎn)亮 WS2812
    發(fā)表于 11-05 08:36

    STM32控制WS2812 RGB帶的代碼分享

    STM32控制WS2812 RGB帶的代碼分享
    發(fā)表于 12-15 07:09

    WS2812硬件電路設(shè)計(jì)資料分享

    效及亮度;硬件設(shè)計(jì):原理圖思路:1.MCU選用STM32F103C8T6(用的時(shí)候嘉立創(chuàng)48一片,現(xiàn)在125一片,吃相難看),剛好之前項(xiàng)目有用剩的103C8T6,本著時(shí)間就是金錢(qián)的想法,就選了這款芯片;兩個(gè)按鍵一個(gè)用于復(fù)位,
    發(fā)表于 02-11 08:00

    STM32F103C8T6+PWM+DMA驅(qū)動(dòng)WS2812帶的方法

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

    怎樣使用STM32F103C8T6微控制器去點(diǎn)亮LED

    STM32F103C8T6是什么呢?怎樣使用STM32F103C8T6微控制器去點(diǎn)亮LED呢?點(diǎn)亮LED
    發(fā)表于 02-24 07:23

    STM32F103C8T6核心板的資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103C8T6核心板的資料合集免費(fèi)下載包括了:STM32F103C8T6核心板測(cè)試程序(PC13閃爍),STM32F103C8T6核心板測(cè)試程序(RTC
    發(fā)表于 06-04 08:00 ?801次下載
    <b class='flag-5'>STM32F103C8T6</b>核心板的資料合集免費(fèi)下載

    STM32F103C8T6原理圖

    STM32F103C8T6原理圖免費(fèi)下載。
    發(fā)表于 06-02 10:01 ?218次下載

    利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈

    利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈STM32F103C8T6芯片簡(jiǎn)介核心板原理圖搭建流水燈電路修改工程模板代碼實(shí)現(xiàn)STM32F103C8T6芯片簡(jiǎn)介根據(jù)
    發(fā)表于 11-17 17:06 ?60次下載
    利用<b class='flag-5'>STM32F103C8T6</b>最小系統(tǒng)板<b class='flag-5'>點(diǎn)亮</b>流水燈

    利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈

    利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈STM32F103C8T6芯片簡(jiǎn)介核心板原理圖搭建流水燈電路修改工程模板代碼實(shí)現(xiàn)STM32F103C8T6芯片簡(jiǎn)介根據(jù)
    發(fā)表于 11-17 18:06 ?97次下載
    利用<b class='flag-5'>STM32F103C8T6</b>最小系統(tǒng)板<b class='flag-5'>點(diǎn)亮</b>流水燈

    STM32F103C8t6程序下載

    STM32F103C8t6程序下載
    發(fā)表于 11-24 18:21 ?246次下載
    <b class='flag-5'>STM32F103C8t6</b>程序下載

    WS2812硬件電路設(shè)計(jì)

    效及亮度;硬件設(shè)計(jì):原理圖思路:1.MCU選用STM32F103C8T6(用的時(shí)候嘉立創(chuàng)48一片,現(xiàn)在125一片,吃相難看),剛好之前項(xiàng)目有用剩的103C8T6,本著時(shí)間就是金錢(qián)的想法,就選了這款
    發(fā)表于 12-07 16:36 ?36次下載
    <b class='flag-5'>WS2812</b>硬件電路設(shè)計(jì)

    STM32F103C8T6+PWM+DMA驅(qū)動(dòng) WS2812

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

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

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

    最簡(jiǎn)WS2812類似RGB驅(qū)動(dòng)方法

    最簡(jiǎn)WS2812類似RGB驅(qū)動(dòng)方法
    的頭像 發(fā)表于 06-19 17:51 ?4900次閱讀
    最簡(jiǎn)<b class='flag-5'>WS2812</b>類似<b class='flag-5'>RGB</b><b class='flag-5'>燈</b>條<b class='flag-5'>驅(qū)動(dòng)</b>方法

    分享STM32F103C8T6原理圖

    STM32F103C8T6最小系統(tǒng)原理圖
    發(fā)表于 08-29 15:52 ?157次下載