107 lines
3.2 KiB
C
107 lines
3.2 KiB
C
|
/*******************************************************************************
|
||
|
* the includes
|
||
|
******************************************************************************/
|
||
|
#include "hwctrl.h"
|
||
|
#include "canuser.h"
|
||
|
#include "TLE94x1.h"
|
||
|
/*******************************************************************************
|
||
|
* the defines
|
||
|
******************************************************************************/
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the typedefs
|
||
|
******************************************************************************/
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the globals
|
||
|
******************************************************************************/
|
||
|
extern McuType mcu;
|
||
|
uint32_t gCpuClockFrequency = 0;
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the const
|
||
|
******************************************************************************/
|
||
|
|
||
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* the functions
|
||
|
******************************************************************************/
|
||
|
static void hw_clock_init(void);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void hw_init(void)
|
||
|
{
|
||
|
/* Initialize all MCU drivers: flash drv included */
|
||
|
Mcu_Init(&mcu);
|
||
|
|
||
|
WdgDrv_Disable(&mcu.wdgDrv);
|
||
|
|
||
|
//初始化时钟
|
||
|
hw_clock_init();
|
||
|
|
||
|
SBC_SPI_INIT();
|
||
|
|
||
|
|
||
|
|
||
|
/* get CAN controller default configuration */
|
||
|
FlexCanBoot_Init();
|
||
|
|
||
|
SBC_Init();
|
||
|
}
|
||
|
|
||
|
static void hw_clock_init(void)
|
||
|
{
|
||
|
/* Setup the clock */
|
||
|
ClockDrv_ModuleClkConfigType clockConfig;
|
||
|
|
||
|
/* Setup the Pll div2 clock */
|
||
|
clockConfig.gating = true;
|
||
|
clockConfig.source = CLOCKDRV_PLL;
|
||
|
clockConfig.div = 1;
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PLL_DIV, &clockConfig);
|
||
|
|
||
|
/* Enable the clock for all port peripheral */
|
||
|
clockConfig.gating = true;
|
||
|
clockConfig.div = 1;
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PORTA, &clockConfig);
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PORTB, &clockConfig);
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PORTC, &clockConfig);
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PORTD, &clockConfig);
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PORTE, &clockConfig);
|
||
|
|
||
|
/* Setup the Pll div2 clock */
|
||
|
clockConfig.gating = true;
|
||
|
clockConfig.source = CLOCKDRV_PLL;
|
||
|
clockConfig.div = 1;
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PLL_DIV, &clockConfig);
|
||
|
|
||
|
clockConfig.gating = true;
|
||
|
clockConfig.source = CLOCKDRV_PLL;
|
||
|
clockConfig.div = 2;
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_PLL_DIV, &clockConfig);
|
||
|
|
||
|
/* Setup the SPI clock */
|
||
|
clockConfig.gating = true;
|
||
|
clockConfig.source = CLOCKDRV_PLL_DIV;
|
||
|
ClockDrv_ConfigureClock(&mcu.clockDrv, CLOCKDRV_SPI0, &clockConfig);
|
||
|
|
||
|
uint32_t tTcr = SpiReg_GetTcr((const SpiRegType *)&mcu.spiDrv0.reg);
|
||
|
SpiDrv_SetPrescaler(&tTcr,0x02);
|
||
|
|
||
|
/* Set system tick clock, 1ms event */
|
||
|
ClockDrv_GetFreq(&mcu.clockDrv, CLOCKDRV_SYS, &gCpuClockFrequency);
|
||
|
SysTick_Config(gCpuClockFrequency / 1000u);
|
||
|
|
||
|
IrqDrv_EnableIrq(SysTick_IRQn);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|