找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 638|回复: 12
收起左侧

请问PWM要如何驱动WS2811

[复制链接]
ID:1144894 发表于 2025-3-5 17:51 | 显示全部楼层 |阅读模式
使用的是2T51单片机PWM的时钟源为48MHz,请教各位大佬如何通过PWM写时序去驱动?
1741168001712.jpg
1741168146513.jpg
回复

使用道具 举报

ID:1144894 发表于 2025-3-5 20:14 | 显示全部楼层
这样写是控制不了WS2811的吗
9ebf5bea2f1519a7d60769f50254493.jpg
f011eca920b3b56fbfa293bc9f8ad7b.jpg
回复

使用道具 举报

ID:401564 发表于 2025-3-6 09:16 | 显示全部楼层
这个芯片跟PWM是没什么关系的,亮度是由写入的数据决定的
回复

使用道具 举报

ID:161164 发表于 2025-3-6 10:26 | 显示全部楼层
用PWM驱动WS2811需要用PWM溢出中断
在中断内更新下一个PWM的占空比
回复

使用道具 举报

ID:1144894 发表于 2025-3-6 11:26 | 显示全部楼层
lkc8210 发表于 2025-3-6 10:26
用PWM驱动WS2811需要用PWM溢出中断
在中断内更新下一个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码是吗?
回复

使用道具 举报

ID:1144894 发表于 2025-3-6 13:02 | 显示全部楼层
lkc8210 发表于 2025-3-6 10:26
用PWM驱动WS2811需要用PWM溢出中断
在中断内更新下一个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码有什么区别?
是因为这样写导致0、1码切换过慢是吗?
回复

使用道具 举报

ID:401564 发表于 2025-3-7 09:28 | 显示全部楼层
Jasminedebug 发表于 2025-3-6 13:02
void WS_Set1(unsigned long dat)
{
    unsigned char i;    for(i = 0; i < 24; i++)

STC的PWMM频率是不能设置的!它只能是时钟的多少分之一的分频
就算是有能设置的型号,320nS就是0.32uS,那就是说,最坏的情况就是,每0.32uS的时间就进入中断一次,用来处理下一个字节
系统几乎没有时间去做其它的事了,没有人这么干的
回复

使用道具 举报

ID:1145034 发表于 2025-3-7 22:40 来自手机 | 显示全部楼层
一个周期造一个bit,可以先送几个周期,确保数据是你想要的,再进行下一步,一般要配合dma
回复

使用道具 举报

ID:1113066 发表于 2025-4-3 17:04 | 显示全部楼层
你好,我这边是WS2811的原厂家,有关时序控制的问题,可以联系我们,我们可以提供技术支持和源代码,教你控制WS2811
回复

使用道具 举报

ID:1110477 发表于 2025-4-4 04:40 | 显示全部楼层
World-semi 发表于 2025-4-3 17:04
你好,我这边是WS2811的原厂家,有关时序控制的问题,可以联系我们,我们可以提供技术支持和源代码,教你控 ...

我也想要资料,文档即可,谢谢
回复

使用道具 举报

ID:607312 发表于 2025-4-29 10:49 | 显示全部楼层
World-semi 发表于 2025-4-3 17:04
你好,我这边是WS2811的原厂家,有关时序控制的问题,可以联系我们,我们可以提供技术支持和源代码,教你控 ...

你好,我也想要资料,谢谢!
回复

使用道具 举报

ID:108361 发表于 2025-4-29 13:02 | 显示全部楼层
用SPI模拟,不要用PWM
回复

使用道具 举报

ID:879348 发表于 2025-4-29 15:08 | 显示全部楼层
要控制每一个脉冲的时间,这并不省事,如果本身程序有很多事情做,可以考虑再挂一块单片机专门做这个事
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表