#radio #async #nrf24 #no-std

nightly no-std nrf24radio

为NRF24L01(+)设备提供的异步嵌入式驱动程序

1个不稳定版本

0.1.0 2023年10月4日

#37 in #radio

MPL-2.0 许可协议

61KB
954

NRF24radio

nrf24radio 是一个异步、无 std 且与执行器无关的设备驱动程序,用于 NRF24L01 和 NRF24L01+ 设备。

它提供高级和低级 API 以与无线电设备交互。

如何安装

要将此库添加到您的项目中,请简单执行 cargo 命令

cargoadd nrf24radio

使用方法

驱动程序分为两个主要抽象:驱动程序句柄和数据管道。这种分割将驱动程序逻辑与数据传输逻辑解耦,简化了开发过程。

请参阅我们的示例 此处 了解此库的一些常见用法。

要运行示例,请导航到您使用的 MCU 的文件夹(例如,对于 RP2040,使用 rp)并运行以下命令

cargorun --release --bin <example>

以使用 probe-run 运行示例,或

cargobuild --release --bin <example>

构建它,然后使用您选择的运行器运行它。

驱动程序句柄

驱动程序句柄包含配置和与 NRF24 设备交互的所有逻辑。它们可以设置射频配置、创建数据管道并处理设备中的错误,但不会与实际传输的数据交互。

驱动程序句柄任务更复杂,需要在与设备交互时格外小心。这些任务的示例可以在 示例 文件夹中找到。

数据管道

数据管道是对可以发送或接收通过 NRF24 设备的数据的缓冲区的简化抽象。这些管道具有简单的 API 以与这些数据交互并在通信期间通知错误。

async fn send(mut pipe: TXDataPipe) {
    // Buffer to send.
    let buf = [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F];

    // This flag indicates if the radio must expect and acknowledgement from the receiver.
    let ack = true;

    // Send the data packet.
    if let Err(_) = pipe.send( &buf, ack ).await {
        // If there was an error handle it here.
    }
}

进行中

  • 更好地控制 TX 和 RX0 配置
  • 动态更改 TX 地址
  • 动态更改射频通道
  • 噪声检测

许可和贡献

此库及其示例受

对此项目的贡献将遵循上述定义的相同许可协议。

依赖项

~240KB