diff --git a/right/src/i2c.h b/right/src/i2c.h index 8e4b8a8..5051c7e 100644 --- a/right/src/i2c.h +++ b/right/src/i2c.h @@ -10,11 +10,12 @@ // Main bus - #define I2C_MAIN_BUS_BASEADDR I2C0 - #define I2C_MAIN_BUS_IRQ_ID I2C0_IRQn - #define I2C_MAIN_BUS_CLK_SRC I2C0_CLK_SRC - #define I2C_MAIN_BUS_BAUD_RATE 100000 - #define I2C_MAIN_BUS_MUX kPORT_MuxAlt7 + #define I2C_MAIN_BUS_BASEADDR I2C0 + #define I2C_MAIN_BUS_IRQ_ID I2C0_IRQn + #define I2C_MAIN_BUS_CLK_SRC I2C0_CLK_SRC + #define I2C_MAIN_BUS_NORMAL_BAUD_RATE 100000 + #define I2C_MAIN_BUS_BUSPAL_BAUD_RATE 30000 + #define I2C_MAIN_BUS_MUX kPORT_MuxAlt7 #define I2C_MAIN_BUS_SDA_GPIO GPIOD #define I2C_MAIN_BUS_SDA_PORT PORTD diff --git a/right/src/init_peripherals.c b/right/src/init_peripherals.c index 60afeb7..757439c 100644 --- a/right/src/init_peripherals.c +++ b/right/src/init_peripherals.c @@ -15,10 +15,20 @@ #include "key_debouncer.h" #include "usb_api.h" #include "slave_scheduler.h" +#include "bootloader/wormhole.h" -uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_BAUD_RATE; +bool IsBusPalOn; +uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_NORMAL_BAUD_RATE; uint32_t I2cMainBusActualBaudRateBps; +void initBusPalState(void) { + IsBusPalOn = Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal; + if (IsBusPalOn) { + Wormhole.magicNumber = 0; + I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_BUSPAL_BAUD_RATE; + } +} + void InitInterruptPriorities(void) { NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1); @@ -124,6 +134,7 @@ void InitI2c(void) void InitPeripherals(void) { + initBusPalState(); InitInterruptPriorities(); Timer_Init(); InitLedDriver(); diff --git a/right/src/init_peripherals.h b/right/src/init_peripherals.h index 747e6cd..0b0ad61 100644 --- a/right/src/init_peripherals.h +++ b/right/src/init_peripherals.h @@ -7,6 +7,7 @@ // Variables: + extern bool IsBusPalOn; extern uint32_t I2cMainBusRequestedBaudRateBps; extern uint32_t I2cMainBusActualBaudRateBps; diff --git a/right/src/main.c b/right/src/main.c index e9e98bf..60a8c61 100644 --- a/right/src/main.c +++ b/right/src/main.c @@ -5,7 +5,6 @@ #include "slave_scheduler.h" #include "bus_pal_hardware.h" #include "command.h" -#include "bootloader/wormhole.h" #include "eeprom.h" #include "key_scanner.h" #include "usb_commands/usb_command_apply_config.h" @@ -34,8 +33,7 @@ void main(void) EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished); } - if (Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal) { - Wormhole.magicNumber = 0; + if (IsBusPalOn) { init_hardware(); handleUsbBusPalCommand(); } else {