SPNA244 September   2020 TM4C1230D5PM , TM4C1230D5PM , TM4C1230E6PM , TM4C1230E6PM , TM4C1230H6PM , TM4C1230H6PM , TM4C1231C3PM , TM4C1231C3PM , TM4C1231D5PM , TM4C1231D5PM , TM4C1231D5PZ , TM4C1231D5PZ , TM4C1231E6PM , TM4C1231E6PM , TM4C1231E6PZ , TM4C1231E6PZ , TM4C1231H6PGE , TM4C1231H6PGE , TM4C1231H6PM , TM4C1231H6PM , TM4C1231H6PZ , TM4C1231H6PZ , TM4C1232C3PM , TM4C1232C3PM , TM4C1232D5PM , TM4C1232D5PM , TM4C1232E6PM , TM4C1232E6PM , TM4C1232H6PM , TM4C1232H6PM , TM4C1233C3PM , TM4C1233C3PM , TM4C1233D5PM , TM4C1233D5PM , TM4C1233D5PZ , TM4C1233D5PZ , TM4C1233E6PM , TM4C1233E6PM , TM4C1233E6PZ , TM4C1233E6PZ , TM4C1233H6PGE , TM4C1233H6PGE , TM4C1233H6PM , TM4C1233H6PM , TM4C1233H6PZ , TM4C1233H6PZ , TM4C1236D5PM , TM4C1236D5PM , TM4C1236E6PM , TM4C1236E6PM , TM4C1236H6PM , TM4C1236H6PM , TM4C1237D5PM , TM4C1237D5PM , TM4C1237D5PZ , TM4C1237D5PZ , TM4C1237E6PM , TM4C1237E6PM , TM4C1237E6PZ , TM4C1237E6PZ , TM4C1237H6PGE , TM4C1237H6PGE , TM4C1237H6PM , TM4C1237H6PM , TM4C1237H6PZ , TM4C1237H6PZ , TM4C123AE6PM , TM4C123AE6PM , TM4C123AH6PM , TM4C123AH6PM , TM4C123BE6PM , TM4C123BE6PM , TM4C123BE6PZ , TM4C123BE6PZ , TM4C123BH6PGE , TM4C123BH6PGE , TM4C123BH6PM , TM4C123BH6PM , TM4C123BH6PZ , TM4C123BH6PZ , TM4C123BH6ZRB , TM4C123BH6ZRB , TM4C123FE6PM , TM4C123FE6PM , TM4C123FH6PM , TM4C123FH6PM , TM4C123GE6PM , TM4C123GE6PM , TM4C123GE6PZ , TM4C123GE6PZ , TM4C123GH6PGE , TM4C123GH6PGE , TM4C123GH6PM , TM4C123GH6PM , TM4C123GH6PZ , TM4C123GH6PZ , TM4C123GH6ZRB , TM4C123GH6ZRB

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
  4. 2Installation of Edde Flex CAN Booster Pack for TI TIVA C
  5. 3Download and Import the CAN Host Examples
  6. 4Modified CAN.C for Interrupts
  7. 5Example Projects
    1. 5.1 Internal Loopback With Interrupts (simple_can_loopback)
    2. 5.2 Simple CAN Transmit (simple_can_tx)
    3. 5.3 Simple CAN Receive (simple_can_rx)
    4. 5.4 CAN UART Bridge (can_uart_bridge)
  8. 6CAN Bootloader
    1. 6.1 Bootloader Configuration
    2. 6.2 Boot Demo Program (boot_demo_can)
    3. 6.3 UART-to-CAN Bridge for LM Flash Programmer Support
      1. 6.3.1 CCS Demo Program (uart_to_can)
      2. 6.3.2 SendCANID PC Program
    4. 6.4 Using the CAN Bootloader

Modified CAN.C for Interrupts

The version of the driver library file can.c in TivaWare version 2.2.0.295 and earlier, and the ROM based version, use interface one (IF1) registers for most functions and interface two (IF2) registers for receiving messages (CANMessageGet()). This can create an issue when the CAN functions are used in the main application code and in interrupt routines or in multiple threads of an RTOS. The consistency of the interface registers is not maintained during the interrupt or task switch. The updated version of can.c included with this application note uses IF1 registers for all functions when the CPU is not in an exception and uses IF2 registers when the CPU is in an exception state. This simplifies writing code for CAN using interrupts. When using an RTOS, all CAN functions should be in one thread or in one interrupt routine.

The can.c file located in the driverlib folder of the latest TivaWare installation can be replaced with the provided can.c file and the driver library rebuilt, or the provided can.c file can be added directly to your project.