SPRA876B January   2003  – September 2017 TMS320C28341 , TMS320C28341 , TMS320C28342 , TMS320C28342 , TMS320C28343 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28344 , TMS320C28345 , TMS320C28345 , TMS320C28346 , TMS320C28346 , TMS320C28346-Q1 , TMS320C28346-Q1 , TMS320F2801 , TMS320F2801 , TMS320F2801-Q1 , TMS320F2801-Q1 , TMS320F28016 , TMS320F28016 , TMS320F28016-Q1 , TMS320F28016-Q1 , TMS320F2802 , TMS320F2802 , TMS320F2802-Q1 , TMS320F2802-Q1 , TMS320F28030 , TMS320F28030 , TMS320F28030-Q1 , TMS320F28030-Q1 , TMS320F28031 , TMS320F28031 , TMS320F28031-Q1 , TMS320F28031-Q1 , TMS320F28032 , TMS320F28032 , TMS320F28032-Q1 , TMS320F28032-Q1 , TMS320F28033 , TMS320F28033 , TMS320F28033-Q1 , TMS320F28033-Q1 , TMS320F28034 , TMS320F28034 , TMS320F28034-Q1 , TMS320F28034-Q1 , TMS320F28035 , TMS320F28035 , TMS320F28035-EP , TMS320F28035-EP , TMS320F28035-Q1 , TMS320F28035-Q1 , TMS320F28050 , TMS320F28050 , TMS320F28051 , TMS320F28051 , TMS320F28052 , TMS320F28052 , TMS320F28052-Q1 , TMS320F28052-Q1 , TMS320F28053 , TMS320F28053 , TMS320F28054 , TMS320F28054 , TMS320F28054-Q1 , TMS320F28054-Q1 , TMS320F28055 , TMS320F28055 , TMS320F2806 , TMS320F2806 , TMS320F2806-Q1 , TMS320F2806-Q1 , TMS320F28062 , TMS320F28062 , TMS320F28062-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28062F-Q1 , TMS320F28063 , TMS320F28063 , TMS320F28064 , TMS320F28064 , TMS320F28065 , TMS320F28065 , TMS320F28066 , TMS320F28066 , TMS320F28066-Q1 , TMS320F28066-Q1 , TMS320F28067 , TMS320F28067 , TMS320F28067-Q1 , TMS320F28067-Q1 , TMS320F28068F , TMS320F28068F , TMS320F28068M , TMS320F28068M , TMS320F28069 , TMS320F28069 , TMS320F28069-Q1 , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M , TMS320F28069M-Q1 , TMS320F28069M-Q1 , TMS320F2808 , TMS320F2808 , TMS320F2808-Q1 , TMS320F2808-Q1 , TMS320F2809 , TMS320F2809 , TMS320F2810 , TMS320F2810 , TMS320F2810-Q1 , TMS320F2810-Q1 , TMS320F2811 , TMS320F2811 , TMS320F2811-Q1 , TMS320F2811-Q1 , TMS320F2812 , TMS320F2812 , TMS320F2812-Q1 , TMS320F2812-Q1 , TMS320F28232 , TMS320F28232 , TMS320F28232-Q1 , TMS320F28232-Q1 , TMS320F28234 , TMS320F28234 , TMS320F28234-Q1 , TMS320F28234-Q1 , TMS320F28235 , TMS320F28235 , TMS320F28235-Q1 , TMS320F28235-Q1 , TMS320F28332 , TMS320F28332 , TMS320F28333 , TMS320F28333 , TMS320F28334 , TMS320F28334 , TMS320F28335 , TMS320F28335 , TMS320F28335-Q1 , TMS320F28335-Q1 , TMS320R2811 , TMS320R2811 , TMS320R2812 , TMS320R2812

 

  1.   Programming Examples for the TMS320x28xx eCAN
    1.     Trademarks
    2. 1 Introduction
      1. 1.1 TMS320F28x eCAN Features
    3. 2 Programs
    4. 3 Debug and Design Tips to Resolve/Avoid CAN Communication Issues
      1. 3.1 Minimum Number of Nodes Required
      2. 3.2 Why a Transceiver is Needed
      3. 3.3 Debug Checklist
        1. 3.3.1 Programming Issues
        2. 3.3.2 Physical Layer Issues
        3. 3.3.3 Hardware Debug Tips
    5. 4 References
  2.   Revision History

Programs

The example projects are meant to run seamlessly when installed in the Examples directory of C2000ware. If running the examples on a 2833x/2832x target, unzip the files in C:\ti\c2000\C2000Ware_1_00_01_00\device_support\f2833x\examples directory. For other target devices, the target directory and support files need to be modified.

  • CAN_MBXRAMRW
  • This example performs repeated writes and reads to the mailbox RAM. Since it exercises the mailbox RAM heavily, it may also be used to check the correct functionality of the mailbox RAM bits.

  • CAN_TXLOOP
  • This program transmits data to another CAN module. The transmit loop can be executed a predetermined number of times or infinite times. Useful to check the transmit functionality.

  • CAN_RXLOOP
  • This is an example of how data may be received using polling.

  • CAN_RXINT
  • This is a simple example of how data may be received using interrupts. It also illustrates the ability of the CAN module to service multiple interrupts automatically.

  • CAN_ECHO-AB
  • CAN-A transmits to CAN-B, which then echoes the data back to CAN-A. CAN-A then verifies the transmitted and received data. This example can be used to check communication between CAN-A and CAN-B. Both CAN ports of the DSP need to be connected to each other (via CAN transceivers).

  • CAN_DBOTX
  • Illustrates the operation of DBO field for a Transmit mailbox.

  • CAN_DLCTX
  • Illustrates the operation of DLC field for a Transmit mailbox.

  • CAN_MBXWDIF
  • This code illustrates the functionality of the WDIFn bit (WDIF- Write Denied Interrupt Flag).

  • CAN_MOTO
  • This example illustrates the ”Message Object Time Out (MOTO)” feature.

  • CAN_ MULTINT
  • This example illustrates the ability of the CAN module to service multiple interrupts automatically. Specifically, this example shows how when an interrupt flag is set while another interrupt flag is already set, the most recent interrupt flag automatically generates a core level interrupt upon exiting the ISR of the previous interrupt.

  • CAN_RXMSGLST
  • This example illustrates how contents of a mailbox can be protected from being overwritten by using the “Overwrite Protection Control (OPC)” bit.

  • CAN_TCOF
  • This example illustrates the functionality of the “Timer Counter Overflow Flag (TCOF)” bit.

  • CAN_TRPRTSTP
  • This program illustrates the programmable transmit-priority and time stamping feature.

  • CAN_TXABORT Checks the transmit abort operation using the TRR bit. RXMSGLST.c
  • Checks the transmit abort operation using the TRR bit.

  • CAN_LPMwakeup
  • This example illustrates the ability of the CAN module to enter and exit low-power mode (LPM). Note that this low-power-mode is local to the CAN module and should not be confused with the device-level low-power-modes like HALT, STANDBY and IDLE.

  • CAN_REMOTE_fr
  • This example illustrates the ability of the CAN module to SEND remote frames from (and receive data frames in) the same Mailbox.

  • CAN_LAM
  • Illustrates how Acceptance Mask Filtering works using CANLAM registers.

  • CAN_jig
  • A useful test-jig for debugging CAN bus issues. Can Transmit/Receive Standard and Extended frames at various bit-rates. Also capable of transmitting (and responding to) Remote frames. All options are selected using GPIO0-GPIO3 or through a hard-coded value in the program.