/**************************************************************************
|
* @file sys.h
|
* @version V1.00
|
* $Revision: 15 $
|
* $Date: 2023/11/08 $
|
* @brief Panchip series SYS driver header file
|
*
|
* @note
|
* Copyright (C) 2023 Panchip Technology Corp. All rights reserved.
|
*****************************************************************************/
|
|
#ifndef __PAN_SYS_H__
|
#define __PAN_SYS_H__
|
|
|
/**
|
* @brief System Interface
|
* @defgroup system_interface System Interface
|
* @{
|
*/
|
#ifdef __cplusplus
|
extern "C"
|
{
|
#endif
|
|
|
/**
|
* @defgroup MULTI_FUNC_FLAG Io function define
|
* @brief Io function define constant definitions
|
* @{
|
*/
|
#define SYS_MFP_TYPE_Msk(bit) (1UL << ((bit) +16)) /*!< TYPE mask for Multiple Function Port */
|
#define SYS_MFP_ALT_Msk(bit) (1UL << ((bit) + 8)) /*!< ALT mask for Multiple Function Port */
|
#define SYS_MFP_MFP_Msk(bit) (1UL << ((bit) )) /*!< MFP mask for Multiple Function Port */
|
|
#define SYS_MFP_GPIO 0x00000000UL
|
|
/*P0*/
|
#define SYS_MFP_P00_GPIO 0x00000000UL
|
#define SYS_MFP_P00_SWD_CLK 0x00000001UL
|
#define SYS_MFP_P00_UART1_RX 0x00000100UL
|
#define SYS_MFP_P00_I2C0_SCL 0x00000101UL
|
#define SYS_MFP_P00_SPI0_CLK 0x00010000UL
|
#define SYS_MFP_P00_LL_DBG_14 0x00010001UL
|
#define SYS_MFP_P00_MDM_DBG_11 0x00010100UL
|
#define SYS_MFP_P00_RESERVED 0x00010101UL
|
#define SYS_MFP_P00_Msk 0x00010101UL
|
|
#define SYS_MFP_P01_GPIO 0x00000000UL
|
#define SYS_MFP_P01_SWD_DAT 0x00000002UL
|
#define SYS_MFP_P01_UART1_TX 0x00000200UL
|
#define SYS_MFP_P01_I2C0_SDA 0x00000202UL
|
#define SYS_MFP_P01_SPI0_CS 0x00020000UL
|
#define SYS_MFP_P01_LL_DBG_15 0x00020002UL
|
#define SYS_MFP_P01_MDM_DBG_12 0x00020200UL
|
#define SYS_MFP_P01_RESERVED 0x00020202UL
|
#define SYS_MFP_P01_Msk 0x00020202UL
|
|
#define SYS_MFP_P02_GPIO 0x00000000UL
|
#define SYS_MFP_P02_UART0_CTS 0x00000004UL
|
#define SYS_MFP_P02_SPI1_MISO 0x00000400UL
|
#define SYS_MFP_P02_PWM_CH3 0x00000404UL
|
#define SYS_MFP_P02_UART1_CTS 0x00040000UL
|
#define SYS_MFP_P02_LL_DBG_8 0x00040004UL
|
#define SYS_MFP_P02_MDM_DBG_19 0x00040400UL
|
#define SYS_MFP_P02_RESERVED 0x00040404UL
|
#define SYS_MFP_P02_Msk 0x00040404UL
|
|
#define SYS_MFP_P03_GPIO 0x00000000UL
|
#define SYS_MFP_P03_UART0_CTS 0x00000008UL
|
#define SYS_MFP_P03_SPI0_CS 0x00000800UL
|
#define SYS_MFP_P03_PWM_CH2 0x00000808UL
|
#define SYS_MFP_P03_TIMER0_CNT_OUT 0x00080000UL
|
#define SYS_MFP_P03_LL_DBG_8 0x00080008UL
|
#define SYS_MFP_P03_MDM_DBG_5 0x00080800UL
|
#define SYS_MFP_P03_RESERVED 0x00080808UL
|
#define SYS_MFP_P03_Msk 0x00080808UL
|
|
#define SYS_MFP_P04_GPIO 0x00000000UL
|
#define SYS_MFP_P04_UART0_RTS 0x00000010UL
|
#define SYS_MFP_P04_SPI0_CLK 0x00001000UL
|
#define SYS_MFP_P04_PWM_CH3 0x00001010UL
|
#define SYS_MFP_P04_TIMER0_EXT 0x00100000UL
|
#define SYS_MFP_P04_LL_DBG_9 0x00100010UL
|
#define SYS_MFP_P04_MDM_DBG_6 0x00101000UL
|
#define SYS_MFP_P04_RESERVED 0x00101010UL
|
#define SYS_MFP_P04_Msk 0x00101010UL /* func act as ADC CH0 if io is in analog mode */
|
|
#define SYS_MFP_P05_GPIO 0x00000000UL
|
#define SYS_MFP_P05_UART0_TX 0x00000020UL
|
#define SYS_MFP_P05_SPI0_MISO 0x00002000UL
|
#define SYS_MFP_P05_PWM_CH4 0x00002020UL
|
#define SYS_MFP_P05_EXT_STADC 0x00200000UL
|
#define SYS_MFP_P05_LL_DBG_12 0x00200020UL
|
#define SYS_MFP_P05_MDM_DBG_9 0x00202000UL
|
#define SYS_MFP_P05_RESERVED 0x00202020UL
|
#define SYS_MFP_P05_Msk 0x00202020UL
|
|
#define SYS_MFP_P06_GPIO 0x00000000UL
|
#define SYS_MFP_P06_UART0_RX 0x00000040UL
|
#define SYS_MFP_P06_SPI0_MISO 0x00004000UL
|
#define SYS_MFP_P06_PWM_CH5 0x00004040UL
|
#define SYS_MFP_P06_TIMER1_EXT 0x00400000UL
|
#define SYS_MFP_P06_LL_DBG_13 0x00400040UL
|
#define SYS_MFP_P06_MDM_DBG_3 0x00404000UL
|
#define SYS_MFP_P06_AHB_CLK 0x00404040UL
|
#define SYS_MFP_P06_Msk 0x00404040UL
|
|
#define SYS_MFP_P07_GPIO 0x00000000UL
|
#define SYS_MFP_P07_UART1_RX 0x00000080UL
|
#define SYS_MFP_P07_I2C0_SCL 0x00008000UL
|
#define SYS_MFP_P07_SPI0_MOSI 0x00008080UL
|
#define SYS_MFP_P07_PWM_CH0 0x00800000UL
|
#define SYS_MFP_P07_LL_DBG_10 0x00800080UL
|
#define SYS_MFP_P07_MDM_DBG_7 0x00808000UL
|
#define SYS_MFP_P07_RESERVED 0x00808080UL
|
#define SYS_MFP_P07_Msk 0x00808080UL /* func act as ADC CH5 if io is in analog mode */
|
|
/*P1*/
|
#define SYS_MFP_P10_GPIO 0x00000000UL
|
#define SYS_MFP_P10_UART1_TX 0x00000001UL
|
#define SYS_MFP_P10_I2C0_SDA 0x00000100UL
|
#define SYS_MFP_P10_SPI0_MISO 0x00000101UL
|
#define SYS_MFP_P10_PWM_CH5 0x00010000UL
|
#define SYS_MFP_P10_LL_DBG_11 0x00010001UL
|
#define SYS_MFP_P10_MDM_DBG_8 0x00010100UL
|
#define SYS_MFP_P10_RESERVED 0x00010101UL
|
#define SYS_MFP_P10_Msk 0x00010101UL
|
|
#define SYS_MFP_P11_GPIO 0x00000000UL
|
#define SYS_MFP_P11_UART1_RTS 0x00000002UL
|
#define SYS_MFP_P11_SPI0_MOSI 0x00000200UL
|
#define SYS_MFP_P11_PWM_CH7 0x00000202UL
|
#define SYS_MFP_P11_CLK_32K 0x00020000UL
|
#define SYS_MFP_P11_LL_DBG_9 0x00020002UL
|
#define SYS_MFP_P11_MDM_DBG_0 0x00020200UL
|
#define SYS_MFP_P11_UART0_TX 0x00020202UL
|
#define SYS_MFP_P11_Msk 0x00020202UL
|
|
#define SYS_MFP_P12_GPIO 0x00000000UL
|
#define SYS_MFP_P12_UART0_RX 0x00000004UL
|
#define SYS_MFP_P12_PWM_CH4 0x00000400UL
|
#define SYS_MFP_P12_TIMER0_CNT_OUT 0x00000404UL
|
#define SYS_MFP_P12_UART1_TX 0x00040000UL
|
#define SYS_MFP_P12_LL_DBG_4 0x00040004UL
|
#define SYS_MFP_P12_MDM_DBG_17 0X00040400UL
|
#define SYS_MFP_P12_SPI0_MISO 0x00040404UL
|
#define SYS_MFP_P12_Msk 0x00040404UL /* func act as ADC CH3 if io is in analog mode */
|
|
#define SYS_MFP_P13_GPIO 0x00000000UL
|
#define SYS_MFP_P13_UART0_RTS 0x00000008UL
|
#define SYS_MFP_P13_I2C0_SDA 0x00000800UL
|
#define SYS_MFP_P13_PWM_CH3 0x00000808UL
|
#define SYS_MFP_P13_LL_DBG_3 0x00080000UL
|
#define SYS_MFP_P13_MDM_DBG_16 0x00080008UL
|
#define SYS_MFP_P13_SPI1_CS 0x00080800UL
|
#define SYS_MFP_P13_SPI0_CS 0x00080808UL
|
#define SYS_MFP_P13_Msk 0x00080808UL /* func act as USB DM if io is in analog mode */
|
|
#define SYS_MFP_P14_GPIO 0x00000000UL
|
#define SYS_MFP_P14_UART0_CTS 0x00000010UL
|
#define SYS_MFP_P14_I2C0_SCL 0x00001000UL
|
#define SYS_MFP_P14_PWM_CH2 0x00001010UL
|
#define SYS_MFP_P14_LL_DEBUG_2 0x00100000UL
|
#define SYS_MFP_P14_MDM_DBG_15 0x00100010UL
|
#define SYS_MFP_P14_SPI0_CLK 0x00101000UL
|
#define SYS_MFP_P14_RESERVED 0x00101010UL
|
#define SYS_MFP_P14_Msk 0x00101010UL /* func act as USB DP if io is in analog mode */
|
|
#define SYS_MFP_P15_GPIO 0x00000000UL
|
#define SYS_MFP_P15_SPI0_CS 0x00000020UL
|
#define SYS_MFP_P15_PWM_CH5 0x00002000UL
|
#define SYS_MFP_P15_TIMER0_EXT 0x00002020UL
|
#define SYS_MFP_P15_UART0_RX 0x00200000UL
|
#define SYS_MFP_P15_LL_DBG_5 0x00200020UL
|
#define SYS_MFP_P15_MDM_DBG_18 0x00202000UL
|
#define SYS_MFP_P15_RESERVED 0x00202020UL
|
#define SYS_MFP_P15_Msk 0x00202020UL
|
|
#define SYS_MFP_P16_GPIO 0x00000000UL
|
#define SYS_MFP_P16_UART0_TX 0x00000040UL
|
#define SYS_MFP_P16_TIMER2_CNT_OUT 0x00004000UL
|
#define SYS_MFP_P16_PWM_CH0 0x00004040UL
|
#define SYS_MFP_P16_LL_DBG_0 0x00400000UL
|
#define SYS_MFP_P16_MDM_DBG_13 0x00400040UL
|
#define SYS_MFP_P16_SPI1_CLK 0x00404000UL
|
#define SYS_MFP_P16_I2C0_SCL 0x00404040UL
|
#define SYS_MFP_P16_Msk 0x00404040UL /* func act as HOSC EXT if io is in analog mode */
|
|
#define SYS_MFP_P17_GPIO 0x00000000UL
|
#define SYS_MFP_P17_UART0_RX 0x00000080UL
|
#define SYS_MFP_P17_TIMER2_EXT 0x00008000UL
|
#define SYS_MFP_P17_PWM_CH1 0x00008080UL
|
#define SYS_MFP_P17_LL_DBG_1 0x00800000UL
|
#define SYS_MFP_P17_MDM_DBG_14 0x00800080UL
|
#define SYS_MFP_P17_RCH 0x00808000UL
|
#define SYS_MFP_P17_RESERVED 0x00808080UL
|
#define SYS_MFP_P17_Msk 0x00808080UL /* func act as LOSC EXT if io is in analog mode */
|
|
/*P2*/
|
#define SYS_MFP_P20_GPIO 0x00000000UL
|
#define SYS_MFP_P20_SPI1_MISO 0x00000001UL
|
#define SYS_MFP_P20_PWM_CH6 0x00000100UL
|
#define SYS_MFP_P20_TADC_CLK 0x00000101UL
|
#define SYS_MFP_P20_LL_DBG_6 0x00010000UL
|
#define SYS_MFP_P20_MDM_DBG_2 0x00010001UL
|
#define SYS_MFP_P20_XTL_C1_CLK 0x00010100UL
|
#define SYS_MFP_P20_RESERVED 0x00010101UL
|
#define SYS_MFP_P20_Msk 0x00010101UL /* func act as XTL C2 if io is in analog mode */
|
|
#define SYS_MFP_P21_GPIO 0x00000000UL
|
#define SYS_MFP_P21_SPI1_MOSI 0x00000002UL
|
#define SYS_MFP_P21_PWM_CH7 0x00000200UL
|
#define SYS_MFP_P21_TADC_VLD 0x00000202UL
|
#define SYS_MFP_P21_LL_DBG_7 0x00020000UL
|
#define SYS_MFP_P21_MDM_DBG_1 0x00020002UL
|
#define SYS_MFP_P21_XTL_C2_CLK 0x00020200UL
|
#define SYS_MFP_P21_RESERVED 0x00020202UL
|
#define SYS_MFP_P21_Msk 0x00020202UL /* func act as XTL C1 if io is in analog mode */
|
|
#define SYS_MFP_P22_GPIO 0x00000000UL
|
#define SYS_MFP_P22_SPI1_CLK 0x00000004UL
|
#define SYS_MFP_P22_PWM_CH0 0x00000400UL
|
#define SYS_MFP_P22_RESERVED 0x00000404UL
|
#define SYS_MFP_P22_TADC_DATl 0x00040000UL
|
#define SYS_MFP_P22_MDM_DBG_0 0x00040004UL
|
#define SYS_MFP_P22_SPI0_MOSI 0x00040400UL
|
#define SYS_MFP_P22_RESERVED1 0x00040404UL
|
#define SYS_MFP_P22_Msk 0x00040404UL /* func act as ADC CH2 & DFT IP & DFT_V if io is in analog mode */
|
|
#define SYS_MFP_P23_GPIO 0x00000000UL
|
#define SYS_MFP_P23_SPI1_CS 0x00000008UL
|
#define SYS_MFP_P23_PWM_CH1 0x00000800UL
|
#define SYS_MFP_P23_DPLL_DIV8 0x00000808UL
|
#define SYS_MFP_P23_TADC_DATH 0x00080000UL
|
#define SYS_MFP_P23_MDM_DBG_10 0x00080008UL
|
#define SYS_MFP_P23_I2C0_SCL 0x00080800UL
|
#define SYS_MFP_P23_RESERVED 0x00080808UL
|
#define SYS_MFP_P23_Msk 0x00080808UL /* func act as ADC CH1 & DFT IN & DFT_I if io is in analog mode */
|
|
#define SYS_MFP_P24_GPIO 0x00000000UL
|
#define SYS_MFP_P24_SPI1_MISO 0x00000010UL
|
#define SYS_MFP_P24_UART1_RX 0x00001000UL
|
#define SYS_MFP_P24_PWM_CH2 0x00001010UL
|
#define SYS_MFP_P24_TIMER1_CNT_OUT 0x00100000UL
|
#define SYS_MFP_P24_MDM_DBG_4 0x00100010UL
|
#define SYS_MFP_P24_RESERVED 0x00101000UL
|
#define SYS_MFP_P24_RESERVED1 0x00101010UL
|
#define SYS_MFP_P24_Msk 0x00101010UL /* func act as ADC CH6 & DFT QP if io is in analog mode */
|
|
#define SYS_MFP_P25_GPIO 0x00000000UL
|
#define SYS_MFP_P25_SPI1_MOSI 0x00000020UL
|
#define SYS_MFP_P25_UART1_TX 0x00002000UL
|
#define SYS_MFP_P25_PWM_CH3 0x00002020UL
|
#define SYS_MFP_P25_MDM_DBG_5 0x00200000UL
|
#define SYS_MFP_P25_RESERVED 0x00200020UL
|
#define SYS_MFP_P25_I2C0_SDA 0x00202000UL
|
#define SYS_MFP_P25_RESERVED1 0x00202020UL
|
#define SYS_MFP_P25_Msk 0x00202020UL /* func act as ADC CH7 & DFT QN if io is in analog mode */
|
|
#define SYS_MFP_P26_GPIO 0x00000000UL
|
#define SYS_MFP_P26_UART1_RTS 0x00000040UL
|
#define SYS_MFP_P26_PWM_CH4 0x00004000UL
|
#define SYS_MFP_P26_SPI1_CS 0x00004040UL
|
#define SYS_MFP_P26_MDM_DBG_4 0x00400000UL
|
#define SYS_MFP_P26_MDM_DBG_10 0x00400040UL
|
#define SYS_MFP_P26_RESERVED 0x00404000UL
|
#define SYS_MFP_P26_RESERVED1 0x00404040UL
|
#define SYS_MFP_P26_Msk 0x00404040UL
|
|
#define SYS_MFP_P27_GPIO 0x00000000UL
|
#define SYS_MFP_P27_UART1_CTS 0x00000080UL
|
#define SYS_MFP_P27_PWM_CH5 0x00008000UL
|
#define SYS_MFP_P27_SPI1_CLK 0x00008080UL
|
#define SYS_MFP_P27_RESERVED 0x00800000UL
|
#define SYS_MFP_P27_MDM_DBG_20 0x00800080UL
|
#define SYS_MFP_P27_XTH 0x00808000UL
|
#define SYS_MFP_P27_RESERVED1 0x00808080UL
|
#define SYS_MFP_P27_Msk 0x00808080UL
|
|
/*P3*/
|
#define SYS_MFP_P30_GPIO 0x00000000UL
|
#define SYS_MFP_P30_UART1_RX 0x00000001UL
|
#define SYS_MFP_P30_PWM_CH6 0x00000100UL
|
#define SYS_MFP_P30_SPI1_MISO 0x00000101UL
|
#define SYS_MFP_P30_MDM_DBG_10 0x00010000UL
|
#define SYS_MFP_P30_RESERVED 0x00010001UL
|
#define SYS_MFP_P30_RESERVED1 0x00010100UL
|
#define SYS_MFP_P30_RESERVED2 0x00010101UL
|
#define SYS_MFP_P30_Msk 0x00010101UL
|
|
#define SYS_MFP_P31_GPIO 0x00000000UL
|
#define SYS_MFP_P31_UART1_TX 0x00000002UL
|
#define SYS_MFP_P31_PWM_CH7 0x00000200UL
|
#define SYS_MFP_P31_SPI1_MOSI 0x00000202UL
|
#define SYS_MFP_P31_RESERVED 0x00020000UL
|
#define SYS_MFP_P31_RESERVED1 0x00020002UL
|
#define SYS_MFP_P31_RESERVED2 0x00020200UL
|
#define SYS_MFP_P31_RESERVED3 0x00020202UL
|
#define SYS_MFP_P31_Msk 0x00020202UL
|
/* @}*///end of group MULTI_FUNC_FLAG
|
|
/**
|
* @brief Set pin function
|
* @param[in] Port GPIO port number.
|
* @param[in] Bit The single or multiple pins of specified gpio port.
|
* @param[in] Func pin function
|
* @return None
|
*/
|
#define SYS_SET_MFP(Port, Bit, Func) \
|
(SYS->Port##_MFP = (SYS->Port##_MFP & ~SYS_MFP_##Port##Bit##_Msk) | SYS_MFP_##Port##Bit##_##Func)
|
|
|
|
|
/**
|
* @brief Disable register write-protection function
|
* @param None
|
* @return None
|
* @details This function disable register write-protection function.
|
* To unlock the protected register to allow write access.
|
*/
|
__STATIC_INLINE void SYS_UnlockReg(void)
|
{
|
do
|
{
|
SYS->REGLCTL = 0x59;
|
SYS->REGLCTL = 0x16;
|
SYS->REGLCTL = 0x88;
|
}
|
while(SYS->REGLCTL == 0);
|
}
|
|
/**
|
* @brief Enable register write-protection function
|
* @return None
|
* @details This function is used to enable register write-protection function.
|
* To lock the protected register to forbid write access.
|
*/
|
__STATIC_INLINE void SYS_LockReg(void)
|
{
|
// (Workaround) To insure write-protected reg
|
// is succefully wrote before lock
|
#if 1
|
__NOP();__NOP();__NOP();__NOP();__NOP();
|
#else
|
__ISB();
|
#endif
|
SYS->REGLCTL = 0;
|
}
|
|
/**
|
* @brief This function check register write-protection bit setting
|
* @return 0: Write-protection function is disabled.
|
* 1: Write-protection function is enabled.
|
*/
|
uint32_t SYS_IsRegLocked(void);
|
|
/**
|
* @brief Set delay time
|
* @param[in] u32NopCnt nop count.
|
* @return None
|
*/
|
void SYS_delay_10nop(uint32_t u32NopCnt);
|
|
/*@}*/
|
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif //__PAN_SYS_H__
|