SPMA087 March   2023 TM4C1230C3PM , TM4C1230C3PM , 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 , TM4C123GH6ZXR , TM4C123GH6ZXR , TM4C1290NCPDT , TM4C1290NCPDT , TM4C1290NCZAD , TM4C1290NCZAD , TM4C1292NCPDT , TM4C1292NCPDT , TM4C1292NCZAD , TM4C1292NCZAD , TM4C1294KCPDT , TM4C1294KCPDT , TM4C1294NCPDT , TM4C1294NCPDT , TM4C1294NCZAD , TM4C1294NCZAD , TM4C1297NCZAD , TM4C1297NCZAD , TM4C1299KCZAD , TM4C1299KCZAD , TM4C1299NCZAD , TM4C1299NCZAD , TM4C129CNCPDT , TM4C129CNCPDT , TM4C129CNCZAD , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XKCZAD , TM4C129XNCZAD , TM4C129XNCZAD

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
  4. 2How to Install
    1. 2.1 Update the FreeRTOS Version in the TivaWare Directory
    2. 2.2 Adding FreeRTOS Hardware Driver Files for TM4C LaunchPads
  5. 3Architecture for TM4C FreeRTOS Examples
    1. 3.1 Proper Clock Configuration
    2. 3.2 How to use Hardware Interrupts Alongside the FreeRTOS Kernel
    3. 3.3 Code Composer Studio Debug Support for FreeRTOS
  6. 4Example Project Walkthroughs
    1. 4.1 Download and Import the Examples
    2. 4.2 USB Examples
      1. 4.2.1 usb_dev_bulk
      2. 4.2.2 usb_dev_cdcserial
      3. 4.2.3 usb_dev_keyboard
    3. 4.3 Ethernet Examples
      1. 4.3.1 enet_lwip
        1. 4.3.1.1 Running enet_lwip Example
      2. 4.3.2 enet_io
        1. 4.3.2.1 Running enet_io Example
  7. 5References

usb_dev_cdcserial

This example configures the USB peripheral to function as a USB device in CDC mode and configures the UART0 peripheral to be able to both transmit and receive data. The example demonstrates a UART to USB bridge with bi-directional communication. To run the full demonstration, two USB cables are needed. One will connect to the Stellaris Virtual COM Port which runs through UART0 and the other will connect to the USB bus of the TM4C microcontroller which will enumerate as a serial COM port when used as a CDC device. Using COM port terminal software, messages can be sent back and forth between UART and USB.

In this example, three tasks are created to manage the UART to USB bridge. The UART to USB task blocks a task notification is given from the UART RX interrupt. Once unblocked, the task checks for how much USB TX buffer space is available before reading in bytes of UART data to write back over USB. It also gathers data on any UART errors received and if any errors occur that information is sent to the error handler via a queue.

The USB to UART task blocks until a task notification is given from the USB RX handler to indicate data has been received. It will read out the USB data from the USB RX buffer and send the bytes of UART. To ensure the UART TX FIFO has enough time to send messages, TX interrupts are enabled and monitored as part of this process. Furthermore, a mutex is used to guard access to the task as USB messages can be received and processed faster than UART transfers can be completed.

The final task is an error handler that waits for error data to arrive via a queue, and if received it processes what errors occurred and reports them back to the USB stack so the CDC driver is aware of the errors that occurred.