SPRAD59 October   2023 TMS320F280039

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. Introduction
  5. Key Differences Between DCAN and MCAN
  6. Module Initialization
    1. 3.1 DCAN Initialization
    2. 3.2 MCAN Initialization
    3. 3.3 Initialization sequence
    4. 3.4 Code Snippets for Module Initialization
  7. Bit Timing Configuration
  8. Message RAM Configuration
  9. Interrupt handling
    1. 6.1 MCAN Interrupt Sources
    2. 6.2 DCAN Interrupt Handling
    3. 6.3 MCAN Interrupt Handling
  10. Transmitting data
    1. 7.1 Basic Transmission Process
      1. 7.1.1 Transmission with DCAN
      2. 7.1.2 Transmission with MCAN
    2. 7.2 MCAN Vs DCAN Transmit Procedural Differences
    3. 7.3 MCAN Transmit Concepts
      1. 7.3.1 Tx Event FIFO
  11. Receiving Data
    1. 8.1 Introduction to Reception
    2. 8.2 Basic Reception Process
      1. 8.2.1 DCAN Reception
      2. 8.2.2 MCAN Reception
    3. 8.3 Filter Elements
      1. 8.3.1 Filter Element Structure
    4. 8.4 Rx Buffer
      1. 8.4.1 Receiving in Rx Buffer
    5. 8.5 Rx FIFO
      1. 8.5.1 Receiving in Rx FIFO
    6. 8.6 Receiving High Priority Messages
  12. Avoiding network errors
  13. 10References

Receiving in Rx FIFO

Filter configurations to store a matching frame into Rx FIFO have been described above.

Note: The following discussion can be applied separately to either of the Rx FIFOs.

There are a number of ways to read a new message. Separate interrupts can be generated when any new message is received in a FIFO element or when the FIFO becomes full (size of the FIFO set during Message RAM configuration). To avoid losing data on account of the FIFO being full, it is also possible to set a watermark (during Message RAM configuration). When the FIFO fill level reaches the set watermark, an interrupt is generated which can be used to read the entire FIFO (see Figure 8-4).

The new message (or messages) can be read directly from the Message RAM using Driverlib API after which the Get index needs to be incremented. This can be done by writing the index of the last element read to the register MCAN_RXFxA, which is done using a Driverlib API as shown below.

To read multiple messages from the FIFO, the same code can be called in a loop.

GUID-20231010-SS0I-GVBS-4PHN-FKG1VWXX4DRM-low.png Figure 8-4 Reception with Rx FIFO