STMCU小助手
发布时间:2022-1-6 22:00
效果虽然不错,可以节省不少MCU资源,但用一个byte的SPI数据代替WS2812一个bit,很浪费RAM资源,而且生成像素的效率也很慢。![]() 仔细一看发现 WS2812一个bit 周期是: TH+TL=1250ns (±600ns), Min=650ns,Max=1850ns' \% B( f7 g" g a# ^4 C 如果把SPI提速到4Mbits/S 的时候,SPI一个bit的周期是250ns,刚好和符合WS2812 T0H或T1L 400ns ±150ns范围。SPI 4个bit的周期刚好1000ns,刚好可以满足WS2812的时序需求。4 a& d& a% m% d; `0 m SPI=0x8 等于 WS2812的 0 SPI=0xE 等于 WS2812的 1 也就变成一个SPI的byte,可以表示2个Ws2812的2个bit。一RGB像素颜色只需要 24bit/2bit = 12byte8 \5 V& n4 e8 Y6 Z) t; N9 c0 \! b SPI速度及极性配置: 5 {8 U; g7 `7 b- m: X% |3 F% j) N5 e9 u1 J3 G+ Z' n, h; [* E SPI只需要配置主机只发模式,这样可以节省一个IO口9 `6 E) V4 {' e- p8 ~& l ![]() 驱动整盘WS2812都很轻松 9 f4 m4 {/ w. q& j5 g驱动库说明: 例子使用Stm32CubMx 4.23,STM32L151C8T6,IAR/MDK工程 程序移植了Adafruit NeoPixel库函数, 采用HAL库驱动方式(struct),可以方便移植到其他STM32芯片上,. n: L) q' g% V; ^2 \8 O" Y4 U3 H$ ]6 d 只需要分配多个struct变量,硬件稍微改下,就能分时复用,控制多串灯珠。 ![]() 3 f, ]# X2 v6 t6 R6 K |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版