打印
[单片机芯片]

求助!ch582驱动ws2812很奇怪

[复制链接]
3369|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TJM2613|  楼主 | 2023-2-6 16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 TJM2613 于 2023-2-14 14:43 编辑

定时器等初始化已完成
驱动代码移植ch57X的ws2812代码如下:
typedef struct {
    uint32_t g;
    uint32_t r;
    uint32_t b;
}ws2812_in_spi_buffer_t;

__attribute__((aligned(4))) ws2812_in_spi_buffer_t ws2812_buf[1];
uint32_t map_table[8] = {
    0x8e888888,
    0xe8888888,

    0x888e8888,
    0x88e88888,

    0x88888e88,
    0x8888e888,

    0x8888888e,
    0x888888e8,
};

void ws2812_set_rgb(ws2812_in_spi_buffer_t *buf,uint8_t r,uint8_t g,uint8_t b){

    buf->r = 0x88888888;
    for(uint8_t i=0;i<8;i++){
        if(r&0x1) {
            buf->r |= map_table;
        }
        r>>=1;
    }

    buf->g = 0x88888888;
    for(uint8_t i=0;i<8;i++){
        if(g&0x1) {
            buf->g |= map_table;
        }
        g>>=1;
    }

    buf->b = 0x88888888;
    for(uint8_t i=0;i<8;i++){
        if(b&0x1) {
            buf->b |= map_table;
        }
        b>>=1;
    }
}


void ws2812_test(char argc ,char *argv) {
    SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
}

void ws2812_off_all(void) {
    for(uint32_t i=0;i<1;i++) {
        ws2812_set_rgb(&ws2812_buf,0,0,0);

    }
    SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
}

uint8_t LED_cnt = 0;
void SPI_LED()
{
    if(LED_cnt == 0)
    {
        for(uint32_t i=0;i<30;i++) {
                ws2812_set_rgb(&ws2812_buf,0xff,0xff,0xff);
//白色最亮不正常
            }
            SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
    }else if(LED_cnt == 1)
    {
        for(uint32_t i=0;i<30;i++) {
                ws2812_set_rgb(&ws2812_buf,0xff,0,0);//红色最亮正常
            }
            SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
    }else if(LED_cnt == 2)
    {
        for(uint32_t i=0;i<30;i++) {
                ws2812_set_rgb(&ws2812_buf,0x00,0xff,0);
//绿色最亮正常
            }
            SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
    }else if(LED_cnt == 3)
    {
        for(uint32_t i=0;i<30;i++) {
                ws2812_set_rgb(&ws2812_buf,0x00,0,0xff);
//蓝色最亮正常
            }
            SPI0_MasterDMATrans((uint8_t *)ws2812_buf, 12*1);
    }
    LED_cnt++;
    if(LED_cnt >= 4)
    {
        LED_cnt = 0;
    }

}

白色灯并没有亮,而是只亮红色,随后尝试了RGB = 0Xff,0xff,0和RGB = 0xff,0,0xff,均不正常,全是只亮红色 ,而RGB = 0,0xff,0xff时是正常亮青色,请问是哪里出现了问题

使用特权

评论回复
沙发
TJM2613|  楼主 | 2023-2-7 10:40 | 只看该作者
移植ch573的程序,但是ws2812并没有亮

使用特权

评论回复
评论
TJM2613 2023-3-8 16:44 回复TA
问题已解决,灯驱动太多,供电不足 
板凳
WayJay1| | 2023-2-9 15:46 | 只看该作者
看波形

使用特权

评论回复
评论
TJM2613 2023-2-10 11:16 回复TA
@天残梦 :没有对引脚进行配置 
天残梦 2023-2-9 23:23 回复TA
@TJM2613 :是什么原因呢 
TJM2613 2023-2-9 15:48 回复TA
谢了,已经解决了 
地板
lilijin1995| | 2023-2-12 18:49 | 只看该作者
我也是昨晚用582的TIM PWM DMA实现了RainbowCycle效果:https://bbs.21ic.com/icview-3283418-1-1.html

使用特权

评论回复
5
TJM2613|  楼主 | 2023-2-14 14:46 | 只看该作者
请问这个问题有人遇到过吗?

使用特权

评论回复
6
天残梦| | 2023-2-17 19:45 | 只看该作者
可能是Spi的时钟没配合适

使用特权

评论回复
7
sesefadou| | 2023-3-2 10:11 | 只看该作者
spi的设置不正确的吗?              

使用特权

评论回复
8
backlugin| | 2023-3-2 10:26 | 只看该作者
参考一下st,有相关的例程可以借鉴的。

使用特权

评论回复
9
eefas| | 2023-3-2 11:08 | 只看该作者
这个说明延时函数有问题。              

使用特权

评论回复
10
wwppd| | 2023-3-2 11:34 | 只看该作者
这个可以使用spi+dma的方式。

使用特权

评论回复
11
sdCAD| | 2023-3-2 11:43 | 只看该作者
驱动ws2812非常占用时间的。

使用特权

评论回复
12
macpherson| | 2023-3-2 12:02 | 只看该作者
驱动的效果怎么样              

使用特权

评论回复
13
modesty3jonah| | 2023-3-2 16:04 | 只看该作者
是不是SPI0时钟存在问题呢?              

使用特权

评论回复
14
LOVEEVER| | 2023-3-2 16:41 | 只看该作者
延时函数的问题

使用特权

评论回复
15
iyoum| | 2023-3-3 20:51 | 只看该作者
这个ws2812的功耗非常的大。

使用特权

评论回复
16
Antecer| | 2023-7-7 17:39 | 只看该作者
iyoum 发表于 2023-3-3 20:51
这个ws2812的功耗非常的大。

简直大得惊人,我这边DIY键盘的时候,为了图编程省事,就用了ws2812,然后硬件打样好了才突然想起来它的功耗可是单颗60mA左右,然后我这全键盘一百多颗LED,简直不敢乱来。又辛辛苦苦花了1天时间给它做了个亮度限制算法。

使用特权

评论回复
17
chenjun89| | 2023-7-11 08:15 | 只看该作者
用示波器测下波形是否正确,如果不对的话,还是程序配置有问题。

使用特权

评论回复
18
yorkbarney| | 2023-8-3 22:39 | 只看该作者
ch582驱动ws2812不正常吗

使用特权

评论回复
19
updownq| | 2023-8-3 22:57 | 只看该作者
这个延时是不是有问题呢              

使用特权

评论回复
20
ingramward| | 2023-8-4 13:21 | 只看该作者
这个在ch32v307上移植过              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

41

帖子

1

粉丝