STM32F4 Standard Peripheral bibliotheek  1.0
ST Microelectronics bibliotheek documentatie voor de STM32F4 Standard Peripheral Library
 All Data Structures Files Functions Variables Enumerations Enumerator Groups

CAN driver modules. More...

Modules

 CAN_Exported_Constants
 
 CAN_Private_Functions
 

Data Structures

struct  CAN_InitTypeDef
 CAN init structure definition. More...
 
struct  CAN_FilterInitTypeDef
 CAN filter init structure definition. More...
 
struct  CanTxMsg
 CAN Tx message structure definition. More...
 
struct  CanRxMsg
 CAN Rx message structure definition. More...
 

Macros

#define IS_CAN_ALL_PERIPH(PERIPH)
 
#define MCR_DBF   ((uint32_t)0x00010000) /* software master reset */
 
#define TMIDxR_TXRQ   ((uint32_t)0x00000001) /* Transmit mailbox request */
 
#define FMR_FINIT   ((uint32_t)0x00000001) /* Filter init mode */
 
#define INAK_TIMEOUT   ((uint32_t)0x0000FFFF)
 
#define SLAK_TIMEOUT   ((uint32_t)0x0000FFFF)
 
#define CAN_FLAGS_TSR   ((uint32_t)0x08000000)
 
#define CAN_FLAGS_RF1R   ((uint32_t)0x04000000)
 
#define CAN_FLAGS_RF0R   ((uint32_t)0x02000000)
 
#define CAN_FLAGS_MSR   ((uint32_t)0x01000000)
 
#define CAN_FLAGS_ESR   ((uint32_t)0x00F00000)
 
#define CAN_TXMAILBOX_0   ((uint8_t)0x00)
 
#define CAN_TXMAILBOX_1   ((uint8_t)0x01)
 
#define CAN_TXMAILBOX_2   ((uint8_t)0x02)
 
#define CAN_MODE_MASK   ((uint32_t) 0x00000003)
 

Functions

void CAN_DeInit (CAN_TypeDef *CANx)
 Deinitializes the CAN peripheral registers to their default reset values. More...
 
uint8_t CAN_Init (CAN_TypeDef *CANx, CAN_InitTypeDef *CAN_InitStruct)
 Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct. More...
 
void CAN_FilterInit (CAN_FilterInitTypeDef *CAN_FilterInitStruct)
 Configures the CAN reception filter according to the specified parameters in the CAN_FilterInitStruct. More...
 
void CAN_StructInit (CAN_InitTypeDef *CAN_InitStruct)
 Fills each CAN_InitStruct member with its default value. More...
 
void CAN_SlaveStartBank (uint8_t CAN_BankNumber)
 Select the start bank filter for slave CAN. More...
 
void CAN_DBGFreeze (CAN_TypeDef *CANx, FunctionalState NewState)
 Enables or disables the DBG Freeze for CAN. More...
 
void CAN_TTComModeCmd (CAN_TypeDef *CANx, FunctionalState NewState)
 Enables or disables the CAN Time TriggerOperation communication mode. More...
 
uint8_t CAN_Transmit (CAN_TypeDef *CANx, CanTxMsg *TxMessage)
 Initiates and transmits a CAN frame message. More...
 
uint8_t CAN_TransmitStatus (CAN_TypeDef *CANx, uint8_t TransmitMailbox)
 Checks the transmission status of a CAN Frame. More...
 
void CAN_CancelTransmit (CAN_TypeDef *CANx, uint8_t Mailbox)
 Cancels a transmit request. More...
 
void CAN_Receive (CAN_TypeDef *CANx, uint8_t FIFONumber, CanRxMsg *RxMessage)
 Receives a correct CAN frame. More...
 
void CAN_FIFORelease (CAN_TypeDef *CANx, uint8_t FIFONumber)
 Releases the specified receive FIFO. More...
 
uint8_t CAN_MessagePending (CAN_TypeDef *CANx, uint8_t FIFONumber)
 Returns the number of pending received messages. More...
 
uint8_t CAN_OperatingModeRequest (CAN_TypeDef *CANx, uint8_t CAN_OperatingMode)
 Selects the CAN Operation mode. More...
 
uint8_t CAN_Sleep (CAN_TypeDef *CANx)
 Enters the Sleep (low power) mode. More...
 
uint8_t CAN_WakeUp (CAN_TypeDef *CANx)
 Wakes up the CAN peripheral from sleep mode . More...
 
uint8_t CAN_GetLastErrorCode (CAN_TypeDef *CANx)
 Returns the CANx's last error code (LEC). More...
 
uint8_t CAN_GetReceiveErrorCounter (CAN_TypeDef *CANx)
 Returns the CANx Receive Error Counter (REC). More...
 
