ad7172: reset
This commit is contained in:
parent
12a1c1ac07
commit
1df35ef15f
@ -46,6 +46,7 @@ impl<SPI: Transfer<u8>, NSS: OutputPin> Adc<SPI, NSS> {
|
|||||||
pub fn new(spi: SPI, mut nss: NSS) -> Result<Self, SPI::Error> {
|
pub fn new(spi: SPI, mut nss: NSS) -> Result<Self, SPI::Error> {
|
||||||
let _ = nss.set_high();
|
let _ = nss.set_high();
|
||||||
let mut adc = Adc { spi, nss};
|
let mut adc = Adc { spi, nss};
|
||||||
|
adc.reset()?;
|
||||||
|
|
||||||
let mut buf = [0, 0, 0];
|
let mut buf = [0, 0, 0];
|
||||||
adc.write_reg(Register::AdcMode, &mut buf)?;
|
adc.write_reg(Register::AdcMode, &mut buf)?;
|
||||||
@ -90,16 +91,13 @@ impl<SPI: Transfer<u8>, NSS: OutputPin> Adc<SPI, NSS> {
|
|||||||
Ok(result)
|
Ok(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], SPI::Error> {
|
|
||||||
let _ = self.nss.set_low();
|
|
||||||
let result = self.spi.transfer(words);
|
|
||||||
let _ = self.nss.set_high();
|
|
||||||
result
|
|
||||||
}
|
|
||||||
|
|
||||||
fn read_reg(&mut self, reg: Register, buffer: &'_ mut [u8]) -> Result<(), SPI::Error> {
|
fn read_reg(&mut self, reg: Register, buffer: &'_ mut [u8]) -> Result<(), SPI::Error> {
|
||||||
buffer[0] = 0x40 | (reg as u8);
|
buffer[0] = 0x40 | (reg as u8);
|
||||||
self.transfer(buffer)?;
|
self.transfer(buffer)?;
|
||||||
|
use core::fmt::Write;
|
||||||
|
use cortex_m_semihosting::hio;
|
||||||
|
let mut stdout = hio::hstdout().unwrap();
|
||||||
|
writeln!(stdout, "ad rreg {}: {:?}", reg as u8, buffer);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,4 +106,17 @@ impl<SPI: Transfer<u8>, NSS: OutputPin> Adc<SPI, NSS> {
|
|||||||
self.transfer(buffer)?;
|
self.transfer(buffer)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn reset(&mut self) -> Result<(), SPI::Error> {
|
||||||
|
let mut buf = [0xFFu8; 8];
|
||||||
|
self.transfer(&mut buf)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], SPI::Error> {
|
||||||
|
let _ = self.nss.set_low();
|
||||||
|
let result = self.spi.transfer(words);
|
||||||
|
let _ = self.nss.set_high();
|
||||||
|
result
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use embedded_hal::blocking::spi::Transfer;
|
|||||||
use embedded_hal::blocking::delay::DelayUs;
|
use embedded_hal::blocking::delay::DelayUs;
|
||||||
use nb::Error::WouldBlock;
|
use nb::Error::WouldBlock;
|
||||||
|
|
||||||
/// Bit-banged SPI
|
/// Bit-banged Mode3 SPI
|
||||||
pub struct SoftSpi<SCK, MOSI, MISO> {
|
pub struct SoftSpi<SCK, MOSI, MISO> {
|
||||||
sck: SCK,
|
sck: SCK,
|
||||||
mosi: MOSI,
|
mosi: MOSI,
|
||||||
|
Loading…
Reference in New Issue
Block a user