Skip to content

[peripherals]: add ws2812 package - #2049

Open
moment-NEW wants to merge 1 commit into
RT-Thread:masterfrom
moment-NEW:add-ws2812
Open

moment-NEW wants to merge 1 commit into
RT-Thread:masterfrom
moment-NEW:add-ws2812

Conversation

@moment-NEW

@moment-NEW moment-NEW commented Oct 28, 2026 •

Copy link
Copy Markdown

Summary

  • 添加了适用于WS2812的驱动包。软件包适配最新的SPI/DMA驱动,同时添加了自动初始化功能。
  • WS2812模拟时序的编码方式与其他软件包不同,对于不同SPI频率的效果可能不一样,这里采用了测试下来最稳定的一种

Test status

  • 在stm32h723 DM-MC02 BSP上测试运行良好。

others

  • 软件包整理过程中有AI参与,但均经过人工审核和改写

@wdfk-prog

Copy link
Copy Markdown
Contributor

Summary

  • 添加了适用于WS2812的驱动包。软件包适配最新的SPI/DMA驱动,同时添加了自动初始化功能。
  • WS2812模拟时序的编码方式与其他软件包不同,对于不同SPI频率的效果可能不一样,这里采用了测试下来最稳定的一种

Test status

  • 在stm32h723 DM-MC02 BSP上测试运行良好。

others

  • 软件包整理过程中有AI参与,但均经过人工审核和改写
  • 软件包仓库已经有两个ws2812,这个跟他们有啥区别吗?

  • 其实我也实现了一个ws2812准备提交呢😄

ws2812b list                # 查看各槽灯珠数、SPI 配置频率、亮度、Gamma
ws2812b 2 info              # 查看第 2 路设备状态
ws2812b bright 64           # 先降低第 0 路亮度,避免全白时供电过载
ws2812b s FF0000            # 红色通道测试 Gamma:在较低全局亮度下更容易观察
ws2812b gamma off           # 不启用 Gamma
ws2812b gamma 28            # 启用 Gamma 2.8(需要编译对应查找表)
ws2812b s red               # 固定红色
ws2812b bl                  # 红/灭交替,默认完整周期 600 Tick
ws2812b br                  # 绿色呼吸,默认 1000 Tick
ws2812b gr                  # 红蓝时间渐变,默认 1000 Tick
ws2812b gd                  # 空间渐变,默认 20 Tick
ws2812b ch                  # 绿色追逐,默认单步 100 Tick
ws2812b seq                 # 红/绿/蓝各 500 Tick 依次循环
ws2812b seq r:200 g:300 b:400  # 自定义每步时间
ws2812b colors              # 15 种不同的预定义颜色,每色 1000 Tick
ws2812b 1 colors 500        # 第 1 路,每色 500 Tick
ws2812b off                 # 以 SOLID 方式关闭显示
ws2812b reset               # 恢复该槽 Kconfig 初始效果
ws2812b help                # 查看完整命令和默认值

@moment-NEW

Copy link
Copy Markdown
Author

Summary

  • 添加了适用于WS2812的驱动包。软件包适配最新的SPI/DMA驱动,同时添加了自动初始化功能。
  • WS2812模拟时序的编码方式与其他软件包不同,对于不同SPI频率的效果可能不一样,这里采用了测试下来最稳定的一种

Test status

  • 在stm32h723 DM-MC02 BSP上测试运行良好。

others

  • 软件包整理过程中有AI参与,但均经过人工审核和改写
  • 软件包仓库已经有两个ws2812,这个跟他们有啥区别吗?
  • 其实我也实现了一个ws2812准备提交呢😄
ws2812b list                # 查看各槽灯珠数、SPI 配置频率、亮度、Gamma
ws2812b 2 info              # 查看第 2 路设备状态
ws2812b bright 64           # 先降低第 0 路亮度,避免全白时供电过载
ws2812b s FF0000            # 红色通道测试 Gamma:在较低全局亮度下更容易观察
ws2812b gamma off           # 不启用 Gamma
ws2812b gamma 28            # 启用 Gamma 2.8(需要编译对应查找表)
ws2812b s red               # 固定红色
ws2812b bl                  # 红/灭交替,默认完整周期 600 Tick
ws2812b br                  # 绿色呼吸,默认 1000 Tick
ws2812b gr                  # 红蓝时间渐变,默认 1000 Tick
ws2812b gd                  # 空间渐变,默认 20 Tick
ws2812b ch                  # 绿色追逐,默认单步 100 Tick
ws2812b seq                 # 红/绿/蓝各 500 Tick 依次循环
ws2812b seq r:200 g:300 b:400  # 自定义每步时间
ws2812b colors              # 15 种不同的预定义颜色,每色 1000 Tick
ws2812b 1 colors 500        # 第 1 路,每色 500 Tick
ws2812b off                 # 以 SOLID 方式关闭显示
ws2812b reset               # 恢复该槽 Kconfig 初始效果
ws2812b help                # 查看完整命令和默认值

