1个不稳定版本
0.1.0 | 2023年11月27日 |
---|
#450 在 嵌入式开发
1MB
2K SLoC
a7105
概述
a7105
是一个Rust crate,它提供了一个与A7105 2.4GHz FSK/GFSK收发器交互的高级接口,建立在embedded-hal
特质之上。此crate支持同步(sync)和异步(async)API,使用户可以选择最适合其应用程序需求的方式。
此crate对在a7105上使用的任何协议不做假设。相反,此crate的责任仅限于配置无线电和在空中读取/写入原始字节。
同步和异步支持是通过embedded-hal
和embedded-hal-async
实现的,可以通过async
和blocking
功能进行配置。默认情况下,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请求。
许可证
此作品许可为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。