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

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
cheng592
Posts: 21

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

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

TripleJay
Posts: 40

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

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

cheng592
Posts: 21

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

TripleJay 2022年 Dec 2日 15:13

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

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

TripleJay
Posts: 40

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

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

cheng592
Posts: 21

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

TripleJay 2022年 Dec 2日 15:31

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

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

TripleJay
Posts: 40

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

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

cheng592
Posts: 21

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

TripleJay 2022年 Dec 2日 15:44

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

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

kangxi
Posts: 40

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

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

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

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

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

Post Reply