Split InitI2c() as InitI2cMainBus() and initI2cEepromBus() and invoke InitI2cMainBus() from PIT_I2C_WATCHDOG_HANDLER()
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "i2c_watchdog.h"
|
#include "i2c_watchdog.h"
|
||||||
#include "slave_scheduler.h"
|
#include "slave_scheduler.h"
|
||||||
|
#include "init_peripherals.h"
|
||||||
|
|
||||||
uint32_t I2cWatchdog_OuterCounter;
|
uint32_t I2cWatchdog_OuterCounter;
|
||||||
uint32_t I2cWatchdog_InnerCounter;
|
uint32_t I2cWatchdog_InnerCounter;
|
||||||
@@ -23,72 +24,7 @@ void PIT_I2C_WATCHDOG_HANDLER(void)
|
|||||||
i2c_master_config_t masterConfig;
|
i2c_master_config_t masterConfig;
|
||||||
I2C_MasterGetDefaultConfig(&masterConfig);
|
I2C_MasterGetDefaultConfig(&masterConfig);
|
||||||
I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
|
I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
|
||||||
|
InitI2cMainBus();
|
||||||
PORT_SetPinMux(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, kPORT_MuxAsGpio);
|
|
||||||
GPIO_PinInit(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1});
|
|
||||||
PORT_SetPinMux(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SDA_PIN, kPORT_MuxAsGpio);
|
|
||||||
GPIO_PinInit(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SDA_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1});
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 0);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1);
|
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
|
||||||
|
|
||||||
port_pin_config_t pinConfig = {
|
|
||||||
.pullSelect = kPORT_PullUp,
|
|
||||||
.openDrainEnable = kPORT_OpenDrainEnable
|
|
||||||
};
|
|
||||||
pinConfig.mux = I2C_MAIN_BUS_MUX;
|
|
||||||
PORT_SetPinConfig(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, &pinConfig);
|
|
||||||
PORT_SetPinConfig(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, &pinConfig);
|
|
||||||
|
|
||||||
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
|
|
||||||
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
|
|
||||||
InitSlaveScheduler();
|
InitSlaveScheduler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,19 +21,8 @@ void InitInterruptPriorities(void)
|
|||||||
NVIC_SetPriority(USB0_IRQn, 1);
|
NVIC_SetPriority(USB0_IRQn, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitI2c(void)
|
void InitI2cMainBus(void)
|
||||||
{
|
{
|
||||||
port_pin_config_t pinConfig = {
|
|
||||||
.pullSelect = kPORT_PullUp,
|
|
||||||
.openDrainEnable = kPORT_OpenDrainEnable
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c_master_config_t masterConfig;
|
|
||||||
I2C_MasterGetDefaultConfig(&masterConfig);
|
|
||||||
uint32_t sourceClock;
|
|
||||||
|
|
||||||
// Initialize main bus
|
|
||||||
|
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
||||||
|
|
||||||
@@ -92,26 +81,47 @@ void InitI2c(void)
|
|||||||
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1);
|
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1);
|
||||||
for (volatile uint32_t i=0; i<10000; i++);
|
for (volatile uint32_t i=0; i<10000; i++);
|
||||||
|
|
||||||
pinConfig.mux = I2C_MAIN_BUS_MUX;
|
port_pin_config_t pinConfig = {
|
||||||
|
.pullSelect = kPORT_PullUp,
|
||||||
|
.openDrainEnable = kPORT_OpenDrainEnable,
|
||||||
|
.mux = I2C_MAIN_BUS_MUX,
|
||||||
|
};
|
||||||
|
|
||||||
PORT_SetPinConfig(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, &pinConfig);
|
PORT_SetPinConfig(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, &pinConfig);
|
||||||
PORT_SetPinConfig(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, &pinConfig);
|
PORT_SetPinConfig(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, &pinConfig);
|
||||||
|
|
||||||
|
i2c_master_config_t masterConfig;
|
||||||
|
I2C_MasterGetDefaultConfig(&masterConfig);
|
||||||
masterConfig.baudRate_Bps = I2C_MAIN_BUS_BAUD_RATE;
|
masterConfig.baudRate_Bps = I2C_MAIN_BUS_BAUD_RATE;
|
||||||
sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
|
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
|
||||||
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
|
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);}
|
||||||
|
|
||||||
// Initialize EEPROM bus
|
void initI2cEepromBus(void)
|
||||||
|
{
|
||||||
|
port_pin_config_t pinConfig = {
|
||||||
|
.pullSelect = kPORT_PullUp,
|
||||||
|
.openDrainEnable = kPORT_OpenDrainEnable,
|
||||||
|
.mux = I2C_EEPROM_BUS_MUX,
|
||||||
|
};
|
||||||
|
|
||||||
CLOCK_EnableClock(I2C_EEPROM_BUS_SDA_CLOCK);
|
|
||||||
CLOCK_EnableClock(I2C_EEPROM_BUS_SCL_CLOCK);
|
|
||||||
|
|
||||||
pinConfig.mux = I2C_EEPROM_BUS_MUX;
|
CLOCK_EnableClock(I2C_EEPROM_BUS_SDA_CLOCK);
|
||||||
PORT_SetPinConfig(I2C_EEPROM_BUS_SDA_PORT, I2C_EEPROM_BUS_SDA_PIN, &pinConfig);
|
CLOCK_EnableClock(I2C_EEPROM_BUS_SCL_CLOCK);
|
||||||
PORT_SetPinConfig(I2C_EEPROM_BUS_SCL_PORT, I2C_EEPROM_BUS_SCL_PIN, &pinConfig);
|
|
||||||
|
|
||||||
masterConfig.baudRate_Bps = I2C_EEPROM_BUS_BAUD_RATE;
|
PORT_SetPinConfig(I2C_EEPROM_BUS_SDA_PORT, I2C_EEPROM_BUS_SDA_PIN, &pinConfig);
|
||||||
sourceClock = CLOCK_GetFreq(I2C_EEPROM_BUS_CLK_SRC);
|
PORT_SetPinConfig(I2C_EEPROM_BUS_SCL_PORT, I2C_EEPROM_BUS_SCL_PIN, &pinConfig);
|
||||||
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
|
||||||
|
i2c_master_config_t masterConfig;
|
||||||
|
I2C_MasterGetDefaultConfig(&masterConfig);
|
||||||
|
masterConfig.baudRate_Bps = I2C_EEPROM_BUS_BAUD_RATE;
|
||||||
|
uint32_t sourceClock = CLOCK_GetFreq(I2C_EEPROM_BUS_CLK_SRC);
|
||||||
|
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitI2c(void)
|
||||||
|
{
|
||||||
|
InitI2cMainBus();
|
||||||
|
initI2cEepromBus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitPeripherals(void)
|
void InitPeripherals(void)
|
||||||
|
|||||||
@@ -6,5 +6,6 @@
|
|||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void InitPeripherals(void);
|
void InitPeripherals(void);
|
||||||
|
void InitI2cMainBus(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user