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:
adriendesp
2025-12-02 10:20:17 +01:00
committed by Xiang Xiao
parent 2b39147fe2
commit ec04ef9ccf
8 changed files with 387 additions and 651 deletions
+20 -20
View File
@@ -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)
+7 -1
View File
@@ -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
*/
+4 -2
View File
@@ -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 */
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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 */
+11 -16
View File
@@ -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 */
+14 -18
View File
@@ -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
*
+30 -23
View File
@@ -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