tmc5160/
lib.rs

1//! A platform agnostic driver to iterface with the TMC5160 (Trinamic integrated stepper motor controller)
2//!
3//! This driver wa built using [`embedded-hal`] traits.
4//!
5//! [`embedded-hal`]: https://docs.rs/embedded-hal/0.2
6//!
7//#![deny(missing_docs)]
8#![no_std]
9
10use embedded_hal::{
11    blocking::spi::{Transfer, Write},
12    digital::v2::OutputPin,
13    spi::{Mode, Phase, Polarity}
14};
15
16/// SPI mode
17pub const MODE: Mode = Mode {
18    phase: Phase::CaptureOnSecondTransition,
19    polarity: Polarity::IdleLow,
20};
21
22/// TMC5160 driver
23pub struct Tmc5160<SPI, CS> {
24    spi: SPI,
25    cs: CS,
26}
27
28impl<SPI, CS, E> Tmc5160<SPI, CS>
29where
30    SPI: Transfer<u8, Error = E> + Write<u8, Error = E>,
31    CS: OutputPin,
32{
33    /// Create a new driver from a SPI peripheral and a NCS pin
34    pub fn new(spi: SPI, cs: CS) -> Result<Self, E> {
35        Ok(Tmc5160 { spi, cs })
36    }
37}