Slow down main bus I2C baud rate to 30kHz when BusPal is on to make firmware transfer more robust.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
// Variables:
|
||||
|
||||
extern bool IsBusPalOn;
|
||||
extern uint32_t I2cMainBusRequestedBaudRateBps;
|
||||
extern uint32_t I2cMainBusActualBaudRateBps;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user