Dataflow Runtime API  3.1.1.0
Classes | Enumerations | Functions
SystemPeripherals_CAN.h File Reference
#include <Imt.Base.Core.Platform/Platform.h>
#include "SystemMemoryMap.h"

Classes

struct  CanConfigMessageObject
 Structure to configure a CAN message object. More...
 
struct  CanRxFrame
 Structure of a received CAN frame. More...
 
struct  CanTxFrame
 Structure of a CAN frame to transmit. More...
 

Enumerations

enum  CanModuleAddress { CanModuleAddress_Can0 = SOC_DCAN_0_REGS , CanModuleAddress_Can1 = SOC_DCAN_1_REGS }
 Controller Area Network (CAN). More...
 
enum  CanBitRate { CanBitRate_1MBit }
 Id's of the available CAN baud rates. More...
 
enum  CanBusError {
  CanBusError_None , CanBusError_UnknownError , CanBusError_Bit , CanBusError_Stuff ,
  CanBusError_Crc , CanBusError_Form , CanBusError_Acknowledgement
}
 Defines the CAN errors. More...
 
enum  CanMessageObjectNumber {
  CanMessageObjectNumber_1 = 1 , CanMessageObjectNumber_2 = 2 , CanMessageObjectNumber_3 = 3 , CanMessageObjectNumber_4 = 4 ,
  CanMessageObjectNumber_5 = 5 , CanMessageObjectNumber_6 = 6 , CanMessageObjectNumber_7 = 7 , CanMessageObjectNumber_8 = 8 ,
  CanMessageObjectNumber_9 = 9 , CanMessageObjectNumber_10 = 10 , CanMessageObjectNumber_11 = 11 , CanMessageObjectNumber_12 = 12 ,
  CanMessageObjectNumber_13 = 13 , CanMessageObjectNumber_14 = 14 , CanMessageObjectNumber_15 = 15 , CanMessageObjectNumber_16 = 16 ,
  CanMessageObjectNumber_17 = 17 , CanMessageObjectNumber_18 = 18 , CanMessageObjectNumber_19 = 19 , CanMessageObjectNumber_20 = 20 ,
  CanMessageObjectNumber_21 = 21 , CanMessageObjectNumber_22 = 22 , CanMessageObjectNumber_23 = 23 , CanMessageObjectNumber_24 = 24 ,
  CanMessageObjectNumber_25 = 25 , CanMessageObjectNumber_26 = 26 , CanMessageObjectNumber_27 = 27 , CanMessageObjectNumber_28 = 28 ,
  CanMessageObjectNumber_29 = 29 , CanMessageObjectNumber_30 = 30 , CanMessageObjectNumber_31 = 31 , CanMessageObjectNumber_32 = 32 ,
  CanMessageObjectNumber_33 = 33 , CanMessageObjectNumber_34 = 34 , CanMessageObjectNumber_35 = 35 , CanMessageObjectNumber_36 = 36 ,
  CanMessageObjectNumber_37 = 37 , CanMessageObjectNumber_38 = 38 , CanMessageObjectNumber_39 = 39 , CanMessageObjectNumber_40 = 40 ,
  CanMessageObjectNumber_41 = 41 , CanMessageObjectNumber_42 = 42 , CanMessageObjectNumber_43 = 43 , CanMessageObjectNumber_44 = 44 ,
  CanMessageObjectNumber_45 = 45 , CanMessageObjectNumber_46 = 46 , CanMessageObjectNumber_47 = 47 , CanMessageObjectNumber_48 = 48 ,
  CanMessageObjectNumber_49 = 49 , CanMessageObjectNumber_50 = 50 , CanMessageObjectNumber_51 = 51 , CanMessageObjectNumber_52 = 52 ,
  CanMessageObjectNumber_53 = 53 , CanMessageObjectNumber_54 = 54 , CanMessageObjectNumber_55 = 55 , CanMessageObjectNumber_56 = 56 ,
  CanMessageObjectNumber_57 = 57 , CanMessageObjectNumber_58 = 58 , CanMessageObjectNumber_59 = 59 , CanMessageObjectNumber_60 = 60 ,
  CanMessageObjectNumber_61 = 61 , CanMessageObjectNumber_62 = 62 , CanMessageObjectNumber_63 = 63 , CanMessageObjectNumber_64 = 64
}
 Enumeration of the available CAN message object numbers. More...
 

Functions

