mirror of
https://github.com/apache/nuttx.git
synced 2026-05-19 20:06:24 +08:00
arch/arm/xmc4 : various fixes and clean
- Fix EtherCAT signals drive strengh (from errata PORTS_CM.H002), caused bus faults. - Changed xmc4_ecat.c for compile time pin definition. - Fixed xmc4_ecat.c register not written (reset value already used). - Removed EXTCLK for xmc4800 as pin is used for ECAT. - Clean xmc4 familly board.h and clocks config. Signed-off-by: adriendesp <adrien.desproges@gmail.com>
This commit is contained in:
@@ -376,13 +376,13 @@
|
||||
#define GPIO_EBU_SDCLKO_2 (GPIO_OUTPUT | GPIO_PINCTRL_HW0 | GPIO_PORT6 | GPIO_PIN4)
|
||||
#define GPIO_EBU_WAIT (GPIO_INPUT | GPIO_PINCTRL_HW1 | GPIO_PORT3 | GPIO_PIN3)
|
||||
|
||||
#define GPIO_ECAT_CONF_OUTPUT GPIO_OUTPUT | GPIO_OUTPUT_PUSHPULL | GPIO_PINCTRL_SOFTWARE | GPIO_OUTPUT_CLEAR
|
||||
#define GPIO_ECAT_CLK_25_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN0 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_CLK_25_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN13 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_CONF_OUTPUT (GPIO_OUTPUT | GPIO_OUTPUT_PUSHPULL | GPIO_PINCTRL_SOFTWARE | GPIO_OUTPUT_CLEAR)
|
||||
#define GPIO_ECAT_CLK_25_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN0 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_CLK_25_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN13 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_LED_RUN (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN8 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_LED_ERR (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN7 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_MCLK (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT3 | GPIO_PIN3 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_MDO (GPIO_INPUT | GPIO_PORT0 | GPIO_PIN12)
|
||||
#define GPIO_ECAT_MCLK (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT3 | GPIO_PIN3 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_MDO (GPIO_INPUT | GPIO_PINCTRL_HW1 | GPIO_PORT0 | GPIO_PIN12)
|
||||
#define GPIO_ECAT_P0_LED_LINK_ACT_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN3 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_LED_LINK_ACT_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN12 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_LINK_STATUS (GPIO_INPUT | GPIO_PORT1 | GPIO_PIN15)
|
||||
@@ -401,16 +401,16 @@
|
||||
#define GPIO_ECAT_P0_RX_ERR (GPIO_INPUT | GPIO_PORT2 | GPIO_PIN6)
|
||||
#define GPIO_ECAT_P0_TX_CLK_1 (GPIO_INPUT | GPIO_PORT5 | GPIO_PIN5)
|
||||
#define GPIO_ECAT_P0_TX_CLK_2 (GPIO_INPUT | GPIO_PORT1 | GPIO_PIN0)
|
||||
#define GPIO_ECAT_P0_TXD0_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN2 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD0_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN6 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD1_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN4 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD1_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN7 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD2_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN5 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD2_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN8 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD3_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN6 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD3_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN2 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TX_EN_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT6 | GPIO_PIN1 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TX_EN_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT1 | GPIO_PIN3 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD0_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN2 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD0_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN6 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD1_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN4 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD1_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN7 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD2_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN5 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD2_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN8 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TXD3_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN6 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TXD3_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN2 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P0_TX_EN_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT6 | GPIO_PIN1 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P0_TX_EN_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT1 | GPIO_PIN3 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_LED_LINK_ACT_1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT3 | GPIO_PIN12 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_LED_LINK_ACT_2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN11 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_LINK_STATUS_1 (GPIO_INPUT | GPIO_PORT3 | GPIO_PIN4)
|
||||
@@ -430,11 +430,11 @@
|
||||
#define GPIO_ECAT_P1_RX_ERR_1 (GPIO_INPUT | GPIO_PORT15 | GPIO_PIN2)
|
||||
#define GPIO_ECAT_P1_RX_ERR_2 (GPIO_INPUT | GPIO_PORT3 | GPIO_PIN5)
|
||||
#define GPIO_ECAT_P1_TX_CLK (GPIO_INPUT | GPIO_PORT0 | GPIO_PIN10)
|
||||
#define GPIO_ECAT_P1_TXD0 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT3 | GPIO_PIN1 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_P1_TXD1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT3 | GPIO_PIN2 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_P1_TXD2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT0 | GPIO_PIN2 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_TXD3 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT0 | GPIO_PIN3 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_TX_EN (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSHARP | GPIO_PORT3 | GPIO_PIN0 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_P1_TXD0 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT3 | GPIO_PIN1 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_P1_TXD1 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT3 | GPIO_PIN2 | GPIO_OUTPUT_ALT3)
|
||||
#define GPIO_ECAT_P1_TXD2 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN2 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_TXD3 (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN3 | GPIO_OUTPUT_ALT1)
|
||||
#define GPIO_ECAT_P1_TX_EN (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT3 | GPIO_PIN0 | GPIO_OUTPUT_ALT4)
|
||||
#define GPIO_ECAT_PHY_RESET (GPIO_ECAT_CONF_OUTPUT | GPIO_PADA2_STRONGSOFT | GPIO_PORT0 | GPIO_PIN0 | GPIO_OUTPUT_ALT1)
|
||||
|
||||
#define GPIO_ERU0_0A0 (GPIO_INPUT | GPIO_PORT0 | GPIO_PIN1)
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
#define SCU_ECAT0CON_PHY_OFFSET (1 << SCU_ECAT0CON_PHY_OFFSET_SHIFT)
|
||||
|
||||
#define SCU_ECAT0CON_ECATRSTEN_SHIFT (0)
|
||||
#define SCU_ECAT0CON_ECATRSTEN (0 << SCU_ECAT0CON_ECATRSTEN_SHIFT)
|
||||
#define SCU_ECAT0CON_ECATRSTEN (1 << SCU_ECAT0CON_ECATRSTEN_SHIFT)
|
||||
|
||||
/* Port 0 */
|
||||
#define SCU_ECAT0CON_RXD0_SHIFT (0)
|
||||
@@ -1097,6 +1097,12 @@
|
||||
#define SCU_DSLEEPCR_CCUCR (1 << 20) /* Bit 20: CCU Clock Control in Deep Sleep Mod */
|
||||
#define SCU_DSLEEPCR_WDTCR (1 << 21) /* Bit 21: WDT Clock Control in Deep Sleep Mode */
|
||||
|
||||
/* EtherCAT clocking */
|
||||
#define SCU_ECATCLKCR_ECADIV_SHIFT (0) /* Bit 0-1: EtherCAT Clock Divider Value */
|
||||
#define SCU_ECATCLKCR_ECATSEL_SHIFT (16) /* Bit 16: EtherCAT Clock Selection Value */
|
||||
# define SCU_ECATCLKCR_ECATSEL_FPLLUSB (0 << SCU_ECATCLKCR_ECATSEL_SHIFT)
|
||||
# define SCU_ECATCLKCR_ECATSEL_FPLL (1 << SCU_ECATCLKCR_ECATSEL_SHIFT)
|
||||
|
||||
/* Peripheral 0 Clock Gating Status, Peripheral 0 Clock Gating Set,
|
||||
* Peripheral 0 Clock Gating Clear
|
||||
*/
|
||||
|
||||
@@ -414,11 +414,13 @@ void xmc4_clock_configure(void)
|
||||
putreg32(USBCLKCR_VALUE | USB_DIV, XMC4_SCU_USBCLKCR);
|
||||
#endif
|
||||
|
||||
#if BOARD_EXTCKL_ENABLE
|
||||
/* Setup EXT */
|
||||
|
||||
regval = (BOARD_EXT_SOURCE << SCU_EXTCLKCR_ECKSEL_SHIFT);
|
||||
regval |= SCU_EXTCLKCR_ECKDIV(BOARD_PLL_ECKDIV);
|
||||
putreg32(regval, XMC4_SCU_EXTCLKCR);
|
||||
#endif
|
||||
|
||||
#if BOARD_ENABLE_PLL
|
||||
/* PLL frequency stepping... */
|
||||
@@ -528,8 +530,8 @@ void xmc4_clock_configure(void)
|
||||
|
||||
/* Setup Divider settings for USB PLL */
|
||||
|
||||
regval = (SCU_USBPLLCON_NDIV(BOARD_USB_NDIV) |
|
||||
SCU_USBPLLCON_PDIV(BOARD_USB_PDIV));
|
||||
regval = (SCU_USBPLLCON_NDIV(BOARD_USBPLL_NDIV) |
|
||||
SCU_USBPLLCON_PDIV(BOARD_USBPLL_PDIV));
|
||||
putreg32(regval, XMC4_SCU_USBPLLCON);
|
||||
|
||||
/* Set OSCDISCDIS */
|
||||
|
||||
+300
-570
File diff suppressed because it is too large
Load Diff
@@ -125,7 +125,7 @@
|
||||
* .... .... ..CC ..... .... .... .... ....
|
||||
*/
|
||||
|
||||
#define GPIO_PINCTRL_SHIFT (20) /* Bits 20-21: Pad driver strength */
|
||||
#define GPIO_PINCTRL_SHIFT (20) /* Bits 20-21: Pin Control */
|
||||
#define GPIO_PINCTRL_MASK (3 << GPIO_PINCTRL_SHIFT)
|
||||
|
||||
/* See chip/xmc4_ports.h for the PDR definitions */
|
||||
|
||||
@@ -101,13 +101,13 @@
|
||||
|
||||
/* 120 MHz
|
||||
*
|
||||
* fVCO = 12MHz * 40 / 2 = 480MHz
|
||||
* fPLL = 480MHz / 2 = 240MHz
|
||||
* fSYS = fPLL / 2 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPB = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
* fVCO = 12MHz * 40 / 1 = 480MHz
|
||||
* fPLL = 480MHz / 4 = 120MHz
|
||||
* fSYS = fPLL / 1 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPERIPH = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
*/
|
||||
|
||||
# define BOARD_PLL_NDIV 40
|
||||
@@ -160,9 +160,6 @@
|
||||
# define BOARD_WDTDIV 1
|
||||
# define BOARD_WDT_FREQUENCY 24000000
|
||||
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
# define kHz_1 1000
|
||||
# define MHz_1 (kHz_1 * kHz_1)
|
||||
# define MHz_50 ( 50 * MHz_1)
|
||||
@@ -206,12 +203,10 @@
|
||||
# define EXTCLK_PIN_P1_15 15
|
||||
# define BOARD_EXTCLK_PIN EXTCLK_PIN_P0_8
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_EXT_FREQUENCY (250 * kHz_1) /* Desired output freq */
|
||||
# define BOARD_EXTDIV (BOARD_PLL_FREQUENCY / BOARD_EXT_FREQUENCY)
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
/* range check EXTDIV */
|
||||
|
||||
# if BOARD_EXTDIV > 512
|
||||
# if BOARD_PLL_ECKDIV > 512
|
||||
# error "EXTCLK Divisor out of range!"
|
||||
# endif
|
||||
#endif
|
||||
@@ -235,8 +230,8 @@
|
||||
*/
|
||||
|
||||
#undef BOARD_ENABLE_USBPLL
|
||||
#define BOARD_USB_PDIV 2
|
||||
#define BOARD_USB_NDIV 64
|
||||
#define BOARD_USBPLL_PDIV 2
|
||||
#define BOARD_USBPLL_NDIV 64
|
||||
|
||||
/* FLASH wait states */
|
||||
|
||||
|
||||
@@ -97,13 +97,13 @@
|
||||
|
||||
/* 120 MHz
|
||||
*
|
||||
* fVCO = 12MHz * 40 / 2 = 480MHz
|
||||
* fPLL = 480MHz / 2 = 240MHz
|
||||
* fSYS = fPLL / 2 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPB = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
* fVCO = 12MHz * 40 / 1 = 480MHz
|
||||
* fPLL = 480MHz / 4 = 120MHz
|
||||
* fSYS = fPLL / 1 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPERIPH = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
*/
|
||||
|
||||
# define BOARD_PLL_NDIV 40
|
||||
@@ -156,9 +156,6 @@
|
||||
# define BOARD_WDTDIV 1
|
||||
# define BOARD_WDT_FREQUENCY 24000000
|
||||
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
# define kHz_1 1000
|
||||
# define MHz_1 (kHz_1 * kHz_1)
|
||||
# define MHz_50 ( 50 * MHz_1)
|
||||
@@ -202,12 +199,10 @@
|
||||
# define EXTCLK_PIN_P1_15 15
|
||||
# define BOARD_EXTCLK_PIN EXTCLK_PIN_P0_8
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_EXT_FREQUENCY (250 * kHz_1) /* Desired output freq */
|
||||
# define BOARD_EXTDIV (BOARD_PLL_FREQUENCY / BOARD_EXT_FREQUENCY)
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
/* range check EXTDIV */
|
||||
|
||||
# if BOARD_EXTDIV > 512
|
||||
# if BOARD_PLL_ECKDIV > 512
|
||||
# error "EXTCLK Divisor out of range!"
|
||||
# endif
|
||||
#endif
|
||||
@@ -224,15 +219,16 @@
|
||||
|
||||
/* USB PLL settings.
|
||||
*
|
||||
* fUSBPLL = 48MHz and fUSBPLLVCO = 384 MHz
|
||||
* fUSBPLL = fXTAL * N / 2P = 192MHz
|
||||
* fUSB = fUSBPLL / USBDIV = 192MHz / 4 = 48 MHz
|
||||
*
|
||||
* Note: Implicit divider of 2 and fUSBPLLVCO >= 260 MHz and
|
||||
* fUSBPLLVCO <= 520 MHz
|
||||
*/
|
||||
|
||||
#undef BOARD_ENABLE_USBPLL
|
||||
#define BOARD_USB_PDIV 2
|
||||
#define BOARD_USB_NDIV 64
|
||||
#define BOARD_USBPLL_PDIV 2
|
||||
#define BOARD_USBPLL_NDIV 64
|
||||
|
||||
/* FLASH wait states */
|
||||
|
||||
@@ -301,7 +297,7 @@
|
||||
#define BUTTON_0_BIT (1 << BUTTON_0)
|
||||
#define BUTTON_1_BIT (1 << BUTTON_1)
|
||||
|
||||
/* USIC0 ********************************************************************/
|
||||
/* USIC *********************************************************************/
|
||||
|
||||
/* USIC0 CH0 is used as UART0
|
||||
*
|
||||
|
||||
@@ -91,19 +91,17 @@
|
||||
#define BOARD_ENABLE_PLL 1 /* enable the PLL */
|
||||
#define CPU_FREQ 120 /* MHz */
|
||||
|
||||
/* TODO: Automate PLL calculations */
|
||||
|
||||
#if CPU_FREQ == 120
|
||||
|
||||
/* 120 MHz
|
||||
*
|
||||
* fVCO = 12MHz * 40 / 2 = 480MHz
|
||||
* fPLL = 480MHz / 2 = 240MHz
|
||||
* fSYS = fPLL / 2 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPB = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
* fVCO = 12MHz * 40 / 1 = 480MHz
|
||||
* fPLL = 480MHz / 4 = 120MHz
|
||||
* fSYS = fPLL / 1 = 120MHz
|
||||
* fCCU = fSYS / 2 = 60MHz
|
||||
* fCPU = fSYS / 1 = 120MHz
|
||||
* fPERIPH = fCPU / 2 = 60MHz
|
||||
* fETH = fSYS / 2 = 60MHz
|
||||
*/
|
||||
|
||||
# define BOARD_PLL_NDIV 40
|
||||
@@ -156,9 +154,6 @@
|
||||
# define BOARD_WDTDIV 1
|
||||
# define BOARD_WDT_FREQUENCY 24000000
|
||||
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
# define kHz_1 1000
|
||||
# define MHz_1 (kHz_1 * kHz_1)
|
||||
# define MHz_50 ( 50 * MHz_1)
|
||||
@@ -195,19 +190,17 @@
|
||||
|
||||
/* EXT clock settings */
|
||||
|
||||
#define BOARD_EXTCKL_ENABLE 1 /* 0 disables output */
|
||||
#define BOARD_EXTCKL_ENABLE 0 /* 0 disables output, P0.12 taken by ECAT */
|
||||
|
||||
#if BOARD_EXTCKL_ENABLE
|
||||
# define EXTCLK_PIN_P0_8 8
|
||||
# define EXTCLK_PIN_P1_15 15
|
||||
# define BOARD_EXTCLK_PIN EXTCLK_PIN_P0_8
|
||||
# define BOARD_EXT_SOURCE EXT_CLKSRC_FPLL
|
||||
# define BOARD_EXT_FREQUENCY (250 * kHz_1) /* Desired output freq */
|
||||
# define BOARD_EXTDIV (BOARD_PLL_FREQUENCY / BOARD_EXT_FREQUENCY)
|
||||
# define BOARD_PLL_ECKDIV 480 /* [1,512] */
|
||||
|
||||
/* range check EXTDIV */
|
||||
|
||||
# if BOARD_EXTDIV > 512
|
||||
# if BOARD_PLL_ECKDIV > 512
|
||||
# error "EXTCLK Divisor out of range!"
|
||||
# endif
|
||||
#endif
|
||||
@@ -224,15 +217,27 @@
|
||||
|
||||
/* USB PLL settings.
|
||||
*
|
||||
* fUSBPLL = 48MHz and fUSBPLLVCO = 384 MHz
|
||||
* fUSBPLLVCO = fXTAL * N / P = 12M * 100 / 3 = 400MHz
|
||||
* fUSBPLL = fUSBPLLVCO / 2 = 200MHz
|
||||
*
|
||||
* Note: Implicit divider of 2 and fUSBPLLVCO >= 260 MHz and
|
||||
* fUSBPLLVCO <= 520 MHz
|
||||
*/
|
||||
|
||||
#define BOARD_ENABLE_USBPLL
|
||||
#define BOARD_USB_PDIV 3
|
||||
#define BOARD_USB_NDIV 100
|
||||
#define BOARD_ENABLE_USBPLL
|
||||
#define BOARD_USBPLL_PDIV 3
|
||||
#define BOARD_USBPLL_NDIV 100
|
||||
|
||||
/* ECAT clock
|
||||
*
|
||||
* fECAT = fUSBPLL / (ECATDIV + 1) = 200M / 2 = 100MHz
|
||||
*/
|
||||
|
||||
#define BOARD_ECAT_DIV 1
|
||||
|
||||
# if BOARD_ECAT_DIV > 3
|
||||
# error "ECADIV out of range! [0-3]"
|
||||
# endif
|
||||
|
||||
/* FLASH wait states */
|
||||
|
||||
@@ -301,7 +306,7 @@
|
||||
#define BUTTON_0_BIT (1 << BUTTON_0)
|
||||
#define BUTTON_1_BIT (1 << BUTTON_1)
|
||||
|
||||
/* USIC0 ********************************************************************/
|
||||
/* Peripherals definitions **************************************************/
|
||||
|
||||
/* USIC0 CH0 is used as UART0
|
||||
*
|
||||
@@ -325,7 +330,9 @@
|
||||
#define GPIO_SPI4_MISO (GPIO_U2C0_DX0C)
|
||||
#define GPIO_SPI4_SCLK (GPIO_U2C0_SCLKOUT_1 | GPIO_PADA2_STRONGMEDIUM)
|
||||
|
||||
/* ECAT0 configuration */
|
||||
/* ECAT0 configuration
|
||||
* See XMC4800 Relax Board user manual for associated pinout.
|
||||
*/
|
||||
|
||||
#define ECAT_CLK_25 GPIO_ECAT_CLK_25_1
|
||||
#define ECAT_LED_ERR GPIO_ECAT_LED_ERR
|
||||
|
||||
Reference in New Issue
Block a user