找回密码
 立即注册
查看: 337|回复: 31

普通SPI外设能否点亮WS2812 | 可以

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:210
  • 最近打卡:2025-06-08 11:20:08

49

主题

157

回帖

1710

积分

金牌会员

积分
1710
发表于 2025-5-29 18:32:28 | 显示全部楼层 |阅读模式
问题描述:


以8051U为平台,mcu频率设置为25.6MHz,使用SPI外设的普通模式(没有使用高速,没有使用DMA传送),能点亮一颗WS2812吗?
在本论坛看了许多帖子后,我是这样想的:
25.6MHz的mcu频率,SPI的输入时钟经4分频,成为6.4MHz。那么,1 / 6.4MHz = 0.15625 us。SPI传送0xfc和0xc0分别表示WS2812的一个bit位‘1’和‘0’.似乎也可以。
就这样做了,实验效果未达预期,实在是不解。

想请教下,单纯的提高mcu频率和使用普通SPI模式,点亮WS2812这条路能行不?
谢谢先 :-)
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:199
  • 最近打卡:2025-06-07 09:37:00
已绑定手机

62

主题

1772

回帖

3926

积分

荣誉版主

无情的代码机器

积分
3926
发表于 2025-5-29 19:13:34 | 显示全部楼层
可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:91
  • 最近打卡:2025-06-08 08:41:03

730

主题

1万

回帖

1万

积分

管理员

积分
16307
发表于 2025-5-29 21:28:10 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:451
  • 最近打卡:2025-06-08 09:05:54
已绑定手机

36

主题

2203

回帖

2577

积分

荣誉版主

积分
2577
发表于 2025-5-29 21:42:02 | 显示全部楼层
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU的SPI和DMA的能力完全发挥出来,由于采用同步传输,刷屏过程也无需担心被其它中断任务打断,而WS2812完全靠数据超时来锁存刷新数据,单片机在为WS2812推出显示数据时啥也干不了。
APA102C成品的灯带和屏幕产品也非常成熟稳定,使用同步时钟,刷屏更流畅。目前有2020封装和5050等封装可选,一般的场合都比较适用,对成本不敏感的场合,用APA102C要稳定可靠不少。
截图202505292132144492.jpg
截图202505292133017012.jpg
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:210
  • 最近打卡:2025-06-08 11:20:08

49

主题

157

回帖

1710

积分

金牌会员

积分
1710
发表于 2025-5-30 08:16:13 | 显示全部楼层
晓*** 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...

好主意!
搜了下,似乎没有像WS2812一样,以8个灯珠为一套做成的电子积木
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:210
  • 最近打卡:2025-06-08 11:20:08

49

主题

157

回帖

1710

积分

金牌会员

积分
1710
发表于 2025-5-30 08:18:54 | 显示全部楼层
erci*** 发表于 2025-5-29 19:13
可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改 ...

感谢指点迷津!

不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题
等我恢复了,再上DMA功能
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:490
  • 最近打卡:2025-06-08 08:33:27
已绑定手机

14

主题

1307

回帖

3256

积分

论坛元老

积分
3256
发表于 2025-5-30 09:29:58 | 显示全部楼层
BeHa*** 发表于 2025-5-30 08:18
感谢指点迷津!

不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题

建议上逻辑分析仪看一下时序,2812只要时序满足很容易驱动。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:457
  • 最近打卡:2025-06-07 16:17:21

33

主题

2434

回帖

5122

积分

论坛元老

积分
5122
发表于 2025-5-30 14:05:00 | 显示全部楼层
晓*** 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...

emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显示数据时啥也干不了

点评

就算都支持SPI+DMA,但WS2812并非真正支持SPI,组织数据的过程和显示RAM的占用也比正常SPI多了N多倍,相应的刷屏速度也会很大程度的受限,所以我的观点是WS2812最多是能用SPI+DMA方式驱动,与APA102C的接口不同,WS2  详情 回复 发表于 2025-5-30 16:24
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:210
  • 最近打卡:2025-06-08 11:20:08

49

主题

157

回帖

1710

积分

金牌会员

积分
1710
发表于 2025-5-30 15:43:37 | 显示全部楼层
_奶*** 发表于 2025-5-30 14:05
emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显 ...

我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非SPI-DMA方式,时间的节省体现在:原本需要发生并处理n次SPI中断,而SPI+DMA方式仅需要处理一次SPI-DMA中断
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:457
  • 最近打卡:2025-06-07 16:17:21

33

主题

2434

回帖

5122

积分

论坛元老

积分
5122
发表于 2025-5-30 15:52:48 | 显示全部楼层
BeHa*** 发表于 2025-5-30 15:43
我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非 ...

为什么要等待中断?顶多是发送数据之前查询一下发送完成标志。。

不过我又看了一眼问题,,楼主说的是不用DMA传送。那层主说的确实是有道理的。
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-8 11:29 , Processed in 0.126947 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表