void CAN_Init (const CanModuleAddress moduleBaseAddress, const CanBitRate bitRate)
 Initialize the CAN module. More...
 
void CAN_ConfigureMessage (const CanModuleAddress moduleBaseAddress, const CanMessageObjectNumber messageNumber, const CanConfigMessageObject *pConfig)
 Configure a can message. More...
 
void CAN_StartTransmission (const CanModuleAddress moduleBaseAddress, const CanMessageObjectNumber messageNumber, const CanTxFrame *pTxMessage)
 Transfer the data bytes of a message into a message object. More...
 
uint16_t CAN_GetInterruptIdentifier (const CanModuleAddress moduleBaseAddress)
 Returns the interrupt identifier (the number indicates the source of the interrupt). More...
 
void CAN_ReadReceivedData (const CanModuleAddress moduleBaseAddress, const CanMessageObjectNumber messageNumber, CanRxFrame *pRxMessage)
 Get the data bytes of a message from a message object. More...
 
CanBusError CAN_GetCanBusError (const CanModuleAddress moduleBaseAddress)
 Returns a CAN bus error code. More...
 
bool CAN_IsInitBitSet (const CanModuleAddress moduleBaseAddress)
 Returns true if the Init bit of the CTL register is set, false otherwise. More...
 
bool CAN_IsBusOffBitSet (const CanModuleAddress moduleBaseAddress)
 Returns true if the BOff bit of the ES register is set, false otherwise. More...
 
void CAN_StartBusOffRecoverySequence (const CanModuleAddress moduleBaseAddress)
 Start the Bus off recovery sequence described in the TRM SPRUH73K Chapter 23.3.8.2.2. More...
 

Enumeration Type Documentation

◆ CanBitRate

enum CanBitRate

Id's of the available CAN baud rates.

Enumerator
CanBitRate_1MBit 

◆ CanBusError

Defines the CAN errors.

Enumerator
CanBusError_None 
CanBusError_UnknownError 
CanBusError_Bit 
CanBusError_Stuff 
CanBusError_Crc 
CanBusError_Form 
CanBusError_Acknowledgement 

◆ CanMessageObjectNumber

Enumeration of the available CAN message object numbers.

There are up to 64 message objects available on the AM335x. Message object number 1 has the highest priority.

Note
0 is not a valid message object number
Enumerator
CanMessageObjectNumber_1 
CanMessageObjectNumber_2 
CanMessageObjectNumber_3 
CanMessageObjectNumber_4 
CanMessageObjectNumber_5 
CanMessageObjectNumber_6 
CanMessageObjectNumber_7 
CanMessageObjectNumber_8 
CanMessageObjectNumber_9 
CanMessageObjectNumber_10 
CanMessageObjectNumber_11 
CanMessageObjectNumber_12 
CanMessageObjectNumber_13 
CanMessageObjectNumber_14 
CanMessageObjectNumber_15 
CanMessageObjectNumber_16 
CanMessageObjectNumber_17 
CanMessageObjectNumber_18 
CanMessageObjectNumber_19 
CanMessageObjectNumber_20 
CanMessageObjectNumber_21 
CanMessageObjectNumber_22 
CanMessageObjectNumber_23 
CanMessageObjectNumber_24 
CanMessageObjectNumber_25 
CanMessageObjectNumber_26 
CanMessageObjectNumber_27 
CanMessageObjectNumber_28 
CanMessageObjectNumber_29 
CanMessageObjectNumber_30 
CanMessageObjectNumber_31 
CanMessageObjectNumber_32 
CanMessageObjectNumber_33 
CanMessageObjectNumber_34 
CanMessageObjectNumber_35 
CanMessageObjectNumber_36 
CanMessageObjectNumber_37 
CanMessageObjectNumber_38 
CanMessageObjectNumber_39 
CanMessageObjectNumber_40 
CanMessageObjectNumber_41 
CanMessageObjectNumber_42 
CanMessageObjectNumber_43 
CanMessageObjectNumber_44 
CanMessageObjectNumber_45 
CanMessageObjectNumber_46 
CanMessageObjectNumber_47 
CanMessageObjectNumber_48 
CanMessageObjectNumber_49 
CanMessageObjectNumber_50 
CanMessageObjectNumber_51 
CanMessageObjectNumber_52 
CanMessageObjectNumber_53 
CanMessageObjectNumber_54 
CanMessageObjectNumber_55 
CanMessageObjectNumber_56 
CanMessageObjectNumber_57 
CanMessageObjectNumber_58 
CanMessageObjectNumber_59 
CanMessageObjectNumber_60 
CanMessageObjectNumber_61 
CanMessageObjectNumber_62 
CanMessageObjectNumber_63 
CanMessageObjectNumber_64 

