2 个版本
使用旧的 Rust 2015
0.1.1 | 2017年7月20日 |
---|---|
0.1.0 | 2017年7月20日 |
#1805 in 硬件支持
25KB
617 行
概述
有时在树莓派上加载 SPIDev 内核模块是个头疼的问题。
有时你需要快速访问 SPI 设备的方法。
这是一个快速访问 SPI 设备的库,但很少考虑与其他进程/外设的良好协作。对 SPI 外设的访问是通过 mmap() 实现的,没有提供任何外设互斥的机制。
初始化将更新 GPIO 寄存器以将引脚复用到 SPI 功能。因此,请不要与使用与 SPI 引脚相同引脚上的 Linux GPIO 驱动器的东西一起使用。
未实现中断。
lib.rs
:
rust-bcm-2709-spi
通过 mmap(...) 和直接内存 I/O 以低性能 SPI 接口访问 BCM2709 硬件外设。
当您无法加载特定驱动程序时使用。可能最好使用 SPIDev 内核模块。但这可能在某些测试时有所帮助。
用法
extern crate bcm2709_spi;
use bcm2709_spi::{gpio, spi, DirectMemory};
pub fn main() {
let mem = match DirectMemory::get() {
Err(x) => { println!("Failed: {}", x); return; },
Ok(x) => x
}
let spi = match mem.spi() {
Err(x) => { println!("Couldn't create SPI: {}", x); return; },
Ok(x) => x
}
spi.set_clock( 32 ); // Recommend above 4; loopback misses bits at clk=4.
spi.start_transaction();
let byte_read = spi.write_byte( b'A' ); // =65u8 when a loopback wire placed between MISO and MOSI
spi.stop_transaction();
}
依赖项
~49KB