3个不稳定版本
0.2.1 | 2020年5月14日 |
---|---|
0.2.0 | 2020年5月2日 |
0.1.0 | 2020年5月1日 |
#1137 in 嵌入式开发
34KB
670 代码行
Rust接口用于SPI LS7366
正交编码器缓冲区。
已根据数据手册实现了芯片的全部功能,并由该驱动程序公开。
此驱动程序应适用于任何具体的 embedded_hal::blocking::spi
实现。
在Raspberry Pi Model 4B上使用双LS7366R缓冲芯片进行了测试。
附加功能!
从v0.2.0版本开始,库使用no_std
构建。
请参阅文档以获取完整驱动程序详细信息。
构建快速入门
快速入门针对rppal
设计,旨在在Raspberry Pi上运行。尽管如此,应该很容易用其他实现替换rppal
元素。
cargo build --target=armv7-unknown-linux-gnueabihf --example quickstart
lib.rs
:
使用embedded_hal
的LS7366缓冲编码器接口。
只要实现阻塞的 embedded_hal
SPI traits
,此驱动程序应与任何SPI接口一起工作。
库使用no_std
构建。
示例
从缓冲区读取的最小样板代码
use ls7366::Ls7366;
// --- snip ---
#
#
#
// Construct a driver instance from the SPI interface, using default chip configurations.
let mut spi_driver = Ls7366::new(some_hal_spi_object).unwrap();
// Loop and read the counter.
loop {
let result = spi_driver.get_count().unwrap();
sleep(Duration::from_secs(1));
println!("read data:= {:?}", result);
}
// --- snip ---
高级配置
LS7366有两个寄存器专门用于配置芯片的各种功能:Mdr0
和 Mdr1
。
可以通过写入这两个寄存器来配置芯片。
当使用 Ls7366::new
时,无需手动配置这些寄存器。
use ls7366::mdr0::{QuadCountMode, CycleCountMode, FilterClockDivisionFactor,IndexMode, Mdr0};
use ls7366::mdr1::{CounterMode, Mdr1};
use ls7366::{Ls7366, Target, Encodable};
use embedded_hal_mock::spi::Mock;
use embedded_hal_mock::spi::Transaction as SpiTransaction;
// --- snip ---
let mdr0_configuration = Mdr0{
quad_count_mode: QuadCountMode::Quad2x,
filter_clock : FilterClockDivisionFactor::Two,
index_mode: IndexMode::ClearCntr,
cycle_count_mode: CycleCountMode::SingleCycle,
is_index_inverted: false
};
let mdr1_configuration = Mdr1{
counter_mode: CounterMode::Byte3,
// --- Snip ---
# disable_counting:true,
# flag_on_bw: false,
# flag_on_idx: false,
# flag_on_cmp: false,
# flag_on_cy: false,
};
driver.write_register(Target::Mdr0, &[mdr0_configuration.encode()]).unwrap();
driver.write_register(Target::Mdr1, &[mdr1_configuration.encode()]).unwrap();
依赖项
~120KB