找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1209|回復: 14
打印 上一主題 下一主題
收起左側(cè)

請問PWM要如何驅(qū)動WS2811

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1144894 發(fā)表于 2025-3-5 17:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
使用的是2T51單片機PWM的時鐘源為48MHz,請教各位大佬如何通過PWM寫時序去驅(qū)動?

1741168001712.jpg (23.76 KB, 下載次數(shù): 0)

1741168001712.jpg

1741168146513.jpg (4.01 KB, 下載次數(shù): 0)

1741168146513.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1144894 發(fā)表于 2025-3-5 20:14 | 只看該作者
這樣寫是控制不了WS2811的嗎

9ebf5bea2f1519a7d60769f50254493.jpg (301.91 KB, 下載次數(shù): 0)

9ebf5bea2f1519a7d60769f50254493.jpg

f011eca920b3b56fbfa293bc9f8ad7b.jpg (247.9 KB, 下載次數(shù): 0)

f011eca920b3b56fbfa293bc9f8ad7b.jpg
回復

使用道具 舉報

板凳
ID:401564 發(fā)表于 2025-3-6 09:16 | 只看該作者
這個芯片跟PWM是沒什么關(guān)系的,亮度是由寫入的數(shù)據(jù)決定的
回復

使用道具 舉報

地板
ID:161164 發(fā)表于 2025-3-6 10:26 | 只看該作者
用PWM驅(qū)動WS2811需要用PWM溢出中斷
在中斷內(nèi)更新下一個PWM的占空比
回復

使用道具 舉報

5#
ID:1144894 發(fā)表于 2025-3-6 11:26 | 只看該作者
lkc8210 發(fā)表于 2025-3-6 10:26
用PWM驅(qū)動WS2811需要用PWM溢出中斷
在中斷內(nèi)更新下一個PWM的占空比

void WS_Set1(unsigned long dat)
{
    unsigned char i;
                //EA = 1;
    for(i = 0; i < 24; i++)
    {
        if(0x800000 == (dat & 0x800000) )
                WPWM_OUT_SET(42);//48MHz:1碼,高電平920ns,低電平320ns
        else
                WPWM_OUT_SET(12);//48MHz:0碼,高電平320ns,低電平920ns
        dat <<= 1;  
    }
}
我想了解一下我這樣寫有什么問題,是因為這樣寫PWM的0、1碼切換過于慢,所以要用PWM溢出中斷來切換0、1碼是嗎?
回復

使用道具 舉報

6#
ID:1144894 發(fā)表于 2025-3-6 13:02 | 只看該作者
lkc8210 發(fā)表于 2025-3-6 10:26
用PWM驅(qū)動WS2811需要用PWM溢出中斷
在中斷內(nèi)更新下一個PWM的占空比

void WS_Set1(unsigned long dat)
{
    unsigned char i;    for(i = 0; i < 24; i++)
    {
        if(0x800000 == (dat & 0x800000) )
        {
               WPWM_OUT_SET(42);//48MHz:1碼,高電平920ns,低電平320ns
        }
        else
        {
                WPWM_OUT_SET(12);//48MHz:0碼,高電平320ns,低電平920ns
        }
        dat <<= 1;  
    }
}
請問這樣寫切換0、1碼和用PWM溢出中斷切換0、1碼有什么區(qū)別?
是因為這樣寫導致0、1碼切換過慢是嗎?
回復

使用道具 舉報

7#
ID:401564 發(fā)表于 2025-3-7 09:28 | 只看該作者
Jasminedebug 發(fā)表于 2025-3-6 13:02
void WS_Set1(unsigned long dat)
{
    unsigned char i;    for(i = 0; i < 24; i++)

STC的PWMM頻率是不能設(shè)置的!它只能是時鐘的多少分之一的分頻
就算是有能設(shè)置的型號,320nS就是0.32uS,那就是說,最壞的情況就是,每0.32uS的時間就進入中斷一次,用來處理下一個字節(jié)
系統(tǒng)幾乎沒有時間去做其它的事了,沒有人這么干的
回復

使用道具 舉報

8#
ID:1145034 發(fā)表于 2025-3-7 22:40 來自觸屏版 | 只看該作者
一個周期造一個bit,可以先送幾個周期,確保數(shù)據(jù)是你想要的,再進行下一步,一般要配合dma
回復

使用道具 舉報

9#
ID:1113066 發(fā)表于 2025-4-3 17:04 | 只看該作者
你好,我這邊是WS2811的原廠家,有關(guān)時序控制的問題,可以聯(lián)系我們,我們可以提供技術(shù)支持和源代碼,教你控制WS2811
回復

使用道具 舉報

10#
ID:1110477 發(fā)表于 2025-4-4 04:40 | 只看該作者
World-semi 發(fā)表于 2025-4-3 17:04
你好,我這邊是WS2811的原廠家,有關(guān)時序控制的問題,可以聯(lián)系我們,我們可以提供技術(shù)支持和源代碼,教你控 ...

我也想要資料,文檔即可,謝謝
回復

使用道具 舉報

11#
ID:607312 發(fā)表于 2025-4-29 10:49 | 只看該作者
World-semi 發(fā)表于 2025-4-3 17:04
你好,我這邊是WS2811的原廠家,有關(guān)時序控制的問題,可以聯(lián)系我們,我們可以提供技術(shù)支持和源代碼,教你控 ...

你好,我也想要資料,謝謝!
回復

使用道具 舉報

12#
ID:108361 發(fā)表于 2025-4-29 13:02 | 只看該作者
用SPI模擬,不要用PWM
回復

使用道具 舉報

13#
ID:879348 發(fā)表于 2025-4-29 15:08 | 只看該作者
要控制每一個脈沖的時間,這并不省事,如果本身程序有很多事情做,可以考慮再掛一塊單片機專門做這個事
回復

使用道具 舉報

14#
ID:1034262 發(fā)表于 2025-4-29 17:47 | 只看該作者
我用STC的AI8051U驅(qū)動WS2812,用PWM或SPI都可以,DMA傳輸,不耗CPU時間,一次傳輸最多2700個燈。
回復

使用道具 舉報

15#
ID:111490 發(fā)表于 2025-5-5 10:10 | 只看該作者
coody_sz 發(fā)表于 2025-4-29 17:47
我用STC的AI8051U驅(qū)動WS2812,用PWM或SPI都可以,DMA傳輸,不耗CPU時間,一次傳輸最多2700個燈。

能發(fā)程序上來學習一下嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表