From 30546a834f68085bf8b331f12c11dc9bb0c9ffcb Mon Sep 17 00:00:00 2001 From: Ryan Summers Date: Wed, 21 Jul 2021 12:21:40 +0200 Subject: [PATCH] Updating IO expander to be configured vefore AD9959 --- src/hardware/setup.rs | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/hardware/setup.rs b/src/hardware/setup.rs index f647047..49cd826 100644 --- a/src/hardware/setup.rs +++ b/src/hardware/setup.rs @@ -769,6 +769,26 @@ pub fn setup( delay.delay_ms(2u8); let pounder = if pounder_pgood.is_high().unwrap() { log::info!("Found Pounder"); + + let mut io_expander = { + let sda = gpiob.pb7.into_alternate_af4().set_open_drain(); + let scl = gpiob.pb8.into_alternate_af4().set_open_drain(); + let i2c1 = device.I2C1.i2c( + (scl, sda), + 400.khz(), + ccdr.peripheral.I2C1, + &ccdr.clocks, + ); + mcp23017::MCP23017::default(i2c1).unwrap() + }; + + // Configure power-on-default state for pounder. All LEDs are off, on-board oscillator + // selected and enabled, attenuators out of reset. Note that testing indicates the + // output state needs to be set first to properly update the output registers. + io_expander.all_pin_mode(mcp23017::PinMode::OUTPUT).unwrap(); + io_expander.write_gpio(mcp23017::Port::GPIOA, 0x00).unwrap(); + io_expander.write_gpio(mcp23017::Port::GPIOB, 0x2F).unwrap(); + let ad9959 = { let qspi_interface = { // Instantiate the QUADSPI pins and peripheral interface. @@ -842,18 +862,6 @@ pub fn setup( ad9959 }; - let io_expander = { - let sda = gpiob.pb7.into_alternate_af4().set_open_drain(); - let scl = gpiob.pb8.into_alternate_af4().set_open_drain(); - let i2c1 = device.I2C1.i2c( - (scl, sda), - 400.khz(), - ccdr.peripheral.I2C1, - &ccdr.clocks, - ); - mcp23017::MCP23017::default(i2c1).unwrap() - }; - let spi = { let spi_mosi = gpiod .pd7