91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

驅(qū)動(dòng)WS2812B燈條時(shí)顯示其他顏色咋辦?

冬至子 ? 來(lái)源:小陳學(xué)不停 ? 作者:小陳學(xué)不停 ? 2023-07-21 15:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一 背景

前段時(shí)間發(fā)現(xiàn)在驅(qū)動(dòng)WS2812B燈條的時(shí)候會(huì)有突然顯示其他顏色的情況,后來(lái)排查發(fā)現(xiàn)是時(shí)序被其他任務(wù)打斷了,在控制時(shí)序的時(shí)候需要做原子性訪問來(lái)保證時(shí)序的正確性。

二 WS2812B數(shù)據(jù)手冊(cè)

2.1 邏輯0和邏輯1

圖片

2.2 發(fā)送時(shí)序

圖片

綠色數(shù)據(jù)先發(fā),高位在前

圖片

三 寫數(shù)據(jù)

3.1 精準(zhǔn)ns和us級(jí)別延時(shí)的實(shí)現(xiàn)

一個(gè)__NOP()的時(shí)間是一個(gè)時(shí)鐘周期,如果主頻設(shè)置的是64MHz,那么一個(gè)時(shí)鐘周期就是1/64000000 = 15.625ns,這里只需要實(shí)現(xiàn)一個(gè)330ns延時(shí),2個(gè)330ns就是660ns了。

void delay_330ns(void)
{
    volatile uint8_t cnt = 21;
    while(cnt--)
    {
        __NOP();
    }
}
void delay_660ns(void)
{
    volatile uint8_t cnt = 21*2;
    while(cnt--)
    {
        __NOP();
    }
}
void ws2812b_write_data(uint8_t data){
  for(uint8_t i=0;i< 8;i++)
  {
    if(data & 0x80)//高位先發(fā)
    {
      GPIOA- >BSRR = GPIO_PIN_8;
      delay_660ns();
      GPIOA- >BRR = GPIO_PIN_8;
      delay_660ns();
    }
    else
    {
      GPIOA- >BSRR = GPIO_PIN_8;
      delay_330ns();
      GPIOA- >BRR = GPIO_PIN_8;
      delay_660ns();
    }
    data< <=1;
  }
}


#define CONFIG_LED_COUNT 12


void updata_light(uint8_t green,uint8_t red,uint8_t blue)
{  
  rt_base_t level = rt_hw_interrupt_disable();//關(guān)閉中斷

  for(int i=0;i< CONFIG_LED_COUNT;i++)
  {  
      WS2812_Send(green);      //發(fā)送當(dāng)前需要亮的燈的顏色
      WS2812_Send(red);
      WS2812_Send(blue);
  }
  rt_hw_interrupt_enable(level);//開啟中斷

  rt_hw_us_delay(300);//復(fù)位顯示
}

四 總結(jié)

