stm32/spi: add blocking rxonly test.
This commit is contained in:
@ -6,6 +6,7 @@ mod common;
|
|||||||
use common::*;
|
use common::*;
|
||||||
use defmt::assert_eq;
|
use defmt::assert_eq;
|
||||||
use embassy_executor::Spawner;
|
use embassy_executor::Spawner;
|
||||||
|
use embassy_stm32::gpio::{Level, Output, Speed};
|
||||||
use embassy_stm32::spi::{self, Spi};
|
use embassy_stm32::spi::{self, Spi};
|
||||||
use embassy_stm32::time::Hertz;
|
use embassy_stm32::time::Hertz;
|
||||||
|
|
||||||
@ -14,18 +15,19 @@ async fn main(_spawner: Spawner) {
|
|||||||
let p = embassy_stm32::init(config());
|
let p = embassy_stm32::init(config());
|
||||||
info!("Hello World!");
|
info!("Hello World!");
|
||||||
|
|
||||||
let spi = peri!(p, SPI);
|
let mut spi_peri = peri!(p, SPI);
|
||||||
let sck = peri!(p, SPI_SCK);
|
let mut sck = peri!(p, SPI_SCK);
|
||||||
let mosi = peri!(p, SPI_MOSI);
|
let mut mosi = peri!(p, SPI_MOSI);
|
||||||
let miso = peri!(p, SPI_MISO);
|
let mut miso = peri!(p, SPI_MISO);
|
||||||
|
|
||||||
let mut spi_config = spi::Config::default();
|
let mut spi_config = spi::Config::default();
|
||||||
spi_config.frequency = Hertz(1_000_000);
|
spi_config.frequency = Hertz(1_000_000);
|
||||||
|
|
||||||
let mut spi = Spi::new_blocking(
|
let mut spi = Spi::new_blocking(
|
||||||
spi, sck, // Arduino D13
|
&mut spi_peri,
|
||||||
mosi, // Arduino D11
|
&mut sck, // Arduino D13
|
||||||
miso, // Arduino D12
|
&mut mosi, // Arduino D11
|
||||||
|
&mut miso, // Arduino D12
|
||||||
spi_config,
|
spi_config,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -66,6 +68,22 @@ async fn main(_spawner: Spawner) {
|
|||||||
defmt::assert!(!embassy_stm32::pac::RCC.apb2enr().read().spi1en());
|
defmt::assert!(!embassy_stm32::pac::RCC.apb2enr().read().spi1en());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(not(feature = "stm32f429zi"))]
|
||||||
|
core::mem::drop(spi);
|
||||||
|
|
||||||
|
// test rx-only configuration
|
||||||
|
let mut spi = Spi::new_blocking_rxonly(&mut spi_peri, &mut sck, &mut miso, spi_config);
|
||||||
|
|
||||||
|
let mut mosi = Output::new(&mut mosi, Level::Low, Speed::VeryHigh);
|
||||||
|
|
||||||
|
mosi.set_high();
|
||||||
|
spi.blocking_read(&mut buf).unwrap();
|
||||||
|
assert_eq!(buf, [0xff; 9]);
|
||||||
|
|
||||||
|
mosi.set_low();
|
||||||
|
spi.blocking_read(&mut buf).unwrap();
|
||||||
|
assert_eq!(buf, [0x00; 9]);
|
||||||
|
|
||||||
info!("Test OK");
|
info!("Test OK");
|
||||||
cortex_m::asm::bkpt();
|
cortex_m::asm::bkpt();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user