New VA108xx Rust workspace structure + dependency updates
- The workspace is now a monorepo without submodules. The HAL, PAC and BSP are integrated directly - Update all dependencies: embedded-hal v1 and RTIC v2
This commit is contained in:
55
vorago-reb1/src/max11619.rs
Normal file
55
vorago-reb1/src/max11619.rs
Normal file
@ -0,0 +1,55 @@
|
||||
//! This module provides a thin REB1 specific layer on top of the `max116xx_10bit` driver crate
|
||||
//!
|
||||
//! ## Examples
|
||||
//!
|
||||
//! - [ADC example](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1/src/branch/main/examples/max11619-adc.rs)
|
||||
use core::convert::Infallible;
|
||||
use embedded_hal::spi::SpiDevice;
|
||||
use max116xx_10bit::{
|
||||
Error, ExternallyClocked, InternallyClockedInternallyTimedSerialInterface, Max116xx10Bit,
|
||||
Max116xx10BitEocExt, VoltageRefMode, WithWakeupDelay, WithoutWakeupDelay,
|
||||
};
|
||||
use va108xx_hal::gpio::{Floating, Input, Pin, PA14};
|
||||
|
||||
pub type Max11619ExternallyClockedNoWakeup<Spi> =
|
||||
Max116xx10Bit<Spi, ExternallyClocked, WithoutWakeupDelay>;
|
||||
pub type Max11619ExternallyClockedWithWakeup<Spi> =
|
||||
Max116xx10Bit<Spi, ExternallyClocked, WithWakeupDelay>;
|
||||
pub type Max11619InternallyClocked<Spi, Eoc> =
|
||||
Max116xx10BitEocExt<Spi, Eoc, InternallyClockedInternallyTimedSerialInterface>;
|
||||
pub type EocPin = Pin<PA14, Input<Floating>>;
|
||||
|
||||
pub const AN0_CHANNEL: u8 = 0;
|
||||
pub const AN1_CHANNEL: u8 = 1;
|
||||
pub const AN2_CHANNEL: u8 = 2;
|
||||
pub const POTENTIOMETER_CHANNEL: u8 = 3;
|
||||
|
||||
pub fn max11619_externally_clocked_no_wakeup<Spi: SpiDevice>(
|
||||
spi: Spi,
|
||||
) -> Result<Max11619ExternallyClockedNoWakeup<Spi>, Error<Spi::Error, Infallible>> {
|
||||
let mut adc = Max116xx10Bit::max11619(spi)?;
|
||||
adc.reset(false)?;
|
||||
adc.setup()?;
|
||||
Ok(adc)
|
||||
}
|
||||
|
||||
pub fn max11619_externally_clocked_with_wakeup<Spi: SpiDevice>(
|
||||
spi: Spi,
|
||||
) -> Result<Max11619ExternallyClockedWithWakeup<Spi>, Error<Spi::Error, Infallible>> {
|
||||
let mut adc = Max116xx10Bit::max11619(spi)?.into_ext_clkd_with_int_ref_wakeup_delay();
|
||||
adc.reset(false)?;
|
||||
adc.setup()?;
|
||||
Ok(adc)
|
||||
}
|
||||
|
||||
pub fn max11619_internally_clocked<Spi: SpiDevice>(
|
||||
spi: Spi,
|
||||
eoc: EocPin,
|
||||
v_ref: VoltageRefMode,
|
||||
) -> Result<Max11619InternallyClocked<Spi, EocPin>, Error<Spi::Error, Infallible>> {
|
||||
let mut adc = Max116xx10Bit::max11619(spi)?
|
||||
.into_int_clkd_int_timed_through_ser_if_without_wakeup(v_ref, eoc)?;
|
||||
adc.reset(false)?;
|
||||
adc.setup()?;
|
||||
Ok(adc)
|
||||
}
|
Reference in New Issue
Block a user