Expand description
Serial Peripheral Interface
You can use the Spi
interface with these SPI instances
QSPI0
- Interrupt::QSPI0
QSPI1
- MOSI: Pin 3 IOF0
- MISO: Pin 4 IOF0
- SCK: Pin 5 IOF0
- CS0: Pin 2 IOF0
- CS1: Pin 8 IOF0 (not connected to package in FE310)
- CS2: Pin 9 IOF0
- CS3: Pin 10 IOF0
- Interrupt::QSPI1
QSPI2
Warning: QSPI2 pins are not connected to package in FE310
- MOSI: Pin 27 IOF0
- MISO: Pin 28 IOF0
- SCK: Pin 29 IOF0
- CS: Pin 26 IOF0
- Interrupt::QSPI2
Exclusive Bus usage example
let pins = (mosi, miso, sck, cs0);
let spi_bus = SpiBus::new(p.QSPI1, pins);
let spi_config = SpiConfig::new(MODE_0, 100.khz().into(), &clocks);
let mut dev = spi_bus.new_device(&spi_config);
dev.write(&[1, 2, 3]).unwrap();
Shared Bus usage example
let pins = (mosi, miso, sck);
let spi_bus = SpiBus::shared(p.QSPI1, pins);
let spi_config1 = SpiConfig::new(MODE_0, 100.khz().into(), &clocks);
let mut dev1 = spi_bus.new_device(cs0, &spi_config1);
let spi_config2 = SpiConfig::new(MODE_3, 2.mhz().into(), &clocks);
let mut dev2 = spi_bus.new_device(cs1, &spi_config2);
dev1.write(&[1, 2, 3]).unwrap();
dev2.write(&[4, 5]).unwrap();
Structs
- SPI mode
- Newtype for RefCell
locked behind a Mutex. Used to hold the SpiBus instance so it can be used for multiple SpiSharedDevice instances. - SPI bus abstraction
- SPI Bus configuration SPI Bus configuration
- Configuration values for CS and SCK related delays
- SPI exclusive device abstraction
- SPI shared device abstraction
Enums
- Clock phase
- Clock polarity
Constants
- Helper for CPOL = 0, CPHA = 0
- Helper for CPOL = 0, CPHA = 1
- Helper for CPOL = 1, CPHA = 0
- Helper for CPOL = 1, CPHA = 1
Traits
- Full duplex (master mode)
- SPI Chip Select pin - DO NOT IMPLEMENT THIS TRAIT
- SPI pins - DO NOT IMPLEMENT THIS TRAIT
- SPI pins without CS - DO NOT IMPLEMENT THIS TRAIT
- Blocking transfer
- Blocking write
- Blocking write (iterator version)