From aac691f35fc7090baa51e31d80aab4f495ddcaa3 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 6 Dec 2009 10:25:53 +0000 Subject: STM32 CAN driver completed, HAL stress test demo added. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1377 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/STM32/can_lld.c | 5 +---- os/hal/platforms/STM32/can_lld.h | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'os') diff --git a/os/hal/platforms/STM32/can_lld.c b/os/hal/platforms/STM32/can_lld.c index 26cbadc43..7a9970c30 100644 --- a/os/hal/platforms/STM32/can_lld.c +++ b/os/hal/platforms/STM32/can_lld.c @@ -58,7 +58,7 @@ CH_IRQ_HANDLER(Vector8C) { CH_IRQ_PROLOGUE(); /* No more events until a message is transmitted.*/ - CAN1->IER &= ~CAN_IER_TMEIE; + CAN1->TSR = CAN_TSR_RQCP0 | CAN_TSR_RQCP1 | CAN_TSR_RQCP2; chEvtBroadcastI(&CAND1.cd_txempty_event); CH_IRQ_EPILOGUE(); @@ -299,9 +299,6 @@ void can_lld_transmit(CANDriver *canp, const CANTxFrame *ctfp) { tmbp->TDLR = ctfp->cf_data32[0]; tmbp->TDHR = ctfp->cf_data32[1]; tmbp->TIR = tir | CAN_TI0R_TXRQ; - - /* Re-enables the interrupt in order to generate events again.*/ - canp->cd_can->IER |= CAN_IER_TMEIE; } /** diff --git a/os/hal/platforms/STM32/can_lld.h b/os/hal/platforms/STM32/can_lld.h index b7dff8ced..49498ef7b 100644 --- a/os/hal/platforms/STM32/can_lld.h +++ b/os/hal/platforms/STM32/can_lld.h @@ -29,6 +29,15 @@ #if CH_HAL_USE_CAN || defined(__DOXYGEN__) +/* + * The following macros from the ST header file are replaced with better + * equivalents. + */ +#undef CAN_BTR_BRP +#undef CAN_BTR_TS1 +#undef CAN_BTR_TS2 +#undef CAN_BTR_SJW + /*===========================================================================*/ /* Driver constants. */ /*===========================================================================*/ @@ -48,6 +57,17 @@ #define CAN_MAX_FILTERS 14 #endif +#define CAN_BTR_BRP(n) (n) /**< @brief BRP field macro.*/ +#define CAN_BTR_TS1(n) ((n) << 16) /**< @brief TS1 field macro.*/ +#define CAN_BTR_TS2(n) ((n) << 20) /**< @brief TS2 field macro.*/ +#define CAN_BTR_SJW(n) ((n) << 24) /**< @brief SJW field macro.*/ + +#define CAN_IDE_STD 0 /**< @brief Standard id. */ +#define CAN_IDE_EXT 1 /**< @brief Extended id. */ + +#define CAN_RTR_DATA 0 /**< @brief Data frame. */ +#define CAN_RTR_REMOTE 1 /**< @brief Remote frame. */ + /*===========================================================================*/ /* Driver pre-compile time settings. */ /*===========================================================================*/ -- cgit v1.2.3