189 lines
6.2 KiB
C
189 lines
6.2 KiB
C
/*
|
|
* Copyright (c) 2022, Shenzhen CVA Innovation CO.,LTD
|
|
* All rights reserved.
|
|
*
|
|
* Shenzhen CVA Innovation CO.,LTD (CVA chip) is supplying this file for use
|
|
* exclusively with CVA's microcontroller products. This file can be freely
|
|
* distributed within development tools that are supporting such microcontroller
|
|
* products.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
|
|
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
|
|
* CVA SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
|
|
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
|
|
*/
|
|
|
|
/*******************************************************************************
|
|
* the includes
|
|
******************************************************************************/
|
|
|
|
#include "mcu.h"
|
|
#include "drivers/cpu/startup/system_M014x.h"
|
|
|
|
/*******************************************************************************
|
|
* the defines
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* the typedefs
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* the globals
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* the functions
|
|
******************************************************************************/
|
|
|
|
void Mcu_Init(McuType *obj)
|
|
{
|
|
/* Initialize ADC driver */
|
|
AdcDrv_InitParamsType adcInitParams;
|
|
adcInitParams.adcNumber = ADCDRV_INSTANCE_0;
|
|
AdcDrv_Init(&obj->adc0Drv, ADC0, SIM, &adcInitParams);
|
|
adcInitParams.adcNumber = ADCDRV_INSTANCE_1;
|
|
AdcDrv_Init(&obj->adc1Drv, ADC1, SIM, &adcInitParams);
|
|
|
|
/* Initialize clock driver */
|
|
ClockDrv_InitParamsType clockInitParams;
|
|
clockInitParams.fircFreq = CPU_INT_FAST_CLK_HZ;
|
|
clockInitParams.sircFreq = CPU_INT_SLOW_CLK_HZ;
|
|
clockInitParams.xtalClkFreq = CPU_XTAL_CLK_HZ;
|
|
clockInitParams.rtcClkInFreq = 0;
|
|
clockInitParams.tclkFreq[0] = 0;
|
|
clockInitParams.tclkFreq[1] = 0;
|
|
clockInitParams.tclkFreq[2] = 0;
|
|
ClockDrv_Init(&obj->clockDrv, ACG, APC, SCG, PCC, &clockInitParams);
|
|
|
|
/* Initialize CMP driver */
|
|
CmpDrv_Init(&obj->cmpDrv, CMP);
|
|
|
|
/* Initialize CMU driver */
|
|
CmuDrv_Init(&obj->cmuFirc, CMU_FIRC);
|
|
CmuDrv_Init(&obj->cmuPll, CMU_PLL);
|
|
CmuDrv_Init(&obj->cmuSosc, CMU_SOSC);
|
|
|
|
/* Initialize CRC driver */
|
|
CrcDrv_Init(&obj->crcDrv, CRC);
|
|
|
|
/* Initialize CSE driver */
|
|
CseDrv_Init(&obj->cseDrv, CSE);
|
|
|
|
/* Initialize EDMA driver */
|
|
EDmaDrv_Init(&obj->edmaDrv, DMA, DMAMUX);
|
|
|
|
/* Initialize EIM driver */
|
|
EimDrv_Init(&obj->eimDrv, EIM);
|
|
|
|
/* Initialize ERM driver */
|
|
ErmDrv_Init(&obj->ermDrv, ERM);
|
|
|
|
/* Initialize EWM driver */
|
|
EwmDrv_Init(&obj->ewmDrv, EWM);
|
|
|
|
/* Initialize FCCU driver */
|
|
FccuDrv_Init(&obj->fccuDrv, FCCU, SIM);
|
|
|
|
/* Initialize Flash driver */
|
|
FlashDrv_Init(&obj->flashDrv, FTFC);
|
|
|
|
/* Initialize flexCAN driver */
|
|
FlexCanDrv_InitHwParType canInitHwPar;
|
|
canInitHwPar.canInstanceIdx = 0;
|
|
canInitHwPar.canRamNum = 3;
|
|
FlexCanDrv_Init(&obj->flexCanDrv0, CAN0, PCC, SCG, SIM, &canInitHwPar);
|
|
canInitHwPar.canInstanceIdx = 1;
|
|
canInitHwPar.canRamNum = 2;
|
|
FlexCanDrv_Init(&obj->flexCanDrv1, CAN1, PCC, SCG, SIM, &canInitHwPar);
|
|
canInitHwPar.canInstanceIdx = 2;
|
|
canInitHwPar.canRamNum = 1;
|
|
FlexCanDrv_Init(&obj->flexCanDrv2, CAN2, PCC, SCG, SIM, &canInitHwPar);
|
|
#if FEATURE_CAN_FD_INSTANCE_NUM == 4
|
|
canInitHwPar.canInstanceIdx = 3;
|
|
canInitHwPar.canRamNum = 1;
|
|
FlexCanDrv_Init(&obj->flexCanDrv3, CAN3, PCC, SCG, SIM, &canInitHwPar);
|
|
#endif
|
|
|
|
/* Initialize I2C driver */
|
|
I2cDrv_Init(&obj->i2cDrv0, I2C);
|
|
|
|
/* Initialize I2SM driver */
|
|
I2smDrv_Init(&obj->i2smDrv, I2SM, SIM);
|
|
|
|
/* Initialize I2SS driver */
|
|
I2ssDrv_Init(&obj->i2ssDrv, I2SS, SIM);
|
|
|
|
/* Initialize LPIT driver */
|
|
LpitDrv_Init(&obj->lpitDrv, LPIT);
|
|
|
|
/* Initialize LPTMR driver */
|
|
LptmrDrv_Init(&obj->lptmrDrv, LPTMR);
|
|
|
|
/* Initialize MFT drivers */
|
|
MftDrv_Init(&obj->mftDrv0, MFT0);
|
|
MftDrv_Init(&obj->mftDrv1, MFT1);
|
|
MftDrv_Init(&obj->mftDrv2, MFT2);
|
|
MftDrv_Init(&obj->mftDrv3, MFT3);
|
|
#if FEATURE_MFT_INSTANCE_NUM == 6
|
|
MftDrv_Init(&obj->mftDrv4, MFT4);
|
|
MftDrv_Init(&obj->mftDrv5, MFT5);
|
|
#endif
|
|
|
|
/* Initialize MPU driver */
|
|
MpuDrv_Init(&obj->mpuDrv, MPU);
|
|
|
|
/* Initialize PDB driver */
|
|
PdbDrv_Init(&obj->pdb0Drv, PDB0, SIM);
|
|
PdbDrv_Init(&obj->pdb1Drv, PDB1, SIM);
|
|
|
|
/* Initialize PINS driver */
|
|
PinsDrv_Init(&obj->pta, PORTA, GPIOA);
|
|
PinsDrv_Init(&obj->ptb, PORTB, GPIOB);
|
|
PinsDrv_Init(&obj->ptc, PORTC, GPIOC);
|
|
PinsDrv_Init(&obj->ptd, PORTD, GPIOD);
|
|
PinsDrv_Init(&obj->pte, PORTE, GPIOE);
|
|
|
|
/* Initialize POWER driver */
|
|
PowerDrv_Init(&obj->powerDrv, PMC, ACG);
|
|
|
|
/* Initialize PRNG driver */
|
|
PrngDrv_Init(&obj->prngDrv, PRNG);
|
|
|
|
/* Initialize PWMLITE driver */
|
|
PwmLiteDrv_Init(&obj->pwmLiteDrv0, PWMLITE0, SIM);
|
|
PwmLiteDrv_Init(&obj->pwmLiteDrv1, PWMLITE1, SIM);
|
|
PwmLiteDrv_Init(&obj->pwmLiteDrv2, PWMLITE2, SIM);
|
|
PwmLiteDrv_Init(&obj->pwmLiteDrv3, PWMLITE3, SIM);
|
|
PwmLiteDrv_Init(&obj->pwmLiteDrv4, PWMLITE4, SIM);
|
|
|
|
/* Initialize reset driver */
|
|
ResetDrv_Init(&obj->resetDrv, RCM, PCC, APC);
|
|
|
|
/* Initialize RTC driver */
|
|
RtcDrv_Init(&obj->rtcDrv, RTC);
|
|
|
|
/* Initialize SPI driver */
|
|
SpiDrv_Init(&obj->spiDrv0, SPI0);
|
|
SpiDrv_Init(&obj->spiDrv1, SPI1);
|
|
SpiDrv_Init(&obj->spiDrv2, SPI2);
|
|
#if FEATURE_SPI_INSTANCE_NUM == 4
|
|
SpiDrv_Init(&obj->spiDrv3, SPI3);
|
|
#endif
|
|
|
|
/* Initialize TRGMUX driver */
|
|
TrgMuxDrv_Init(&obj->trgMuxDrv, TRGMUX, SIM);
|
|
|
|
/* Initialize UART driver */
|
|
UartDrv_Init(&obj->uartDrv0, UART0);
|
|
UartDrv_Init(&obj->uartDrv1, UART1);
|
|
UartDrv_Init(&obj->uartDrv2, UART2);
|
|
#if FEATURE_UART_INSTANCE_NUM == 4
|
|
UartDrv_Init(&obj->uartDrv3, UART3);
|
|
#endif
|
|
|
|
/* Initialize watchdog driver */
|
|
WdgDrv_Init(&obj->wdgDrv, WDG);
|
|
}
|