Crate spidev [−] [src]
Spidev
The spidev
crate provides access to Linux spidev devices
from rust. The wrapping of the interface is pretty direct
and should provide few big surprises.
Additional information on the interface may be found in the kernel documentation for spidev.
Examples
extern crate spidev; use std::io; use std::io::prelude::*; use spidev::{Spidev, SpidevOptions, SpidevTransfer, SPI_MODE_0}; fn create_spi() -> io::Result<Spidev> { let mut spi = try!(Spidev::open("/dev/spidev0.0")); let mut options = SpidevOptions::new() .bits_per_word(8) .max_speed_hz(20_000) .mode(SPI_MODE_0); try!(spi.configure(&options)); Ok(spi) } /// perform half duplex operations using Read and Write traits fn half_duplex(spi: &mut Spidev) -> io::Result<()> { let mut rx_buf = [0_u8; 10]; try!(spi.write(&[0x01, 0x02, 0x03])); try!(spi.read(&mut rx_buf)); println!("{:?}", rx_buf); Ok(()) } /// Perform full duplex operations using Ioctl fn full_duplex(spi: &mut Spidev) -> io::Result<()> { // "write" transfers are also reads at the same time with // the read having the same length as the write let mut transfer = SpidevTransfer::write(&[0x01, 0x02, 0x03]); try!(spi.transfer(&mut transfer)); println!("{:?}", transfer.rx_buf); Ok(()) } fn main() { let mut spi = create_spi().unwrap(); println!("{:?}", half_duplex(&mut spi).unwrap()); println!("{:?}", full_duplex(&mut spi).unwrap()); }
Reexports
pub use spidevioctl::SpidevTransfer; |
Modules
spidevioctl |
Structs
SpiModeFlags | |
Spidev |
Provide high-level access to Linux Spidev Driver |
SpidevOptions |
Options that control defaults for communication on a device |
Constants
SPI_3WIRE |
/// SI/SO Signals Shared |
SPI_CPHA |
/// Clock Phase |
SPI_CPOL |
/// Clock Polarity |
SPI_CS_HIGH |
/// Chipselect Active High? |
SPI_LOOP |
/// Loopback Mode |
SPI_LSB_FIRST |
/// Per-word Bits On Wire |
SPI_MODE_0 | |
SPI_MODE_1 | |
SPI_MODE_2 | |
SPI_MODE_3 | |
SPI_NO_CS |
/// 1 dev/bus, no chipselect |
SPI_READY |
/// Slave pulls low to pause |
SPI_RX_DUAL |
/// Receive with 2 wires |
SPI_RX_QUAD |
/// Receive with 4 wires |
SPI_TX_DUAL |
/// Transmit with 2 wires |
SPI_TX_QUAD |
/// Transmit with 4 wires |