3个版本 (重大更改)
0.3.0 | 2024年6月23日 |
---|---|
0.2.0 | 2023年11月15日 |
0.1.0 | 2023年7月22日 |
#227 在 嵌入式开发
每月182次下载
46KB
825 行
ws2812-flexio
基于NXP i.MX RT FlexIO总线的高级像素驱动程序。
像素类型
NeoPixel LED灯带的默认颜色空间是8位线性sRGB,因此推荐的像素类型是LinSrgb<u8>
。
请注意,这与正常的伽玛校正sRGB不同;需要进行转换。更多信息可以在palette
包的文档中找到。
操作模式
此包可以以阻塞模式或DMA驱动异步模式运行。
规格
并行灯带
该库可以并行驱动多个灯带。更具体地说,从同一FlexIO实例驱动多个灯带需要2 + 2 * strips
FlexIO计时器,因此例如具有8
计时器的FlexIO实例可以并行驱动3
条灯带。
帧率
该库以800kHz的帧率和300us的锁存时间驱动LED灯带。这给出了以下公式
fps = 100,000 / ((num_pixels + 1) x bytes_per_pixel + 30)
示例:对于有332 SK6805像素的灯带,我们可以实现100,000 / ((332 + 1) * 3 + 30) = 97.18
fps。
请注意,此帧率仅适用于基于DMA的写入;使用阻塞写入时,在下一帧计算过程中会额外浪费时间。
示例
- 以下示例适用于Teensy 4.0板-
先决条件
以下硬件是示例所需的
- A Teensy 4.0开发板
- 读取Teensy的UART的方法,例如USB-UART转换器
必须安装以下软件工具
- Python3(作为
python3
,或修改run.py
以使用python
二进制文件) llvm-objcopy
- 安装
LLVM
工具套件
- 安装
teensy-loader-cli
运行
- 通过USB电缆将Teensy连接到PC。
- 运行
cargo run --release --example triple_332
。 - 读取Teensy的UART上的示例输出。
- 引脚6、7和8输出长度为332的NeoPixel RGB条带的数据(例如 P/N: S010332ZA3SA8)。注意,这些引脚输出3.3V,而大多数NeoPixel LED条带需要5V数据信号,这意味着需要一个外部电平转换器。
依赖项
~28MB
~753K SLoC