9 个版本
0.4.0 | 2024年3月12日 |
---|---|
0.3.3 | 2024年3月5日 |
0.3.2 | 2023年7月17日 |
0.3.1 | 2023年3月6日 |
0.1.0 | 2019年9月2日 |
#398 in 嵌入式开发
54KB
881 行
pn532
no_std
实现的 Pn532
协议,使用 embedded_hal
特性。
由于与 Pn532 的通信有时会相当慢,因此可以将通信分成多个部分,提供超时或使用异步运行时。
Pn532 支持不同的串行链路。 Interface
特性抽象了这些不同的链路。
Interface
可以手动实现,或使用提供的四个接口结构体之一
spi::SPIInterface
spi::SPIInterfaceWithIrq
i2c::I2CInterface
i2c::I2CInterfaceWithIrq
SPI 示例
use pn532::{requests::SAMMode, spi::SPIInterface, Pn532, Request};
use pn532::spi::SPIInterface;
// spi, cs and timer are structs implementing their respective embedded_hal traits.
let interface = SPIInterface {
spi,
cs,
};
let mut pn532: Pn532<_, _, 32> = Pn532::new(interface, timer);
if let Err(e) = pn532.process(&Request::sam_configuration(SAMMode::Normal, false), 0, 50.ms()){
println!("Could not initialize PN532: {e:?}")
}
if let Ok(uid) = pn532.process(&Request::INLIST_ONE_ISO_A_TARGET, 7, 1000.ms()){
let result = pn532.process(&Request::ntag_read(10), 17, 50.ms()).unwrap();
if result[0] == 0x00 {
println!("page 10: {:?}", &result[1..5]);
}
}
msb-spi
功能
如果您想使用 spi::SPIInterface
或 spi::SPIInterfaceWithIrq
,并且您的外围设备不能设置为 lsb 模式,则需要启用此crate的 msb-spi
功能。
std
功能
启用 std 功能以使用 serialport::SerialPortInterface
。仅适用于 serialport
crate 支持的目标。
许可证
根据您的选择,受 Apache License, Version 2.0 或 MIT 许可证 许可。除非您明确声明,否则您有意提交以包含在此 crate 中的任何贡献,根据 Apache-2.0 许可证定义,应如上双重许可,无任何额外条款或条件。
依赖关系
~70–710KB
~11K SLoC