SPRACE5A May   2019  – May 2021 TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DK-Q1

 

  1.   1
  2.   2
    1.     3
  3.   4
  4.   5
    1.     6
    2.     7
    3.     8
      1.      9
      2.      10
      3.      11
  5.   12
    1.     13
      1.      14
    2.     15
    3.     16
    4.     17
    5.     18
  6.   19
  7.   20

Program Descriptions

This section provides a brief description of the example projects, along with applicable waveforms captured with an oscilloscope. Note that the examples are within C2000Ware.

  • can_ex1_loopback.c

This example illustrates the use of self-test mode. A message is transmitted once per second, using a simple delay loop for timing. The message that is sent is a 2 byte message that contains an incrementing pattern. This example sets up the CAN controller in "External" Loopback test mode. Data transmitted is visible on the CANTXA pin and is received internally back to the CAN Core. It is important that the GPIO mapping in device.h file in this project is edited to reflect the GPIO pins that are used for CAN function in your hardware. Otherwise, the transmitted data will not be seen on CANTXA pin.

Figure 2-1 shows the activity on the CANTXA pin.

GUID-20210518-CA0I-25K7-DC7Q-SJWVCWMKHWCK-low.png Figure 2-1 can_ex1_loopback
  • can_ex2_loopback_interrupts.c

Similar to can_ex1_loopback.c, but uses interrupts.

  • can_ex3_external_transmit.c

This example shows basic setup of CAN in order to transmit and receive messages. It sets up CAN-A as the transmitter and CAN-B as the receiver. A receive interrupt is asserted on CAN-B to verify the received data.

  • can_ex4_simple_transmit.c

This example illustrates how to setup the CAN module for transmission. It could prove very useful to check the hardware connections of the CAN circuit.

Figure 2-2, Figure 2-3 and Figure 2-4 show how data is stored in the IFxDATA registers.

Figure 2-2 CAN_IF1DATA Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Data_3 Data_2 Data_1 Data_0
R/W-0h R/W-0h R/W-0h R/W-0h
Figure 2-3 CAN_IF1DATB Register
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Data_7 Data_6 Data_5 Data_4
R/W-0h R/W-0h R/W-0h R/W-0h
GUID-20210504-CA0I-Z8VX-B9SQ-NGXKPFX9NRDN-low.png Figure 2-4 IFxDATA Registers in CCS Expressions Window

With the above configurations, data is transmitted in the order shown in Figure 2-5.

Figure 2-5 depicts the waveform on the CANTXA pin.

GUID-20210518-CA0I-CD2W-PZJK-FNSB9ZSDRW2J-low.png Figure 2-5 can_ex4_simple_transmit

Figure 2-6 shows the waveform at the CANRXA pin. Note that during the ACK phase, the transmitting node transmits a recessive, but it is driven low by the receiver.

GUID-660B6230-F497-415D-A4F7-17805E4708CC-low.gif Figure 2-6 Waveform at the CANRXA Pin
  • can_ex5_simple_receive.c

This example is a simple illustration of how to setup the CAN module for reception. This example could prove very useful to generate an ACK for another CAN node.

  • can_ex8_Remote_Tx.c

This example demonstrates the ability of the CAN-A module to transmit a Remote-frame and receive a response in the same mailbox. CAN-B node is configured to respond to the Remote frame. If CAN-B is not available, a CAN bus analyzer may be used to provide a response. Note that the response time from such equipment may be more, because it involves some overhead due to the application running on the PC.

Figure 2-7 shows the response from a bus analyzer. Note that it takes about 13 ms for the response to show up on the bus.

GUID-3474E44A-A588-4E45-81B1-FDF32D235798-low.gif Figure 2-7 can_ex8_Remote_Tx-PEAK

Figure 2-8 shows the response from CAN-B. Response is in microseconds in this case.

GUID-9BC1C7AE-C09A-4A1C-8539-FE34BD85670C-low.gif Figure 2-8 can_ex8_Remote_Tx-28x
  • can_ex9_Remote_Answer.c

Figure 2-9 demonstrates the ability of the module to respond to a Remote-frame. A remote frame is transmitted from the CAN bus analyzer and the module responds.

GUID-CD8A047D-401B-4551-8F28-1A1AF9628FBB-low.gif Figure 2-9 can_ex9_Remote_Answer
  • can_ex10_Mask.c

This example demonstrates acceptance mask filtering. It can be used to evaluate the effects of MXtd & MDir bits. Table 2-1 shows the various scenarios and the outcomes. Mailbox direction was set to Receive (Dir = 0) , An extended ID was written to the mailbox (Xtd = 1) and filtering enabled (UMask = 1). MXtd and MDir bits were cycled through the four possible combinations.

  • An Ext ID frame, satisfying the filtering criterion, is transmitted. MXtd & Mdir bits have no bearing on the frame reception in all four cases.
    Table 2-1 Extended ID Frame (passing filter criterion)
    MXtd Mdir Outcome
    1 1 Frame received
    1 0 Frame received
    0 1 Frame received
    0 0 Frame received
  • An STD ID frame, with exact match for the 11 applicable bits (bits 28:18), is transmitted. In the case where MXtd is 0, the Xtd bit of the mailbox was not used for filtering. Rather, the 11 applicable bits were found to be matching and, hence, the frame was received.
    Table 2-2 Standard ID Frame (exact match)
    MXtd Mdir Outcome
    1 1 Frame not received
    1 0 Frame not received
    0 1 Frame received
    0 0 Frame received
  • An STD ID frame, with passing filter criterion for the 11 applicable bits (bits 28:18), is transmitted. In the case where MXtd is 0, the Xtd bit of the mailbox was not used for filtering. Rather, the 11 applicable bits were found to be matching and the hence the frame was received.
    Table 2-3 Standard ID Frame (passing filter criterion)
    MXtd Mdir Outcome
    1 1 Frame not received
    1 0 Frame not received
    0 1 Frame received
    0 0 Frame received

It is important to remember that the stored Message Identifier will be over-written by the identifier of the received frame. In order for acceptance filtering to work correctly for subsequent frames, the message object must be reinitialized with the original identifier.