Mercurial > ecos
changeset 2510:0c2a776fc7f4
* src/ea2468_misc.c: Added hal_lpc_can_init() to initialize CAN
channels
* include/plf_io.h: Added HAL_LPC2XXX_INIT_CAN() macro for CAN channel
initialisation
| author | asl |
|---|---|
| date | Fri, 25 Jul 2008 11:13:36 +0000 |
| parents | a52d470bc691 |
| children | 1f18f909a18e |
| files | packages/hal/arm/lpc24xx/ea2468/current/ChangeLog packages/hal/arm/lpc24xx/ea2468/current/cdl/hal_arm_lpc24xx_ea2468.cdl packages/hal/arm/lpc24xx/ea2468/current/include/plf_io.h packages/hal/arm/lpc24xx/ea2468/current/src/ea2468_misc.c |
| diffstat | 4 files changed, 54 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/arm/lpc24xx/ea2468/current/ChangeLog +++ b/packages/hal/arm/lpc24xx/ea2468/current/ChangeLog @@ -1,3 +1,10 @@ +2008-07-21 Uwe Kindler <uwe_kindler@web.de> + + * src/ea2468_misc.c: Added hal_lpc_can_init() to initialize CAN + channels + * include/plf_io.h: Added HAL_LPC2XXX_INIT_CAN() macro for CAN channel + initialisation + 2008-07-06 Uwe Kindler <uwe_kindler@web.de> * Initial release of Embedded Artists LPC2468 OEM board package
--- a/packages/hal/arm/lpc24xx/ea2468/current/cdl/hal_arm_lpc24xx_ea2468.cdl +++ b/packages/hal/arm/lpc24xx/ea2468/current/cdl/hal_arm_lpc24xx_ea2468.cdl @@ -134,7 +134,8 @@ cdl_package CYGPKG_HAL_ARM_LPC24XX_EA246 channel, UART0, ist routed to an USB-to-serial bridge and the second channel, UART1, is available on the Sub-D9 RS232 connector. This option chooses which channel will be - used to connect to a host running GDB." } + used to connect to a host running GDB." + } cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD { display "GDB serial port baud rate"
--- a/packages/hal/arm/lpc24xx/ea2468/current/include/plf_io.h +++ b/packages/hal/arm/lpc24xx/ea2468/current/include/plf_io.h @@ -60,6 +60,16 @@ extern void hal_plf_hardware_init(void); #define HAL_PLF_HARDWARE_INIT() \ hal_plf_hardware_init() + +//----------------------------------------------------------------------------- +// LPX24xx variant specific initialisation of CAN channels +// This function configures the pin functions for CAN use +//----------------------------------------------------------------------------- +#ifdef CYGPKG_DEVS_CAN_LPC2XXX +externC void hal_lpc_can_init(cyg_uint8 can_chan_no); +#define HAL_LPC2XXX_INIT_CAN(_can_chan_no_) hal_lpc_can_init(_can_chan_no_) +#endif // CYGPKG_DEVS_CAN_LPC2XXX + #endif //__ASSEMBLER__ //-----------------------------------------------------------------------------
--- a/packages/hal/arm/lpc24xx/ea2468/current/src/ea2468_misc.c +++ b/packages/hal/arm/lpc24xx/ea2468/current/src/ea2468_misc.c @@ -58,6 +58,7 @@ #include <cyg/hal/hal_io.h> // IO macros #include <cyg/infra/cyg_type.h> // base types +#include <cyg/infra/cyg_ass.h> // assertion macros #include <cyg/hal/var_io.h> #include <cyg/hal/plf_io.h> #include <pkgconf/hal.h> @@ -160,7 +161,7 @@ void hal_pll_init(void) // Enable PLL, disconnected // HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PLLCON, - CYGARC_HAL_LPC24XX_REG_PLLCON_PLLE); + CYGARC_HAL_LPC24XX_REG_PLLCON_PLLE); HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PLLFEED, 0xaa); HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PLLFEED, 0x55); } @@ -255,7 +256,7 @@ void hal_pll_init(void) //=========================================================================== -// hal_mem_init - initalize external memory interface +// hal_mem_init - initialize external memory interface //=========================================================================== void hal_mem_init(void) { @@ -428,5 +429,37 @@ void hal_lpc24xx_set_leds (int mask) // } + +#ifdef CYGPKG_DEVS_CAN_LPC2XXX +//=========================================================================== +// Configure CAN pins +//=========================================================================== +void hal_lpc_can_init(cyg_uint8 can_chan_no) +{ + CYG_ASSERT(can_chan_no < 2, "CAN channel number out of bounds"); + + cyg_uint32 pinsel0_val; + cyg_uint32 pconp_val; + HAL_READ_UINT32(PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL0, pinsel0_val); + HAL_READ_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PCONP, pconp_val); + switch (can_chan_no) + { + case 0: + CYGARC_HAL_LPC24XX_SET_PIN_FUN(pinsel0_val, 0, 1); + CYGARC_HAL_LPC24XX_SET_PIN_FUN(pinsel0_val, 1, 1); + pconp_val |= CYGARC_HAL_LPC24XX_REG_PCONP_CAN1; + break; + + case 1: + CYGARC_HAL_LPC24XX_SET_PIN_FUN(pinsel0_val, 4, 2); + CYGARC_HAL_LPC24XX_SET_PIN_FUN(pinsel0_val, 5, 2); + pconp_val |= CYGARC_HAL_LPC24XX_REG_PCONP_CAN2; + break; + } + HAL_WRITE_UINT32(PIN_BASE + CYGARC_HAL_LPC24XX_REG_PINSEL0, pinsel0_val); + HAL_WRITE_UINT32(SCB_BASE + CYGARC_HAL_LPC24XX_REG_PCONP, pconp_val); +} +#endif // #ifdef CYGPKG_DEVS_CAN_LPC2XXX + //-------------------------------------------------------------------------- // EOF ea2468_misc.c
