dsPIC33/PIC24 Family Reference Manual
DS70005340A-page 76 2018 Microchip Technology Inc.
7.0 TRANSMIT EVENT FIFO – TEF
The TEF allows the application to keep track of the order and time in which the messages are
transmitted. The TEF works similarly to a receive FIFO. Instead of storing received messages, it
stores transmitted messages. Messages are only saved if STEF (C1CONH<3>) is set. The
sequence number (SEQ) of the transmitted message is copied into the TEF object. The payload
data is not stored. Transmitted messages are timestamped if TEFTSEN is set.
Table 7-1 specifies the TEF object. The first two words of the TEF object are a copy of the
transmit message object. Optionally, the TEF object contains the timestamp when the message
is transmitted.
7.1 Reading a TEF Object
Before reading a TEF object, the application must check that the TEF is not empty by reading
the C1TEFSTA register. The TEF is not empty if TEFNEIF is set.
The TEF user address points to the address in RAM of the next TEF object to read. The actual
address in RAM is calculated using Equation 7-1. TE0 of the TEF object is read first, followed by
TE1 and TE2.
Equation 7-1: Start Address of TEF Object
After the TEF object is read from RAM, the TEF needs to be incremented by setting UINC
(C1TEFCONL<8>). This will cause the CAN FD Protocol Module to increment the Tail and
update C1TEFUAH/L.
Now the next message can be read from the TEF.
7.1.1 RESETTING THE TEF
TEF can be reset by:
• Setting FRESET (C1TEFCONL<10>) or
• Placing the module in Configuration mode (OPMOD<2:0> = 100)
Resetting the FIFO will reset the Head and Tail Pointers, and the C1TEFSTA register. The
settings in the C1TEFCONH and C1TEFCONL registers will not change.
A = BaseAddress = C1FIFOBAH/L