From 99399316358fa7c48b258e899d225d51a6e8b209 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Mon, 7 Oct 2024 15:24:15 -0400 Subject: hopefully fix spi register addressing --- src/bringup/mod.rs | 54 +++++++++++++++++++++++++----------------------------- src/main.rs | 9 +++++++-- 2 files changed, 32 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/bringup/mod.rs b/src/bringup/mod.rs index e59e8c3..e1f0278 100644 --- a/src/bringup/mod.rs +++ b/src/bringup/mod.rs @@ -46,8 +46,8 @@ use molybdos::pal::StaticOutput; pub mod i2s; pub use i2s::{ - StaticI2S, I2S, + StaticI2S, }; embassy_rp::bind_interrupts! { @@ -69,28 +69,22 @@ static SENSOR_I2C: StaticCell> = Stati static PIO0: StaticCell> = StaticCell::new(); -pub struct Split< - BmeSpi, - BmeSpiMutex, - SdSpi, - SdSpiMutex, - // SensorI2c, - // SensorI2cMutex, -> where +pub struct Split +where SdSpiMutex: RawMutex + 'static, SdSpi: 'static, BmeSpiMutex: RawMutex + 'static, BmeSpi: 'static, - // SensorI2cMutex: RawMutex + 'static, - // SensorI2c: 'static, + SensorI2cMutex: RawMutex + 'static, + SensorI2c: 'static, { - pub sd_spi: &'static Mutex, - pub sd_cs: StaticOutput, - pub bme_spi: &'static Mutex, - pub bme_cs: StaticOutput, - // pub sensor_i2c: &'static Mutex, - pub wdt: Watchdog, - pub usb: molybdos::pal::UsbDriver, + pub sd_spi: &'static Mutex, + pub sd_cs: StaticOutput, + pub bme_spi: &'static Mutex, + pub bme_cs: StaticOutput, + pub sensor_i2c: &'static Mutex, + pub wdt: Watchdog, + pub usb: molybdos::pal::UsbDriver, pub i2s: i2s::I2S<'static, 'static, embassy_rp::peripherals::PIO0, 0>, pub i2s_dma: DMA_CH5, @@ -105,8 +99,8 @@ pub fn split( CriticalSectionRawMutex, crate::SdSpi, CriticalSectionRawMutex, - // crate::SensorI2c, - // CriticalSectionRawMutex, + crate::SensorI2c, + CriticalSectionRawMutex, > { let mut periphs = embassy_rp::init(config); @@ -143,14 +137,16 @@ pub fn split( SD_SPI.init(sd_spi) }; - // let i2c = { - // let mut conf = i2c::Config::default(); - // conf.frequency = 400_000; - // - // let i2c = SensorI2c::new_async(periphs.I2C1, periphs.PIN_23, periphs.PIN_22, Irqs, conf) - // .pipe(Mutex::new); - // SENSOR_I2C.init(i2c) - // }; + let i2c = { + let mut conf = i2c::Config::default(); + conf.frequency = 400_000; + + let (dummy_scl, dummy_sda) = (periphs.PIN_15, periphs.PIN_14); + + let i2c = + SensorI2c::new_async(periphs.I2C1, dummy_scl, dummy_sda, Irqs, conf).pipe(Mutex::new); + SENSOR_I2C.init(i2c) + }; let usb_driver = embassy_rp::usb::Driver::new(periphs.USB, Irqs); @@ -172,7 +168,7 @@ pub fn split( bme_spi, bme_cs, wdt, - // sensor_i2c: i2c, + sensor_i2c: i2c, usb: usb_driver, i2s, i2s_dma: periphs.DMA_CH5, diff --git a/src/main.rs b/src/main.rs index 0c8b5d8..86f4975 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,10 @@ extern crate alloc; use molybdos::{ - embassy_embedded_hal::shared_bus::asynch::spi::SpiDevice, + embassy_embedded_hal::shared_bus::asynch::{ + i2c::I2cDevice, + spi::SpiDevice, + }, embassy_executor, embassy_rp, embassy_rp::{ @@ -48,7 +51,6 @@ use molybdos::{ heapless, pal::StaticOutput, }; - use ocularium_common::{ Downlink, Sensor, @@ -111,12 +113,15 @@ async fn main(spawner: embassy_executor::Spawner) { &usb::COBS_DOWNLINK ); + // let mut vemldev = I2cDevice::new(&); + let mut spidev = SpiDevice::new(bme_spi, bme_cs); manually_check_bme_id(&mut spidev).await; let config = drogue_bme680_async::Configuration::default(); let bme = drogue_bme680_async::Sensor::new_spi(spidev).await.unwrap(); + let mut bme = drogue_bme680_async::Controller::new( bme, molybdos::embassy_time::Delay, -- cgit v1.3.1