哈哈!其实我是看到你有fork相关的软件包之后才想起来我做好的软件包还没有推。
关于区别的话,最大一点是其他的在我的板子上都跑不通,有些比较陈旧,推了个PR发现要适配新的板子改动太大,所以我写BSP的时候顺便自己做了一个。其余的是一些零零碎碎的改进:

  • 编译期计算了一些量,比如通过频率和Kconfig计算复位所需的时间。
  • 复位时间留的很长,主要是怕时序漂移
  • 针对我的BSP做了个改动,有个bdma的段避免访问域问题
  • 自动初始化
  • 当时测试的时候打印了一些时钟参数,顺便作为特性加进来了,可以选择性开启方便调试

当然非常欢迎大佬提出改进意见。也很期待大佬的WS2812驱动

@wdfk-prog

Copy link
Copy Markdown
Contributor

Summary

  • 添加了适用于WS2812的驱动包。软件包适配最新的SPI/DMA驱动,同时添加了自动初始化功能。
  • WS2812模拟时序的编码方式与其他软件包不同,对于不同SPI频率的效果可能不一样,这里采用了测试下来最稳定的一种

Test status

  • 在stm32h723 DM-MC02 BSP上测试运行良好。

others

  • 软件包整理过程中有AI参与,但均经过人工审核和改写
  • 软件包仓库已经有两个ws2812,这个跟他们有啥区别吗?
  • 其实我也实现了一个ws2812准备提交呢😄
ws2812b list                # 查看各槽灯珠数、SPI 配置频率、亮度、Gamma
ws2812b 2 info              # 查看第 2 路设备状态
ws2812b bright 64           # 先降低第 0 路亮度,避免全白时供电过载
ws2812b s FF0000            # 红色通道测试 Gamma:在较低全局亮度下更容易观察
ws2812b gamma off           # 不启用 Gamma
ws2812b gamma 28            # 启用 Gamma 2.8(需要编译对应查找表)
ws2812b s red               # 固定红色
ws2812b bl                  # 红/灭交替,默认完整周期 600 Tick
ws2812b br                  # 绿色呼吸,默认 1000 Tick
ws2812b gr                  # 红蓝时间渐变,默认 1000 Tick
ws2812b gd                  # 空间渐变,默认 20 Tick
ws2812b ch                  # 绿色追逐,默认单步 100 Tick
ws2812b seq                 # 红/绿/蓝各 500 Tick 依次循环
ws2812b seq r:200 g:300 b:400  # 自定义每步时间
ws2812b colors              # 15 种不同的预定义颜色,每色 1000 Tick
ws2812b 1 colors 500        # 第 1 路,每色 500 Tick
ws2812b off                 # 以 SOLID 方式关闭显示
ws2812b reset               # 恢复该槽 Kconfig 初始效果
ws2812b help                # 查看完整命令和默认值

哈哈!其实我是看到你有fork相关的软件包之后才想起来我做好的软件包还没有推。 关于区别的话,最大一点是其他的在我的板子上都跑不通,有些比较陈旧,推了个PR发现要适配新的板子改动太大,所以我写BSP的时候顺便自己做了一个。其余的是一些零零碎碎的改进:

  • 编译期计算了一些量,比如通过频率和Kconfig计算复位所需的时间。
  • 复位时间留的很长,主要是怕时序漂移
  • 针对我的BSP做了个改动,有个bdma的段避免访问域问题
  • 自动初始化
  • 当时测试的时候打印了一些时钟参数,顺便作为特性加进来了,可以选择性开启方便调试

当然非常欢迎大佬提出改进意见。也很期待大佬的WS2812驱动

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants