你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 HAL库使用SPI+DMA驱动WS2812优化方案

[复制链接]
STMCU小助手 发布时间:2022-1-6 22:00
效果虽然不错,可以节省不少MCU资源,但用一个byte的SPI数据代替WS2812一个bit,很浪费RAM资源,而且生成像素的效率也很慢。
  I3 V, u# [) r! v5 Y6 _$ C* C) J( R
' q" j; e+ X5 u3 d
仔细一看发现 WS2812一个bit 周期是:: T& |/ T/ C& M: S5 |5 I  r
         TH+TL=1250ns (±600ns), Min=650ns,Max=1850ns7 \6 t, N1 m+ J/ [1 k% b4 p
如果把SPI提速到4Mbits/S 的时候,SPI一个bit的周期是250ns,刚好和符合WS2812 T0H或T1L 400ns ±150ns范围。SPI 4个bit的周期刚好1000ns,刚好可以满足WS2812的时序需求。
5 G" I2 E% D' I) \$ p+ E  Y; cSPI=0x8 等于 WS2812的 0
. N. `8 T& p% o5 lSPI=0xE 等于  WS2812的 10 B( L5 f$ q6 D7 C/ m" p4 p: l
也就变成一个SPI的byte,可以表示2个Ws2812的2个bit。一RGB像素颜色只需要 24bit/2bit = 12byte
3 ^3 Q0 r& h+ I3 t& [" B; |. S
( c5 P8 k: K  {) s) v! S6 [
. D2 H  g% d4 Q6 {+ H& B, G1 lSPI速度及极性配置:
) G: [% d3 O, i6 Q  Z7 ?
) j9 r$ h/ A# y( M4 N" H1 ^" X) O! f# _. [' u

* d% \7 n0 W: oSPI只需要配置主机只发模式,这样可以节省一个IO口/ C6 N- V' c4 s  k8 X0 J# Z* g

  i/ G" L$ c8 s, C& K: ~5 Y) \" b0 A  b
驱动整盘WS2812都很轻松3 w" ^. y" R6 y' c! k" e
   
; q6 O- \" U" N1 X' z5 G, {' x% h& D
2 c% ?' j* o4 I, z1 E8 Y& A, Z驱动库说明:; V3 a! i, e4 A; y" `
例子使用Stm32CubMx 4.23,STM32L151C8T6,IAR/MDK工程+ f9 F8 H2 k  \4 K  x4 P
程序移植了Adafruit NeoPixel库函数,5 v. P. w7 b' C
采用HAL库驱动方式(struct),可以方便移植到其他STM32芯片上,
: h& g' k! M& Y% c0 R4 ?只需要分配多个struct变量,硬件稍微改下,就能分时复用,控制多串灯珠。# ]' a- y" Z- b- Q" k, }& V
' C# [4 |9 E2 R! f- ]; r

3 P. `( g" J; H7 Q6 l
收藏 评论0 发布时间:2022-1-6 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版