當(dāng)燈的數(shù)量比較多的時(shí)候,就不能用這種延時(shí)方式了,長(zhǎng)時(shí)間的關(guān)閉中斷可能會(huì)引起一些中斷無(wú)法及時(shí)響應(yīng)造成數(shù)據(jù)丟失,在發(fā)現(xiàn)問題的時(shí)候或者調(diào)試新算法的時(shí)候,需要基于數(shù)據(jù)來(lái)分析問題,有了數(shù)據(jù)自然就會(huì)有答案了。

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

    關(guān)注

    54

    文章

    9083

    瀏覽量

    155548
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1606

    瀏覽量

    111870
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1328

    瀏覽量

    56231
  • 串口中斷
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    14613
  • WS2812B
    +關(guān)注

    關(guān)注

    2

    文章

    40

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    零知開源——使用 GPIO 模擬時(shí)序驅(qū)動(dòng) WS2812B LED

    WS2812B LED 帶的信號(hào)傳輸時(shí)序,從而實(shí)現(xiàn)對(duì)單色或多彩 LED 帶的控制。這種技術(shù)允許我們避開專用驅(qū)動(dòng)庫(kù),直接與硬件進(jìn)行交互,理解并掌握
    發(fā)表于 02-20 14:31

    使用ESP8266驅(qū)動(dòng)WS2812B型RGB LED智能制作分享

    這個(gè)智能方案很不錯(cuò),只用了一個(gè)無(wú)線WIFI esp8266芯片,驅(qū)動(dòng)ws2812b型RGB LED,效果很贊,在群里看到的,特分享下,若是侵犯了版權(quán),聯(lián)系我刪除就行了
    發(fā)表于 07-16 04:35

    WS2812B RGB全彩LED

    WS2812B RGB全彩LED珠,只需通過一根信號(hào)線控制多個(gè)顯示,本教程使用X-CTR100控制器驅(qū)動(dòng)
    發(fā)表于 08-06 08:15

    怎樣使用PWM+DMA的方式去驅(qū)動(dòng)WS2812B

    PWM+DMA 驅(qū)動(dòng) WS2812一、項(xiàng)目要求(主要目的)使用 PWM+DMA 的方式驅(qū)動(dòng) WS2812B, 并每隔 800ms 隨機(jī)顯示
    發(fā)表于 02-22 06:42

    ws2812b led做遠(yuǎn)程區(qū)域面板控制器的教程

    描述WS2812B 遠(yuǎn)程區(qū)域面板控制器我用ws2812b led做了一個(gè)面板,你可以把覆盆子前面的動(dòng)畫放到面板上使用此板,您可以控制面板并將其放置在任何有 wifi 的地方PCB代
    發(fā)表于 07-29 07:16

    WS2812B最后一個(gè)顏色總是不對(duì),是什么原因造成的?

    WS2812B最后一個(gè)顏色總是不對(duì)
    發(fā)表于 09-20 07:24

    【LuckFox Pico Plus開發(fā)板免費(fèi)試用】05_使用SPI驅(qū)動(dòng)WS2812B

    使用SPI驅(qū)動(dòng)WS2812B 前面把開發(fā)環(huán)境全部搭好,工具也都準(zhǔn)備好了,這次就來(lái)做點(diǎn)小demo,正好手上有一個(gè)WS2812B的小,上面有
    發(fā)表于 10-29 19:15

    使用ESP8266驅(qū)動(dòng)WS2812B型RGB LED簡(jiǎn)單3步打造智能

    使用ESP8266驅(qū)動(dòng)WS2812B型RGB LED簡(jiǎn)單3步打造智能
    發(fā)表于 03-26 17:15 ?142次下載

    Arduino WS2812B LED帶設(shè)計(jì)方案

    Arduino WS2812B LED帶可單獨(dú)控制每個(gè)LED的亮度和顏色,提供了一種簡(jiǎn)單而酷炫的LED效果體驗(yàn)。
    發(fā)表于 04-24 08:36 ?1.5w次閱讀
    Arduino <b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b>帶設(shè)計(jì)方案

    使用WS2812b Led的diy光劍控制器

    電子發(fā)燒友網(wǎng)站提供《使用WS2812b Led的diy光劍控制器.zip》資料免費(fèi)下載
    發(fā)表于 08-02 11:01 ?13次下載
    使用<b class='flag-5'>WS2812b</b> Led<b class='flag-5'>燈</b><b class='flag-5'>條</b>的diy光劍控制器

    迷你乒乓球含Arduino Nano WS2812B LED

    電子發(fā)燒友網(wǎng)站提供《迷你乒乓球含Arduino Nano WS2812B LED.zip》資料免費(fèi)下載
    發(fā)表于 11-02 11:00 ?1次下載
    迷你乒乓球含Arduino Nano <b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b><b class='flag-5'>條</b>

    WS2812B遙控控制器

    電子發(fā)燒友網(wǎng)站提供《WS2812B遙控控制器.zip》資料免費(fèi)下載
    發(fā)表于 11-25 09:16 ?8次下載
    <b class='flag-5'>WS2812B</b>遙控<b class='flag-5'>燈</b>控制器

    適用于Azure Sphere的WS2812B LED驅(qū)動(dòng)

    電子發(fā)燒友網(wǎng)站提供《適用于Azure Sphere的WS2812B LED驅(qū)動(dòng)器.zip》資料免費(fèi)下載
    發(fā)表于 12-06 14:42 ?0次下載
    適用于Azure Sphere的<b class='flag-5'>WS2812B</b> LED<b class='flag-5'>燈</b>帶<b class='flag-5'>驅(qū)動(dòng)</b>器

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

    WS2812RGB帶 ????? 通過零知標(biāo)準(zhǔn)開發(fā)板平臺(tái)上驅(qū)動(dòng)WS2812RGB珠,包括WS2812
    的頭像 發(fā)表于 02-19 15:09 ?3085次閱讀
    零知開源——玩轉(zhuǎn)<b class='flag-5'>WS2812B</b><b class='flag-5'>燈</b><b class='flag-5'>條</b>模塊

    零知開源——使用 GPIO 模擬時(shí)序驅(qū)動(dòng) WS2812B LED

    RGB ???????WS2812B 是一款內(nèi)含控制器芯片的全彩 LED 珠,每個(gè)珠可以獨(dú)立顯示紅、綠、藍(lán)三色。它通過單一數(shù)據(jù)
    的頭像 發(fā)表于 02-20 15:43 ?2639次閱讀
    零知開源——使用 GPIO 模擬時(shí)序<b class='flag-5'>驅(qū)動(dòng)</b> <b class='flag-5'>WS2812B</b> LED <b class='flag-5'>燈</b>帶