uint8_t CAN_GetLSBTransmitErrorCounter (CAN_TypeDef *CANx)
 Returns the LSB of the 9-bit CANx Transmit Error Counter(TEC). More...
 
void CAN_ITConfig (CAN_TypeDef *CANx, uint32_t CAN_IT, FunctionalState NewState)
 Enables or disables the specified CANx interrupts. More...
 
FlagStatus CAN_GetFlagStatus (CAN_TypeDef *CANx, uint32_t CAN_FLAG)
 Checks whether the specified CAN flag is set or not. More...
 
void CAN_ClearFlag (CAN_TypeDef *CANx, uint32_t CAN_FLAG)
 Clears the CAN's pending flags. More...
 
ITStatus CAN_GetITStatus (CAN_TypeDef *CANx, uint32_t CAN_IT)
 Checks whether the specified CANx interrupt has occurred or not. More...
 
void CAN_ClearITPendingBit (CAN_TypeDef *CANx, uint32_t CAN_IT)
 Clears the CANx's interrupt pending bits. More...
 

Detailed Description

CAN driver modules.

Macro Definition Documentation

#define IS_CAN_ALL_PERIPH (   PERIPH)
Value:
(((PERIPH) == CAN1) || \
((PERIPH) == CAN2))

Function Documentation

void CAN_CancelTransmit ( CAN_TypeDef *  CANx,
uint8_t  Mailbox 
)

Cancels a transmit request.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
Mailbox,:Mailbox number.
Return values
None
void CAN_ClearFlag ( CAN_TypeDef *  CANx,
uint32_t  CAN_FLAG 
)

Clears the CAN's pending flags.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
CAN_FLAG,:specifies the flag to clear. This parameter can be one of the following values:
  • CAN_FLAG_RQCP0: Request MailBox0 Flag
  • CAN_FLAG_RQCP1: Request MailBox1 Flag
  • CAN_FLAG_RQCP2: Request MailBox2 Flag
  • CAN_FLAG_FF0: FIFO 0 Full Flag
  • CAN_FLAG_FOV0: FIFO 0 Overrun Flag
  • CAN_FLAG_FF1: FIFO 1 Full Flag
  • CAN_FLAG_FOV1: FIFO 1 Overrun Flag
  • CAN_FLAG_WKU: Wake up Flag
  • CAN_FLAG_SLAK: Sleep acknowledge Flag
  • CAN_FLAG_LEC: Last error code Flag
Return values
None
void CAN_ClearITPendingBit ( CAN_TypeDef *  CANx,
uint32_t  CAN_IT 
)

Clears the CANx's interrupt pending bits.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
CAN_IT,:specifies the interrupt pending bit to clear. This parameter can be one of the following values:
  • CAN_IT_TME: Transmit mailbox empty Interrupt
  • CAN_IT_FF0: FIFO 0 full Interrupt
  • CAN_IT_FOV0: FIFO 0 overrun Interrupt
  • CAN_IT_FF1: FIFO 1 full Interrupt
  • CAN_IT_FOV1: FIFO 1 overrun Interrupt
  • CAN_IT_WKU: Wake-up Interrupt
  • CAN_IT_SLK: Sleep acknowledge Interrupt
  • CAN_IT_EWG: Error warning Interrupt
  • CAN_IT_EPV: Error passive Interrupt
  • CAN_IT_BOF: Bus-off Interrupt
  • CAN_IT_LEC: Last error code Interrupt
  • CAN_IT_ERR: Error Interrupt
Return values
None
void CAN_DBGFreeze ( CAN_TypeDef *  CANx,
FunctionalState  NewState 
)

Enables or disables the DBG Freeze for CAN.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
NewState,:new state of the CAN peripheral. This parameter can be: ENABLE (CAN reception/transmission is frozen during debug. Reception FIFOs can still be accessed/controlled normally) or DISABLE (CAN is working during debug).
Return values
None
void CAN_DeInit ( CAN_TypeDef *  CANx)

Deinitializes the CAN peripheral registers to their default reset values.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
Return values
None.
void CAN_FIFORelease ( CAN_TypeDef *  CANx,
uint8_t  FIFONumber 
)

Releases the specified receive FIFO.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
FIFONumber,:FIFO to release, CAN_FIFO0 or CAN_FIFO1.
Return values
None
void CAN_FilterInit ( CAN_FilterInitTypeDef CAN_FilterInitStruct)

Configures the CAN reception filter according to the specified parameters in the CAN_FilterInitStruct.

Parameters
CAN_FilterInitStruct,:pointer to a CAN_FilterInitTypeDef structure that contains the configuration information.
Return values
None
FlagStatus CAN_GetFlagStatus ( CAN_TypeDef *  CANx,
uint32_t  CAN_FLAG 
)

