/** * @file * @ingroup arm_rtl22xx * @brief Global BSP definitions. */ /* * Philips LPC22XX/LPC21xx BSP header file * * by Ray,Xu * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.org/license/LICENSE. */ #ifndef _BSP_H #define _BSP_H #include #include /** * @defgroup arm_rtl22xx RTL22XX Support * @ingroup bsp_arm * @brief RTL22XX Support Package * @{ */ #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define BSP_FEATURE_IRQ_EXTENSION #define CONFIG_ARM_CLK 60000000L /* cclk=cco/(2*P) */ /* cco = cclk*2*P */ /** @brief system clk frequecy,<=60Mhz, defined in system configuration */ #define LPC22xx_Fcclk CONFIG_ARM_CLK /* Fcco 156M~320Mhz*/ /** @brief system clk frequecy,<=60Mhz, defined in system configuration */ #define LPC22xx_Fcclk CONFIG_ARM_CLK #define LPC22xx_Fcco LPC22xx_Fcclk * 4 /** @brief VPB clk frequency,1,1/2,1/4 times of Fcclk */ #define LPC22xx_Fpclk (LPC22xx_Fcclk /4) *1 /** * @name Fcclk range: 10MHz ~ MCU allowed frequency * @{ */ #define Fcclk_MIN 10000000L #define Fcclk_MAX 60000000L /** @} */ /** * @name Fcco range: 156MHz ~ 320MHz * @{ */ #define Fcco_MIN 156000000L #define Fcco_MAX 320000000L /** @} */ #define PLLFEED_DATA1 0xAA #define PLLFEED_DATA2 0x55 /** * @name PLL PLLCON register bit descriptions * @{ */ #define PLLCON_ENABLE_BIT 0 #define PLLCON_CONNECT_BIT 1 /** @} */ /** * @name PLL PLLSTAT register bit descriptions * @{ */ #define PLLSTAT_ENABLE_BIT 8 #define PLLSTAT_CONNECT_BIT 9 #define PLLSTAT_LOCK_BIT 10 /** @} */ /** * @name PM Peripheral Type * @{ */ #define PC_TIMER0 0x2 #define PC_TIMER1 0x4 #define PC_UART0 0x8 #define PC_UART1 0x10 #define PC_PWM0 0x20 #define PC_I2C 0x80 #define PC_SPI0 0x100 #define PC_RTC 0x200 /** @} */ /** @brief OSC [Hz] */ #define FOSC 11059200 /** @brief Core clk [Hz] */ #define FCCLK FOSC<<2 /** * @name System Configure * @{ */ /** @brief osc freq,10MHz~25MHz, change to a real one if needed */ #define Fosc 11059200 /** @brief system freq 2^n time of Fosc(1~32) <=60MHZ */ #define Fcclk (Fosc << 2) /** @brief CCO freq 2,4,8,16 time of Fcclk 156MHz~320MHz */ #define Fcco (Fcclk <<2) /** @brief VPB freq only(Fcclk / 4) 1~4 */ #define Fpclk (Fcclk >>2) * 1 /* This was M. That is a BAD BAD public constant. I renamed it to * JOEL_M so it wouldn't conflict with user code. If you can find * a better name, fix this. But nothing I found uses it. */ /** @} */ #define JOEL_M Fcclk / Fosc #define P_min Fcco_MIN / (2*Fcclk) + 1; #define P_max Fcco_MAX / (2*Fcclk); #define UART_BPS 115200 /** @brief Time Precision time [us] */ #define TIMER_PRECISION 10 /** @brief I2C Speed [bit/s] */ #define I2CSPEED 20000 // 20 Kbit/s /** * @name Uarts buffers size * @{ */ #define RXBUFSIZE 32 #define TXBUFSIZE 32 /** @} */ /** @brief SPI Speed [bit/s] */ #define SPISPEED 1500000 // 1.5 Mbit/s /** @brief SPI EEPROM CS pin * * (SSEL is not suitable for CS, because is used by SPI module for multi master SPI interface) */ #define SPI_CS_PIN P0_13 #define SPI_CS_PIN_FUNC PINSEL0_bit.SPI_CS_PIN /** * @name Flash definition * @{ */ //#define FLASH_SIZE (0x200000-FLASH_BOOT) // Total area of Flash region in words 8 bit /** @brief Total area of Flash region in words 8 bit */ #define FLASH_SIZE (0x80000-FLASH_BOOT) //#define FLASH_SIZE (0x80000-FLASH_BOOT) // Total area of Flash region in words 8 bit #define FLASH_BEGIN 0x80000000 /** @brief First 0x8000 bytes reserved for boot loader etc. */ #define FLASH_BASE (FLASH_BEGIN+FLASH_BOOT) /** @} */ /** * @name SRAM definition * @{ */ /** @brief Total area of Flash region in words 8 bit */ #define SRAM_SIZE 0x100000 /** @brief First 0x8000 bytes reserved for boot loader etc. */ #define SRAM_BASE 0x81000000 /** @} */ /** @brief CS8900A definition */ #define CS8900A_BASE 0x82000000 /** @brief RTL8019AS definition */ #define RTL8019AS_BASE 0x82000000 struct rtems_bsdnet_ifconfig; int cs8900_driver_attach (struct rtems_bsdnet_ifconfig *config, int attaching); /** * @name Network driver configuration * @{ */ #define RTEMS_BSP_NETWORK_DRIVER_NAME "eth0" #define RTEMS_BSP_NETWORK_DRIVER_ATTACH cs8900_driver_attach /** @} */ /* * Prototypes for methods used across file boundaries in the BSP. */ extern void UART0_Ini(void); /** @} */ #ifdef __cplusplus } #endif #endif /* _BSP_H */