◆ CanModuleAddress

Controller Area Network (CAN).

The Controller Area Network is a serial communications protocol which efficiently supports distributed realtime control with a high level of security. The DCAN module supports bitrates up to 1 Mbit/s and is compliant to the CAN 2.0B protocol specification. The core IP within DCAN is provided by Bosch. This device includes two instantiations of the DCAN controller: DCAN0 and DCAN1. Enumeration of the available CAN modules

Enumerator
CanModuleAddress_Can0 
CanModuleAddress_Can1 

Function Documentation

◆ CAN_ConfigureMessage()

void CAN_ConfigureMessage ( const CanModuleAddress  moduleBaseAddress,
const CanMessageObjectNumber  messageNumber,
const CanConfigMessageObject pConfig 
)

Configure a can message.

Note
All the message objects should be configured to particular identifiers or set to not valid before the message transfer is started.
See also
TRM SPRUH73K Chapter 23.3.14
Parameters
moduleBaseAddress
messageNumber
pConfig

◆ CAN_GetCanBusError()

CanBusError CAN_GetCanBusError ( const CanModuleAddress  moduleBaseAddress)

Returns a CAN bus error code.

Parameters
moduleBaseAddress
Returns

◆ CAN_GetInterruptIdentifier()

uint16_t CAN_GetInterruptIdentifier ( const CanModuleAddress  moduleBaseAddress)

Returns the interrupt identifier (the number indicates the source of the interrupt).

If several interrupts are pending, the CAN interrupt register will point to the pending interrupt with the highest priority. Among the message interrupts, the message object's interrupt priority decreases with increasing message number.

  • 0x0000: No interrupt is pending.
  • 0x0001-0x0080: Number of message object which caused the interrupt.
  • 0x0081-0x7FFF: Unused (values 0081 to 7FFF).
  • 0x8000: Error and status register value is not 0x07.
  • 0xFFFF: Unused.
    Parameters
    moduleBaseAddress
    Returns

◆ CAN_Init()

void CAN_Init ( const CanModuleAddress  moduleBaseAddress,
const CanBitRate  bitRate 
)

Initialize the CAN module.

1) Message and Error interrupts are enabled at DCANx_INT0 2) Automatic retransmission is enabled 3) There are up to 64 messages available, for each message a message object has to be configured 4) Non-configured messages will be ignored and filtered by hardware

Parameters
moduleBaseAddress
bitRate

◆ CAN_IsBusOffBitSet()

bool CAN_IsBusOffBitSet ( const CanModuleAddress  moduleBaseAddress)

Returns true if the BOff bit of the ES register is set, false otherwise.

Parameters
moduleBaseAddress
Returns

◆ CAN_IsInitBitSet()

bool CAN_IsInitBitSet ( const CanModuleAddress  moduleBaseAddress)

Returns true if the Init bit of the CTL register is set, false otherwise.

Parameters
moduleBaseAddress
Returns

◆ CAN_ReadReceivedData()

void CAN_ReadReceivedData ( const CanModuleAddress  moduleBaseAddress,
const CanMessageObjectNumber  messageNumber,
CanRxFrame pRxMessage 
)

Get the data bytes of a message from a message object.

See also
TRM SPRUH73K Chapter 23.3.14
Parameters
moduleBaseAddress
messageNumber
pRxMessage

◆ CAN_StartBusOffRecoverySequence()

void CAN_StartBusOffRecoverySequence ( const CanModuleAddress  moduleBaseAddress)

Start the Bus off recovery sequence described in the TRM SPRUH73K Chapter 23.3.8.2.2.

Parameters
moduleBaseAddress

◆ CAN_StartTransmission()

void CAN_StartTransmission ( const CanModuleAddress  moduleBaseAddress,
const CanMessageObjectNumber  messageNumber,
const CanTxFrame pTxMessage 
)

Transfer the data bytes of a message into a message object.

See also
TRM SPRUH73K Chapter 23.3.14
Note
The message identifier is configured with CAN_ConfigureMessage and the corresponding CanMessageObjectNumber.
Parameters
moduleBaseAddress
messageNumber
pTxMessage