Checks whether the specified CAN flag is set or not.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
CAN_FLAG,:specifies the flag to check. This parameter can be one of the following values:
  • CAN_FLAG_RQCP0: Request MailBox0 Flag
  • CAN_FLAG_RQCP1: Request MailBox1 Flag
  • CAN_FLAG_RQCP2: Request MailBox2 Flag
  • CAN_FLAG_FMP0: FIFO 0 Message Pending Flag
  • CAN_FLAG_FF0: FIFO 0 Full Flag
  • CAN_FLAG_FOV0: FIFO 0 Overrun Flag
  • CAN_FLAG_FMP1: FIFO 1 Message Pending Flag
  • CAN_FLAG_FF1: FIFO 1 Full Flag
  • CAN_FLAG_FOV1: FIFO 1 Overrun Flag
  • CAN_FLAG_WKU: Wake up Flag
  • CAN_FLAG_SLAK: Sleep acknowledge Flag
  • CAN_FLAG_EWG: Error Warning Flag
  • CAN_FLAG_EPV: Error Passive Flag
  • CAN_FLAG_BOF: Bus-Off Flag
  • CAN_FLAG_LEC: Last error code Flag
Return values
Thenew state of CAN_FLAG (SET or RESET).
ITStatus CAN_GetITStatus ( CAN_TypeDef *  CANx,
uint32_t  CAN_IT 
)

Checks whether the specified CANx interrupt has occurred or not.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
CAN_IT,:specifies the CAN interrupt source to check. This parameter can be one of the following values:
  • CAN_IT_TME: Transmit mailbox empty Interrupt
  • CAN_IT_FMP0: FIFO 0 message pending Interrupt
  • CAN_IT_FF0: FIFO 0 full Interrupt
  • CAN_IT_FOV0: FIFO 0 overrun Interrupt
  • CAN_IT_FMP1: FIFO 1 message pending Interrupt
  • CAN_IT_FF1: FIFO 1 full Interrupt
  • CAN_IT_FOV1: FIFO 1 overrun Interrupt
  • CAN_IT_WKU: Wake-up Interrupt
  • CAN_IT_SLK: Sleep acknowledge Interrupt
  • CAN_IT_EWG: Error warning Interrupt
  • CAN_IT_EPV: Error passive Interrupt
  • CAN_IT_BOF: Bus-off Interrupt
  • CAN_IT_LEC: Last error code Interrupt
  • CAN_IT_ERR: Error Interrupt
Return values
Thecurrent state of CAN_IT (SET or RESET).
uint8_t CAN_GetLastErrorCode ( CAN_TypeDef *  CANx)

Returns the CANx's last error code (LEC).

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
Return values
Errorcode:
  • CAN_ERRORCODE_NoErr: No Error
  • CAN_ERRORCODE_StuffErr: Stuff Error
  • CAN_ERRORCODE_FormErr: Form Error
  • CAN_ERRORCODE_ACKErr : Acknowledgment Error
  • CAN_ERRORCODE_BitRecessiveErr: Bit Recessive Error
  • CAN_ERRORCODE_BitDominantErr: Bit Dominant Error
  • CAN_ERRORCODE_CRCErr: CRC Error
  • CAN_ERRORCODE_SoftwareSetErr: Software Set Error
uint8_t CAN_GetLSBTransmitErrorCounter ( CAN_TypeDef *  CANx)

Returns the LSB of the 9-bit CANx Transmit Error Counter(TEC).

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
Return values
LSBof the 9-bit CAN Transmit Error Counter.
uint8_t CAN_GetReceiveErrorCounter ( CAN_TypeDef *  CANx)

Returns the CANx Receive Error Counter (REC).

Note
In case of an error during reception, this counter is incremented by 1 or by 8 depending on the error condition as defined by the CAN standard. After every successful reception, the counter is decremented by 1 or reset to 120 if its value was higher than 128. When the counter value exceeds 127, the CAN controller enters the error passive state.
Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
Return values
CANReceive Error Counter.
uint8_t CAN_Init ( CAN_TypeDef *  CANx,
CAN_InitTypeDef CAN_InitStruct 
)

Initializes the CAN peripheral according to the specified parameters in the CAN_InitStruct.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
CAN_InitStruct,:pointer to a CAN_InitTypeDef structure that contains the configuration information for the CAN peripheral.
Return values
Constantindicates initialization succeed which will be CAN_InitStatus_Failed or CAN_InitStatus_Success.
void CAN_ITConfig ( CAN_TypeDef *  CANx,
uint32_t  CAN_IT,
FunctionalState  NewState 
)

