Page 1 of 1

【已解决】使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 14:00
by cheng592

目前使用BT3L这个模块驱动ws2812这种灯带,我想使用PWM+DMA这种方式,但是dma的fifo好像不够?我这边试了DMA的数据超过500多个字节PWM就会停不下来,有点像溢出了?

这种灯的驱动方式有
1.SPI(这个模组是不支持的)
2.PWM+DMA(但是单次发送数据有限制,多个灯的时候缓冲区不够大)
3.直接纯IO模拟时序,(但是这种模式的时序会受到其他系统任务干扰)


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 15:13
by TripleJay

目前我们在BT3L上跑mesh,然后控制WS2812.直接使用SPI,关闭中断,50颗灯珠,约5ms左右,控制和使用还算正常.
PWM+DMA,DMA的大小只有500个字节,你只能分批塞进去,然后看分批塞的时候带来的间隙有没有影响?速度比较快,一般没有影响,具体你要自己实际测试下


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 15:15
by cheng592
TripleJay 2022年 Dec 2日 15:13

目前我们在BT3L上跑mesh,然后控制WS2812.直接使用SPI,关闭中断,50颗灯珠,约5ms左右,控制和使用还算正常.
PWM+DMA,DMA的大小只有500个字节,你只能分批塞进去,然后看分批塞的时候带来的间隙有没有影响?速度比较快,一般没有影响,具体你要自己实际测试下

BT3L这个模块支持SPI吗,我看到介绍没有这个外设以为用不了


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 15:31
by TripleJay

有SPI,具体可以翻阅芯片手册和模组手册


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 15:33
by cheng592
TripleJay 2022年 Dec 2日 15:31

有SPI,具体可以翻阅芯片手册和模组手册

刚刚我问了涂鸦这边他说没有SPI的,是不是模块搞错了呀


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 2日 15:44
by TripleJay

SPI_DO(PB7),控制WS2812你只需要用到这个口。其他引脚不着,BT3L模组可以满足你的需求。


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2022年 Dec 6日 14:56
by cheng592
TripleJay 2022年 Dec 2日 15:44

SPI_DO(PB7),控制WS2812你只需要用到这个口。其他引脚不着,BT3L模组可以满足你的需求。

你好我这边已经驱动成功了非常感谢。然后我这边遇到新的问题就是,在操作灯的时候,如果连接了蓝牙那么灯时序会受到影响,请问这种情况你是怎么解决的呢,我能想到的就是在操作灯的时候关闭中断,等到数据写入完成之后再打开,你那边是这样处理的吗?


Re: 使用BT3L驱动单总线灯珠问题

Posted: 2023年 Jan 13日 11:26
by kangxi
cheng592 2022年 Dec 6日 14:56
TripleJay 2022年 Dec 2日 15:44

SPI_DO(PB7),控制WS2812你只需要用到这个口。其他引脚不着,BT3L模组可以满足你的需求。

你好我这边已经驱动成功了非常感谢。然后我这边遇到新的问题就是,在操作灯的时候,如果连接了蓝牙那么灯时序会受到影响,请问这种情况你是怎么解决的呢,我能想到的就是在操作灯的时候关闭中断,等到数据写入完成之后再打开,你那边是这样处理的吗?

是的,要关闭中断,但SPI发送数据的时间要控制一下,发送时长越短越好,10ms以内,发送时长过长会影响蓝牙连接。