基于SPI+DMA方式的ws2812b氛围灯控制

好处:相比于gpio控制,可以大大节省CPU的时间,CPU只要将要传输的数据计算好放入内存中,然后发动DMA传输即可,后续整个过程并不需要CPU干预,CPU可以用于做其他的事情。特别是某些带蓝牙的芯片,需要给到CPU足够的时间进行协议栈的维护。

以下是ws2812b的时序:
在这里插入图片描述
我们只用SPI的一条data线,注意spi有四种mode,会影响spi data在闲时的数据高低,建议调试时使用示波器来检测数据的对错。

我们将SPI的速率设置到3.2M/s,那么每个spi的比特位对应的是312.5ns,此时若spi的数据是4’b1000,那么则对应ws2812b的0 code,如果spi的数据是4‘b的1110,那么则对应ws2812b的1 code。

也就是将spi设定到某个频率, 然后用4bit表示ws2812b的0 码或者1码。
如果本来某个灯的数据是24bit的0x00000000_111111111_00000000,那么对应的spi数据就应该是0x1000_1000_1000_1000_1000_1000_1000_1000____1110_1110_1110_1110_1110_1110_1110_1110___1000_1000_1000_1000_1000_1000_1000_1000=0x80808080_e0e0e0e0_80808080

如果假设以前是12个灯,那么对应288bit的数据,现在将是1152bit(通过SPI传输)的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值