Enables or disables the specified CANx interrupts.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
CAN_IT,:specifies the CAN interrupt sources to be enabled or disabled. This parameter can be:
  • CAN_IT_TME: Transmit mailbox empty Interrupt
  • CAN_IT_FMP0: FIFO 0 message pending Interrupt
  • CAN_IT_FF0: FIFO 0 full Interrupt
  • CAN_IT_FOV0: FIFO 0 overrun Interrupt
  • CAN_IT_FMP1: FIFO 1 message pending Interrupt
  • CAN_IT_FF1: FIFO 1 full Interrupt
  • CAN_IT_FOV1: FIFO 1 overrun Interrupt
  • CAN_IT_WKU: Wake-up Interrupt
  • CAN_IT_SLK: Sleep acknowledge Interrupt
  • CAN_IT_EWG: Error warning Interrupt
  • CAN_IT_EPV: Error passive Interrupt
  • CAN_IT_BOF: Bus-off Interrupt
  • CAN_IT_LEC: Last error code Interrupt
  • CAN_IT_ERR: Error Interrupt
NewState,:new state of the CAN interrupts. This parameter can be: ENABLE or DISABLE.
Return values
None
uint8_t CAN_MessagePending ( CAN_TypeDef *  CANx,
uint8_t  FIFONumber 
)

Returns the number of pending received messages.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
FIFONumber,:Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
Return values
NbMessage: which is the number of pending message.
uint8_t CAN_OperatingModeRequest ( CAN_TypeDef *  CANx,
uint8_t  CAN_OperatingMode 
)

Selects the CAN Operation mode.

Parameters
CAN_OperatingMode,:CAN Operating Mode. This parameter can be one of CAN_OperatingMode_TypeDef enumeration.
Return values
statusof the requested mode which can be
  • CAN_ModeStatus_Failed: CAN failed entering the specific mode
  • CAN_ModeStatus_Success: CAN Succeed entering the specific mode
void CAN_Receive ( CAN_TypeDef *  CANx,
uint8_t  FIFONumber,
CanRxMsg RxMessage 
)

Receives a correct CAN frame.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
FIFONumber,:Receive FIFO number, CAN_FIFO0 or CAN_FIFO1.
RxMessage,:pointer to a structure receive frame which contains CAN Id, CAN DLC, CAN data and FMI number.
Return values
None
void CAN_SlaveStartBank ( uint8_t  CAN_BankNumber)

Select the start bank filter for slave CAN.

Parameters
CAN_BankNumber,:Select the start slave bank filter from 1..27.
Return values
None
uint8_t CAN_Sleep ( CAN_TypeDef *  CANx)

Enters the Sleep (low power) mode.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
Return values
CAN_Sleep_Okif sleep entered, CAN_Sleep_Failed otherwise.
void CAN_StructInit ( CAN_InitTypeDef CAN_InitStruct)

Fills each CAN_InitStruct member with its default value.

Parameters
CAN_InitStruct,:pointer to a CAN_InitTypeDef structure which ill be initialized.
Return values
None
uint8_t CAN_Transmit ( CAN_TypeDef *  CANx,
CanTxMsg TxMessage 
)

Initiates and transmits a CAN frame message.

Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
TxMessage,:pointer to a structure which contains CAN Id, CAN DLC and CAN data.
Return values
Thenumber of the mailbox that is used for transmission or CAN_TxStatus_NoMailBox if there is no empty mailbox.
uint8_t CAN_TransmitStatus ( CAN_TypeDef *  CANx,
uint8_t  TransmitMailbox 
)

Checks the transmission status of a CAN Frame.

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
TransmitMailbox,:the number of the mailbox that is used for transmission.
Return values
CAN_TxStatus_Okif the CAN driver transmits the message, CAN_TxStatus_Failed in an other case.
void CAN_TTComModeCmd ( CAN_TypeDef *  CANx,
FunctionalState  NewState 
)

Enables or disables the CAN Time TriggerOperation communication mode.

Note
DLC must be programmed as 8 in order Time Stamp (2 bytes) to be sent over the CAN bus.
Parameters
CANx,:where x can be 1 or 2 to to select the CAN peripheral.
NewState,:Mode new state. This parameter can be: ENABLE or DISABLE. When enabled, Time stamp (TIME[15:0]) value is sent in the last two data bytes of the 8-byte message: TIME[7:0] in data byte 6 and TIME[15:8] in data byte 7.
Return values
None
uint8_t CAN_WakeUp ( CAN_TypeDef *  CANx)

Wakes up the CAN peripheral from sleep mode .

Parameters
CANx,:where x can be 1 or 2 to select the CAN peripheral.
Return values
CAN_WakeUp_Okif sleep mode left, CAN_WakeUp_Failed otherwise.