#embedded-hal #async-api #embedded-hal-driver #gfsk #afhds #24ghz

no-std a7105

Rust嵌入式-hal驱动程序,用于A7105 2.4GHz FSK/GFSK收发器

1个不稳定版本

0.1.0 2023年11月27日

#450嵌入式开发

MIT/Apache

1MB
2K SLoC

a7105

概述

a7105是一个Rust crate,它提供了一个与A7105 2.4GHz FSK/GFSK收发器交互的高级接口,建立在embedded-hal特质之上。此crate支持同步(sync)和异步(async)API,使用户可以选择最适合其应用程序需求的方式。

此crate对在a7105上使用的任何协议不做假设。相反,此crate的责任仅限于配置无线电和在空中读取/写入原始字节。

同步和异步支持是通过embedded-halembedded-hal-async实现的,可以通过asyncblocking功能进行配置。默认情况下,crate将使用async变体。如果首选阻塞API,则可以指定blocking功能并禁用默认功能。

入门

安装

将以下行添加到您的Cargo.toml文件中

[dependencies]
a7105 = "0.1.0"

示例(异步)

此示例使用了默认的异步API。阻塞API具有完全相同的函数签名。

use a7105::prelude::*;

// Get a handle to the SPI peripheral attached to the A7105. This step
// will be highly specific to the hardware used and if a blocking or 
// async peripheral is being used
let spi = unimplemented!();

let mut radio = A7105::new(spi);

// It is usually a good idea to reset the radio before anything else
radio.command(Command::Reset).await.unwrap();

// Write a register, in this example setting IdData to 0x01234567
radio.write_reg(registers::IdData { 
    id: 0x01234567
}).await.unwrap();

// Read a register, in this example `DataRate`
let data_rate: registers::DataRate = radio.read_reg().await.unwrap();

// Transmit the given bytes 
radio.tx(&[0, 1, 2, 3]).await.unwrap();

// Receive a set number of bytes into the provided buffer
let mut buf = [0; 8];
radio.rx(&mut buf).await.unwrap();

// Set the radio's mode
radio.set_mode(Mode::Idle).await.unwrap();

// Destroys the radio instance and gets back the SPI peripheral
let spi = radio.destroy();

贡献

欢迎贡献!如果您发现任何问题或对改进有建议,请打开一个问题或提交一个pull请求。

许可证

此作品许可为以下之一

任选其一。

依赖关系