mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Tue Nov 08 17:45:16 2016 +0000
Revision:
150:02e0a0aed4ec
Parent:
149:156823d33999
This updates the lib to the mbed lib v129

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**************************************************************************//**
<> 144:ef7eb2e8f9f7 2 * @file can.h
<> 144:ef7eb2e8f9f7 3 * @version V1.00
<> 144:ef7eb2e8f9f7 4 * $Revision: 8 $
<> 144:ef7eb2e8f9f7 5 * $Date: 14/09/26 3:38p $
<> 144:ef7eb2e8f9f7 6 * @brief NUC472/NUC442 CAN driver header file
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * @note
<> 144:ef7eb2e8f9f7 9 * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
<> 144:ef7eb2e8f9f7 10 *****************************************************************************/
<> 144:ef7eb2e8f9f7 11 #ifndef __CAN_H__
<> 144:ef7eb2e8f9f7 12 #define __CAN_H__
<> 144:ef7eb2e8f9f7 13
<> 144:ef7eb2e8f9f7 14 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 15 extern "C"
<> 144:ef7eb2e8f9f7 16 {
<> 144:ef7eb2e8f9f7 17 #endif
<> 144:ef7eb2e8f9f7 18
<> 144:ef7eb2e8f9f7 19 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
<> 144:ef7eb2e8f9f7 20 @{
<> 144:ef7eb2e8f9f7 21 */
<> 144:ef7eb2e8f9f7 22
<> 144:ef7eb2e8f9f7 23 /** @addtogroup NUC472_442_CAN_Driver CAN Driver
<> 144:ef7eb2e8f9f7 24 @{
<> 144:ef7eb2e8f9f7 25 */
<> 144:ef7eb2e8f9f7 26
<> 144:ef7eb2e8f9f7 27 /** @addtogroup NUC472_442_CAN_EXPORTED_TYPEDEF CAN Exported Type Defines
<> 144:ef7eb2e8f9f7 28 @{
<> 144:ef7eb2e8f9f7 29 */
<> 144:ef7eb2e8f9f7 30
<> 144:ef7eb2e8f9f7 31 /**
<> 144:ef7eb2e8f9f7 32 * @details Message ID types.
<> 144:ef7eb2e8f9f7 33 */
<> 144:ef7eb2e8f9f7 34 typedef enum {
<> 144:ef7eb2e8f9f7 35 CAN_STD_ID = 0, /*!< Standard Identifier */
<> 144:ef7eb2e8f9f7 36 CAN_EXT_ID = 1 /*!< Extended Identifier */
<> 144:ef7eb2e8f9f7 37 } E_CAN_ID_TYPE;
<> 144:ef7eb2e8f9f7 38
<> 144:ef7eb2e8f9f7 39 /**
<> 144:ef7eb2e8f9f7 40 * @details Message Frame types.
<> 144:ef7eb2e8f9f7 41 */
<> 144:ef7eb2e8f9f7 42 typedef enum {
<> 144:ef7eb2e8f9f7 43 REMOTE_FRAME = 0, /*!< Remote Frame */
<> 144:ef7eb2e8f9f7 44 DATA_FRAME = 1 /*!< Data Frame */
<> 144:ef7eb2e8f9f7 45 } E_CAN_FRAME_TYPE;
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /**
<> 144:ef7eb2e8f9f7 48 * @details CAN message structure.
<> 144:ef7eb2e8f9f7 49 */
<> 144:ef7eb2e8f9f7 50 typedef struct {
<> 144:ef7eb2e8f9f7 51 uint32_t IdType; /*!< Identifier Type */
<> 144:ef7eb2e8f9f7 52 uint32_t FrameType; /*!< Frame Type */
<> 144:ef7eb2e8f9f7 53 uint32_t Id; /*!< Message Identifier */
<> 144:ef7eb2e8f9f7 54 uint8_t DLC; /*!< Data Length Code */
<> 144:ef7eb2e8f9f7 55 uint8_t Data[8]; /*!< Data byte 0 ~ 7 */
<> 144:ef7eb2e8f9f7 56 } STR_CANMSG_T;
<> 144:ef7eb2e8f9f7 57
<> 144:ef7eb2e8f9f7 58 /**
<> 144:ef7eb2e8f9f7 59 * @details CAN mask message structure.
<> 144:ef7eb2e8f9f7 60 */
<> 144:ef7eb2e8f9f7 61 typedef struct {
<> 144:ef7eb2e8f9f7 62 uint8_t u8Xtd; /*!< Extended Identifier */
<> 144:ef7eb2e8f9f7 63 uint8_t u8Dir; /*!< Message Direction */
<> 144:ef7eb2e8f9f7 64 uint32_t u32Id; /*!< Message Identifier */
<> 144:ef7eb2e8f9f7 65 uint8_t u8IdType; /*!< Identifier Type */
<> 144:ef7eb2e8f9f7 66 } STR_CANMASK_T;
<> 144:ef7eb2e8f9f7 67
<> 144:ef7eb2e8f9f7 68 /**
<> 144:ef7eb2e8f9f7 69 * @details CAN operation mode: normal/basic mode.
<> 144:ef7eb2e8f9f7 70 */
<> 144:ef7eb2e8f9f7 71 typedef enum {
<> 144:ef7eb2e8f9f7 72 CAN_NORMAL_MODE = 1, /*!< Normal Mode */
<> 144:ef7eb2e8f9f7 73 CAN_BASIC_MODE = 2 /*!< Basic Mode */
<> 144:ef7eb2e8f9f7 74 } CAN_MODE_SELECT;
<> 144:ef7eb2e8f9f7 75
<> 144:ef7eb2e8f9f7 76 #define ALL_MSG 32 /*!< All Message ram number */
<> 144:ef7eb2e8f9f7 77 #define MSG(id) id /*!< Message ram number */
<> 144:ef7eb2e8f9f7 78
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80 /*@}*/ /* end of group NUC472_442_CAN_EXPORTED_TYPEDEF */
<> 144:ef7eb2e8f9f7 81
<> 144:ef7eb2e8f9f7 82
<> 144:ef7eb2e8f9f7 83 /** @addtogroup NUC472_442_CAN_EXPORTED_FUNCTIONS CAN Exported Functions
<> 144:ef7eb2e8f9f7 84 @{
<> 144:ef7eb2e8f9f7 85 */
<> 144:ef7eb2e8f9f7 86
<> 144:ef7eb2e8f9f7 87 /**
<> 144:ef7eb2e8f9f7 88 * @brief Get interrupt status
<> 144:ef7eb2e8f9f7 89 *
<> 144:ef7eb2e8f9f7 90 * @param[in] can The base address of can module
<> 144:ef7eb2e8f9f7 91 *
<> 144:ef7eb2e8f9f7 92 * @return CAN module status register value
<> 144:ef7eb2e8f9f7 93 * \hideinitializer
<> 144:ef7eb2e8f9f7 94 */
<> 144:ef7eb2e8f9f7 95 #define CAN_GET_INT_STATUS(can) (can->STATUS)
<> 144:ef7eb2e8f9f7 96
<> 144:ef7eb2e8f9f7 97 /**
<> 144:ef7eb2e8f9f7 98 * @brief Get specified interrupt pending status
<> 144:ef7eb2e8f9f7 99 *
<> 144:ef7eb2e8f9f7 100 * @param[in] can The base address of can module
<> 144:ef7eb2e8f9f7 101 *
<> 144:ef7eb2e8f9f7 102 * @return The source of the interrupt.
<> 144:ef7eb2e8f9f7 103 * \hideinitializer
<> 144:ef7eb2e8f9f7 104 */
<> 144:ef7eb2e8f9f7 105 #define CAN_GET_INT_PENDING_STATUS(can) (can->IIDR)
<> 144:ef7eb2e8f9f7 106
<> 144:ef7eb2e8f9f7 107 /**
<> 144:ef7eb2e8f9f7 108 * @brief Disable Wakeup function
<> 144:ef7eb2e8f9f7 109 *
<> 144:ef7eb2e8f9f7 110 * @param[in] can The base address of can module
<> 144:ef7eb2e8f9f7 111 *
<> 144:ef7eb2e8f9f7 112 * @return None
<> 144:ef7eb2e8f9f7 113 * \hideinitializer
<> 144:ef7eb2e8f9f7 114 */
<> 144:ef7eb2e8f9f7 115 #define CAN_DISABLE_WAKEUP(can) (can->WU_IE = 0)
<> 144:ef7eb2e8f9f7 116
<> 144:ef7eb2e8f9f7 117 /**
<> 144:ef7eb2e8f9f7 118 * @brief Enable Wakeup function
<> 144:ef7eb2e8f9f7 119 *
<> 144:ef7eb2e8f9f7 120 * @param[in] can The base address of can module
<> 144:ef7eb2e8f9f7 121 *
<> 144:ef7eb2e8f9f7 122 * @return None
<> 144:ef7eb2e8f9f7 123 * \hideinitializer
<> 144:ef7eb2e8f9f7 124 */
<> 144:ef7eb2e8f9f7 125 #define CAN_ENABLE_WAKEUP(can) (can->WU_IE = CAN_WUEN_WAKUP_EN_Msk)
<> 144:ef7eb2e8f9f7 126
<> 144:ef7eb2e8f9f7 127 /**
<> 144:ef7eb2e8f9f7 128 * @brief Get specified Message Object new data into bit value
<> 144:ef7eb2e8f9f7 129 *
<> 144:ef7eb2e8f9f7 130 * @param[in] can The base address of can module
<> 144:ef7eb2e8f9f7 131 * @param[in] u32MsgNum Specified Message Object number. (0 ~ 31)
<> 144:ef7eb2e8f9f7 132 *
<> 144:ef7eb2e8f9f7 133 * @return Specified Message Object new data into bit value.
<> 144:ef7eb2e8f9f7 134 * \hideinitializer
<> 144:ef7eb2e8f9f7 135 */
<> 144:ef7eb2e8f9f7 136 #define CAN_GET_NEW_DATA_IN_BIT(can, u32MsgNum) (u32MsgNum < 16 ? can->NDAT1 & (1 << u32MsgNum) : can->NDAT2 & (1 << (u32MsgNum-16)))
<> 144:ef7eb2e8f9f7 137
<> 144:ef7eb2e8f9f7 138
<> 144:ef7eb2e8f9f7 139 /*---------------------------------------------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 140 /* Define CAN functions prototype */
<> 144:ef7eb2e8f9f7 141 /*---------------------------------------------------------------------------------------------------------*/
<> 144:ef7eb2e8f9f7 142 uint32_t CAN_SetBaudRate(CAN_T *tCAN, uint32_t u32BaudRate);
<> 144:ef7eb2e8f9f7 143 uint32_t CAN_Open(CAN_T *tCAN, uint32_t u32BaudRate, uint32_t u32Mode);
<> 144:ef7eb2e8f9f7 144 int32_t CAN_Transmit(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg);
<> 144:ef7eb2e8f9f7 145 int32_t CAN_Receive(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg);
<> 144:ef7eb2e8f9f7 146 void CAN_CLR_INT_PENDING_BIT(CAN_T *tCAN, uint8_t u32MsgNum);
<> 144:ef7eb2e8f9f7 147 void CAN_EnableInt(CAN_T *tCAN, uint32_t u32Mask);
<> 144:ef7eb2e8f9f7 148 void CAN_DisableInt(CAN_T *tCAN, uint32_t u32Mask);
<> 144:ef7eb2e8f9f7 149 int32_t CAN_SetMultiRxMsg(CAN_T *tCAN, uint32_t u32MsgNum , uint32_t u32MsgCount, uint32_t u32IDType, uint32_t u32ID);
<> 144:ef7eb2e8f9f7 150 int32_t CAN_SetRxMsg(CAN_T *tCAN, uint32_t u32MsgNum , uint32_t u32IDType, uint32_t u32ID);
<> 144:ef7eb2e8f9f7 151 int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg);
<> 144:ef7eb2e8f9f7 152 int32_t CAN_TriggerTxMsg(CAN_T *tCAN, uint32_t u32MsgNum);
<> 150:02e0a0aed4ec 153 uint32_t CAN_GetCANBitRate(CAN_T *tCAN);
<> 150:02e0a0aed4ec 154 void CAN_EnterInitMode(CAN_T *tCAN);
<> 150:02e0a0aed4ec 155 void CAN_LeaveInitMode(CAN_T *tCAN);
<> 150:02e0a0aed4ec 156 void CAN_EnterTestMode(CAN_T *tCAN, uint8_t u8TestMask);
<> 150:02e0a0aed4ec 157 void CAN_LeaveTestMode(CAN_T *tCAN);
<> 144:ef7eb2e8f9f7 158
<> 144:ef7eb2e8f9f7 159 /*@}*/ /* end of group NUC472_442_CAN_EXPORTED_FUNCTIONS */
<> 144:ef7eb2e8f9f7 160
<> 144:ef7eb2e8f9f7 161 /*@}*/ /* end of group NUC472_442_CAN_Driver */
<> 144:ef7eb2e8f9f7 162
<> 144:ef7eb2e8f9f7 163 /*@}*/ /* end of group NUC472_442_Device_Driver */
<> 144:ef7eb2e8f9f7 164
<> 144:ef7eb2e8f9f7 165 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 166 }
<> 144:ef7eb2e8f9f7 167 #endif
<> 144:ef7eb2e8f9f7 168
<> 144:ef7eb2e8f9f7 169 #endif //__CAN_H__
<> 144:ef7eb2e8f9f7 170
<> 144:ef7eb2e8f9f7 171 /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/
<> 144:ef7eb2e8f9f7 172
<> 144:ef7eb2e8f9f7 173
<> 144:ef7eb2e8f9f7 174
<> 144:ef7eb2e8f9f7 175
<> 144:ef7eb2e8f9f7 176