#rpi #ws281x #raspberry-pi #pi #raspberry

sys rpi_ws281x-sys

C语言库 rpi_ws281x 的绑定

2 个版本

0.1.5 2022年7月22日
0.1.4 2022年7月21日

#1315 in 硬件支持

Download history 5/week @ 2024-04-14 3/week @ 2024-04-21 1/week @ 2024-05-26 1/week @ 2024-06-02 1/week @ 2024-06-30 34/week @ 2024-07-07 93/week @ 2024-07-28

127 每月下载量
用于 rpi_ws281x-c

BSD-2-Clause 许可协议

94KB
2K SLoC

C 2K SLoC // 0.2% comments Rust 191 SLoC

rpi_ws281x-sys

Rust Crates.io Documentation

绑定到 rpi_ws281x

来源 1ba8e385708fb7802b09c0177a7ea4293948e25c

GPIO 使用

可用的GPIO受Pi的硬件限制,并会根据驱动它们的方法(PWM、PCM或SPI)而变化。请注意,GPIO编号与引脚头上的物理引脚编号不同。

PWM

        PWM0, which can be set to use GPIOs 12, 18, 40, and 52.
        Only 12 (pin 32) and 18 (pin 12) are available on the B+/2B/3B

        PWM1 which can be set to use GPIOs 13, 19, 41, 45 and 53.
        Only 13 is available on the B+/2B/PiZero/3B, on pin 33

PCM

        PCM_DOUT, which can be set to use GPIOs 21 and 31.
        Only 21 is available on the B+/2B/PiZero/3B, on pin 40.

SPI

        SPI0-MOSI is available on GPIOs 10 and 38.
        Only GPIO 10 is available on all models.
        See also note for RPi 3 below.

电源和电压要求

WS281X LED通常在5V下工作。根据您的实际LED型号和数据线长度,您可能能够用3.3V成功驱动数据输入。但在一般情况下,您可能希望使用电平转换器将Raspberry Pi GPIO/PWM转换为5V。

也有可能从3.3V - 3.6V的电源运行LED,并直接连接GPIO,但这会以亮度损失为代价,因此不推荐这样做。

了解您的硬件和电的使用情况。对于损坏、伤害或错误,本人不承担任何责任。

关于DMA通道的重要警告

您必须确保您为LED选择的DMA通道没有被操作系统占用。

例如,使用DMA通道5 将导致 Raspberry Pi 3 Model B的文件系统损坏。

默认DMA通道(10)对于Raspberry Pi 3 Model B应该是安全的,但这可能在未来的软件版本中发生变化。

限制

PWM

由于这个库和板载Raspberry Pi音频都使用PWM,因此它们不能一起使用。您需要通过创建文件 /etc/modprobe.d/snd-blacklist.conf 来禁用Broadcom音频内核模块。

blacklist snd_bcm2835

如果禁用后音频设备仍然在加载,您可能还需要在 /etc/modules 文件中将其注释掉。

在无头系统上,您可能还需要强制通过HDMI播放音频。编辑config.txt并添加

hdmi_force_hotplug=1
hdmi_force_edid_audio=1

此更改生效需要重新启动

某些发行版默认使用音频,即使没有任何声音播放。如果需要音频,可以使用USB音频设备。

PCM

当使用PCM时,不能使用使用I2S的数字音频设备,因为I2S使用PCM硬件,但可以使用模拟音频。

SPI

当使用SPI时,led字符串是唯一可以连接到SPI总线的设备。可以使用数字(I2S/PCM)和模拟(PWM)音频。

许多发行版的最大SPI传输为4096字节。这可以在/boot/cmdline.txt中通过追加来更改

    spidev.bufsiz=32768

在RPi 3上,您必须将GPU核心频率更改为250 MHz,否则SPI时钟频率将不正确。

通过将以下行添加到/boot/config.txt并重新启动来完成此操作

    core_freq=250

在RPi 4上,必须设置一个固定频率,以避免空闲CPU缩放改变SPI频率并破坏ws281x时序

通过将以下行添加到/boot/config.txt并重新启动来完成此操作

    core_freq=500
    core_freq_min=500

如果希望不使用root控制LED,则需要将您添加到gpio组中。

依赖项

~225KB