The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_NUMAKER_PFM_M453/TOOLCHAIN_GCC_ARM/m451_can.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 171:3a7713b1edbc | 1 | /**************************************************************************//** |
AnnaBridge | 171:3a7713b1edbc | 2 | * @file can.h |
AnnaBridge | 171:3a7713b1edbc | 3 | * @version V2.00 |
AnnaBridge | 171:3a7713b1edbc | 4 | * $Revision: 9 $ |
AnnaBridge | 171:3a7713b1edbc | 5 | * $Date: 15/08/11 10:26a $ |
AnnaBridge | 171:3a7713b1edbc | 6 | * @brief M451 Series CAN Driver Header File |
AnnaBridge | 171:3a7713b1edbc | 7 | * |
AnnaBridge | 171:3a7713b1edbc | 8 | * @note |
AnnaBridge | 171:3a7713b1edbc | 9 | * Copyright (C) 2014~2015 Nuvoton Technology Corp. All rights reserved. |
AnnaBridge | 171:3a7713b1edbc | 10 | * |
AnnaBridge | 171:3a7713b1edbc | 11 | ******************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 12 | #ifndef __CAN_H__ |
AnnaBridge | 171:3a7713b1edbc | 13 | #define __CAN_H__ |
AnnaBridge | 171:3a7713b1edbc | 14 | |
AnnaBridge | 171:3a7713b1edbc | 15 | #include "M451Series.h" |
AnnaBridge | 171:3a7713b1edbc | 16 | |
AnnaBridge | 171:3a7713b1edbc | 17 | #ifdef __cplusplus |
AnnaBridge | 171:3a7713b1edbc | 18 | extern "C" |
AnnaBridge | 171:3a7713b1edbc | 19 | { |
AnnaBridge | 171:3a7713b1edbc | 20 | #endif |
AnnaBridge | 171:3a7713b1edbc | 21 | |
AnnaBridge | 171:3a7713b1edbc | 22 | |
AnnaBridge | 171:3a7713b1edbc | 23 | /** @addtogroup Standard_Driver Standard Driver |
AnnaBridge | 171:3a7713b1edbc | 24 | @{ |
AnnaBridge | 171:3a7713b1edbc | 25 | */ |
AnnaBridge | 171:3a7713b1edbc | 26 | |
AnnaBridge | 171:3a7713b1edbc | 27 | /** @addtogroup CAN_Driver CAN Driver |
AnnaBridge | 171:3a7713b1edbc | 28 | @{ |
AnnaBridge | 171:3a7713b1edbc | 29 | */ |
AnnaBridge | 171:3a7713b1edbc | 30 | |
AnnaBridge | 171:3a7713b1edbc | 31 | /** @addtogroup CAN_EXPORTED_CONSTANTS CAN Exported Constants |
AnnaBridge | 171:3a7713b1edbc | 32 | @{ |
AnnaBridge | 171:3a7713b1edbc | 33 | */ |
AnnaBridge | 171:3a7713b1edbc | 34 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 35 | /* CAN Test Mode Constant Definitions */ |
AnnaBridge | 171:3a7713b1edbc | 36 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 37 | #define CAN_NORMAL_MODE 0 |
AnnaBridge | 171:3a7713b1edbc | 38 | #define CAN_BASIC_MODE 1 |
AnnaBridge | 171:3a7713b1edbc | 39 | |
AnnaBridge | 171:3a7713b1edbc | 40 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 41 | /* Message ID Type Constant Definitions */ |
AnnaBridge | 171:3a7713b1edbc | 42 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 43 | #define CAN_STD_ID 0 |
AnnaBridge | 171:3a7713b1edbc | 44 | #define CAN_EXT_ID 1 |
AnnaBridge | 171:3a7713b1edbc | 45 | |
AnnaBridge | 171:3a7713b1edbc | 46 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 47 | /* Message Frame Type Constant Definitions */ |
AnnaBridge | 171:3a7713b1edbc | 48 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 49 | #define CAN_REMOTE_FRAME 0 |
AnnaBridge | 171:3a7713b1edbc | 50 | #define CAN_DATA_FRAME 1 |
AnnaBridge | 171:3a7713b1edbc | 51 | |
AnnaBridge | 171:3a7713b1edbc | 52 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 53 | /* CAN message structure */ |
AnnaBridge | 171:3a7713b1edbc | 54 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 55 | typedef struct |
AnnaBridge | 171:3a7713b1edbc | 56 | { |
AnnaBridge | 171:3a7713b1edbc | 57 | uint32_t IdType; |
AnnaBridge | 171:3a7713b1edbc | 58 | uint32_t FrameType; |
AnnaBridge | 171:3a7713b1edbc | 59 | uint32_t Id; |
AnnaBridge | 171:3a7713b1edbc | 60 | uint8_t DLC; |
AnnaBridge | 171:3a7713b1edbc | 61 | uint8_t Data[8]; |
AnnaBridge | 171:3a7713b1edbc | 62 | } STR_CANMSG_T; |
AnnaBridge | 171:3a7713b1edbc | 63 | |
AnnaBridge | 171:3a7713b1edbc | 64 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 65 | /* CAN mask message structure */ |
AnnaBridge | 171:3a7713b1edbc | 66 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 67 | typedef struct |
AnnaBridge | 171:3a7713b1edbc | 68 | { |
AnnaBridge | 171:3a7713b1edbc | 69 | uint8_t u8Xtd; |
AnnaBridge | 171:3a7713b1edbc | 70 | uint8_t u8Dir; |
AnnaBridge | 171:3a7713b1edbc | 71 | uint32_t u32Id; |
AnnaBridge | 171:3a7713b1edbc | 72 | uint8_t u8IdType; |
AnnaBridge | 171:3a7713b1edbc | 73 | } STR_CANMASK_T; |
AnnaBridge | 171:3a7713b1edbc | 74 | |
AnnaBridge | 171:3a7713b1edbc | 75 | #define MSG(id) (id) |
AnnaBridge | 171:3a7713b1edbc | 76 | |
AnnaBridge | 171:3a7713b1edbc | 77 | |
AnnaBridge | 171:3a7713b1edbc | 78 | /*@}*/ /* end of group CAN_EXPORTED_CONSTANTS */ |
AnnaBridge | 171:3a7713b1edbc | 79 | |
AnnaBridge | 171:3a7713b1edbc | 80 | |
AnnaBridge | 171:3a7713b1edbc | 81 | /** @addtogroup CAN_EXPORTED_FUNCTIONS CAN Exported Functions |
AnnaBridge | 171:3a7713b1edbc | 82 | @{ |
AnnaBridge | 171:3a7713b1edbc | 83 | */ |
AnnaBridge | 171:3a7713b1edbc | 84 | |
AnnaBridge | 171:3a7713b1edbc | 85 | /** |
AnnaBridge | 171:3a7713b1edbc | 86 | * @brief Get interrupt status. |
AnnaBridge | 171:3a7713b1edbc | 87 | * |
AnnaBridge | 171:3a7713b1edbc | 88 | * @param[in] can The base address of can module. |
AnnaBridge | 171:3a7713b1edbc | 89 | * |
AnnaBridge | 171:3a7713b1edbc | 90 | * @return CAN module status register value. |
AnnaBridge | 171:3a7713b1edbc | 91 | * |
AnnaBridge | 171:3a7713b1edbc | 92 | * @details Status Interrupt is generated by bits BOff (CAN_STATUS[7]), EWarn (CAN_STATUS[6]), |
AnnaBridge | 171:3a7713b1edbc | 93 | * EPass (CAN_STATUS[5]), RxOk (CAN_STATUS[4]), TxOk (CAN_STATUS[3]), and LEC (CAN_STATUS[2:0]). |
AnnaBridge | 171:3a7713b1edbc | 94 | */ |
AnnaBridge | 171:3a7713b1edbc | 95 | #define CAN_GET_INT_STATUS(can) ((can)->STATUS) |
AnnaBridge | 171:3a7713b1edbc | 96 | |
AnnaBridge | 171:3a7713b1edbc | 97 | /** |
AnnaBridge | 171:3a7713b1edbc | 98 | * @brief Get specified interrupt pending status. |
AnnaBridge | 171:3a7713b1edbc | 99 | * |
AnnaBridge | 171:3a7713b1edbc | 100 | * @param[in] can The base address of can module. |
AnnaBridge | 171:3a7713b1edbc | 101 | * |
AnnaBridge | 171:3a7713b1edbc | 102 | * @return The source of the interrupt. |
AnnaBridge | 171:3a7713b1edbc | 103 | * |
AnnaBridge | 171:3a7713b1edbc | 104 | * @details If several interrupts are pending, the CAN Interrupt Register will point to the pending interrupt |
AnnaBridge | 171:3a7713b1edbc | 105 | * with the highest priority, disregarding their chronological order. |
AnnaBridge | 171:3a7713b1edbc | 106 | */ |
AnnaBridge | 171:3a7713b1edbc | 107 | #define CAN_GET_INT_PENDING_STATUS(can) ((can)->IIDR) |
AnnaBridge | 171:3a7713b1edbc | 108 | |
AnnaBridge | 171:3a7713b1edbc | 109 | /** |
AnnaBridge | 171:3a7713b1edbc | 110 | * @brief Disable wake-up function. |
AnnaBridge | 171:3a7713b1edbc | 111 | * |
AnnaBridge | 171:3a7713b1edbc | 112 | * @param[in] can The base address of can module. |
AnnaBridge | 171:3a7713b1edbc | 113 | * |
AnnaBridge | 171:3a7713b1edbc | 114 | * @return None |
AnnaBridge | 171:3a7713b1edbc | 115 | * |
AnnaBridge | 171:3a7713b1edbc | 116 | * @details The macro is used to disable wake-up function. |
AnnaBridge | 171:3a7713b1edbc | 117 | */ |
AnnaBridge | 171:3a7713b1edbc | 118 | #define CAN_DISABLE_WAKEUP(can) ((can)->WU_EN = 0) |
AnnaBridge | 171:3a7713b1edbc | 119 | |
AnnaBridge | 171:3a7713b1edbc | 120 | /** |
AnnaBridge | 171:3a7713b1edbc | 121 | * @brief Enable wake-up function. |
AnnaBridge | 171:3a7713b1edbc | 122 | * |
AnnaBridge | 171:3a7713b1edbc | 123 | * @param[in] can The base address of can module. |
AnnaBridge | 171:3a7713b1edbc | 124 | * |
AnnaBridge | 171:3a7713b1edbc | 125 | * @return None |
AnnaBridge | 171:3a7713b1edbc | 126 | * |
AnnaBridge | 171:3a7713b1edbc | 127 | * @details User can wake-up system when there is a falling edge in the CAN_Rx pin. |
AnnaBridge | 171:3a7713b1edbc | 128 | */ |
AnnaBridge | 171:3a7713b1edbc | 129 | #define CAN_ENABLE_WAKEUP(can) ((can)->WU_EN = CAN_WUEN_WAKUP_EN_Msk) |
AnnaBridge | 171:3a7713b1edbc | 130 | |
AnnaBridge | 171:3a7713b1edbc | 131 | /** |
AnnaBridge | 171:3a7713b1edbc | 132 | * @brief Get specified Message Object new data into bit value. |
AnnaBridge | 171:3a7713b1edbc | 133 | * |
AnnaBridge | 171:3a7713b1edbc | 134 | * @param[in] can The base address of can module. |
AnnaBridge | 171:3a7713b1edbc | 135 | * @param[in] u32MsgNum Specified Message Object number, valid value are from 0 to 31. |
AnnaBridge | 171:3a7713b1edbc | 136 | * |
AnnaBridge | 171:3a7713b1edbc | 137 | * @return Specified Message Object new data into bit value. |
AnnaBridge | 171:3a7713b1edbc | 138 | * |
AnnaBridge | 171:3a7713b1edbc | 139 | * @details The NewDat bit (CAN_IFn_MCON[15]) of a specific Message Object can be set/reset by the software through the IFn Message Interface Registers |
AnnaBridge | 171:3a7713b1edbc | 140 | * or by the Message Handler after reception of a Data Frame or after a successful transmission. |
AnnaBridge | 171:3a7713b1edbc | 141 | */ |
AnnaBridge | 171:3a7713b1edbc | 142 | #define CAN_GET_NEW_DATA_IN_BIT(can, u32MsgNum) ((u32MsgNum) < 16 ? (can)->NDAT1 & (1 << (u32MsgNum)) : (can)->NDAT2 & (1 << ((u32MsgNum)-16))) |
AnnaBridge | 171:3a7713b1edbc | 143 | |
AnnaBridge | 171:3a7713b1edbc | 144 | |
AnnaBridge | 171:3a7713b1edbc | 145 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 146 | /* Define CAN functions prototype */ |
AnnaBridge | 171:3a7713b1edbc | 147 | /*---------------------------------------------------------------------------------------------------------*/ |
AnnaBridge | 171:3a7713b1edbc | 148 | uint32_t CAN_SetBaudRate(CAN_T *tCAN, uint32_t u32BaudRate); |
AnnaBridge | 171:3a7713b1edbc | 149 | uint32_t CAN_Open(CAN_T *tCAN, uint32_t u32BaudRate, uint32_t u32Mode); |
AnnaBridge | 171:3a7713b1edbc | 150 | void CAN_Close(CAN_T *tCAN); |
AnnaBridge | 171:3a7713b1edbc | 151 | void CAN_CLR_INT_PENDING_BIT(CAN_T *tCAN, uint8_t u32MsgNum); |
AnnaBridge | 171:3a7713b1edbc | 152 | void CAN_EnableInt(CAN_T *tCAN, uint32_t u32Mask); |
AnnaBridge | 171:3a7713b1edbc | 153 | void CAN_DisableInt(CAN_T *tCAN, uint32_t u32Mask); |
AnnaBridge | 171:3a7713b1edbc | 154 | int32_t CAN_Transmit(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg); |
AnnaBridge | 171:3a7713b1edbc | 155 | int32_t CAN_Receive(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg); |
AnnaBridge | 171:3a7713b1edbc | 156 | int32_t CAN_SetMultiRxMsg(CAN_T *tCAN, uint32_t u32MsgNum , uint32_t u32MsgCount, uint32_t u32IDType, uint32_t u32ID); |
AnnaBridge | 171:3a7713b1edbc | 157 | int32_t CAN_SetRxMsg(CAN_T *tCAN, uint32_t u32MsgNum , uint32_t u32IDType, uint32_t u32ID); |
AnnaBridge | 171:3a7713b1edbc | 158 | int32_t CAN_SetRxMsgAndMsk(CAN_T *tCAN, uint32_t u32MsgNum , uint32_t u32IDType, uint32_t u32ID, uint32_t u32IDMask); |
AnnaBridge | 171:3a7713b1edbc | 159 | int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum , STR_CANMSG_T* pCanMsg); |
AnnaBridge | 171:3a7713b1edbc | 160 | int32_t CAN_TriggerTxMsg(CAN_T *tCAN, uint32_t u32MsgNum); |
AnnaBridge | 171:3a7713b1edbc | 161 | uint32_t CAN_GetCANBitRate(CAN_T *tCAN); |
AnnaBridge | 171:3a7713b1edbc | 162 | void CAN_EnterInitMode(CAN_T *tCAN, uint8_t u8Mask); |
AnnaBridge | 171:3a7713b1edbc | 163 | void CAN_LeaveInitMode(CAN_T *tCAN); |
AnnaBridge | 171:3a7713b1edbc | 164 | void CAN_EnterTestMode(CAN_T *tCAN, uint8_t u8TestMask); |
AnnaBridge | 171:3a7713b1edbc | 165 | void CAN_LeaveTestMode(CAN_T *tCAN); |
AnnaBridge | 171:3a7713b1edbc | 166 | |
AnnaBridge | 171:3a7713b1edbc | 167 | /*@}*/ /* end of group CAN_EXPORTED_FUNCTIONS */ |
AnnaBridge | 171:3a7713b1edbc | 168 | |
AnnaBridge | 171:3a7713b1edbc | 169 | /*@}*/ /* end of group CAN_Driver */ |
AnnaBridge | 171:3a7713b1edbc | 170 | |
AnnaBridge | 171:3a7713b1edbc | 171 | /*@}*/ /* end of group Standard_Driver */ |
AnnaBridge | 171:3a7713b1edbc | 172 | |
AnnaBridge | 171:3a7713b1edbc | 173 | #ifdef __cplusplus |
AnnaBridge | 171:3a7713b1edbc | 174 | } |
AnnaBridge | 171:3a7713b1edbc | 175 | #endif |
AnnaBridge | 171:3a7713b1edbc | 176 | |
AnnaBridge | 171:3a7713b1edbc | 177 | #endif //__CAN_H__ |
AnnaBridge | 171:3a7713b1edbc | 178 | |
AnnaBridge | 171:3a7713b1edbc | 179 | /*** (C) COPYRIGHT 2014~2015 Nuvoton Technology Corp. ***/ |