SPMA072 March 2015 TM4C1294KCPDT , TM4C1294KCPDT , TM4C1294NCPDT , TM4C1294NCPDT , TM4C1294NCZAD , TM4C1294NCZAD , TM4C1299KCZAD , TM4C1299KCZAD , TM4C1299NCZAD , TM4C1299NCZAD , TM4C129EKCPDT , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129ENCZAD , TM4C129XKCZAD , TM4C129XKCZAD , TM4C129XNCZAD , TM4C129XNCZAD
Some legacy products may only contain a serial port and accessing such products is increasingly becoming a challenge due to the inability to add multiple such products to a shared network and the inability to access the legacy product from long distances. A serial-to-Ethernet converter provides a simple solution to solve the above challenges. The software described in this application report allows an Ethernet-based TM4C129x microcontroller to be used as a serial-to-Ethernet converter. TM4C129x microcontroller is ideally suited for this application due to the integration of MAC and PHY on the microcontroller along with on-chip voltage regulator. This allows quicker time-to-market and cost savings. The software uses FreeRTOS to schedule the various tasks and runs out of the box on an EK-TM4C1294XL board.
Project collateral and source code discussed in this application report can be downloaded from the following URL: http://www.ti.com/lit/zip/spma072.
Code Composer Studio, Tiva are trademarks of Texas Instruments.
Keil is a registered trademark of ARM Limited.
IAR is a trademark of IAR Systems AB.
All other trademarks are the property of their respective owners.
When a legacy product only contains a serial port for configuration or control, continuing to access the legacy product through the serial interface can become challenging over time. The following are the challenges of using a serial port:
Using Ethernet in place of the serial port provides the following benefits:
The software described in this application report (enet_s2e) allows an Ethernet-enabled TM4C129x microcontroller to be used as a serial-to-Ethernet converter. By connecting a serial-to-Ethernet converter to the serial port of a legacy product, it can be given the ability to operate on the Ethernet without requiring any changes to the existing hardware or software. This is especially useful when the legacy product cannot be modified (such as in the case of third-party products).
The software works out of the box on an EK-TM4C1294XL board. With minor modifications, the software can run on the DK-TM4C129X board. For details, see Section 3.2.
FreeRTOS has been used for scheduling the various tasks. Although an RTOS is not a requirement for this application, it has been used to make the application easily scalable.
The main function of the enet_s2e application is to transfer information between serial peripherals and the Ethernet. To transfer information over the Ethernet, Telnet protocol is used. A number of features are provided in the application to make this process easy to use and robust. The following are some of these features.
The application runs a webserver to manage the dynamic/run-time configuration of many parameters. For more details of the configuration webserver and the different settings, see Section 5.2.
This application uses two serial peripherals and two Telnet ports. The serial peripheral and Telnet port are configured such that each serial peripheral can transmit and receive data to and from only one Telnet port. There are two such serial-Telnet pairs, represented by Port0 and Port1. By default, the serial interface of Port0 and Port1 are assigned to UART4 and UART3 peripherals, respectively. This default peripheral assignment can be modified in config.h file. If the default peripheral assignment is modified, then the assignment of the interrupt handlers SerialPort0IntHandler and SerialPort1IntHandler in the vector table should also be modified. The vector table is located in the start-up file.
The Telnet ports can be configured in both server and client modes along with the necessary parameters like port number and IP address. By default, both the Telnet ports are configured as server. The Telnet ports used by Port0 and Port1 are 23 and 26, respectively.
Port0 and Port1 settings can be modified dynamically. You also have an option to make these modifications permanent. For more details about these settings, see Section 5.2.2. The default values of these settings are stored in the global array g_sParametersFactory (present in the config.c file).
The enet_s2e application uses FreeRTOS to run multiple tasks in a concurrent fashion, a TCP/IP stack, called lwIP, to handle the TCP/IP packets and TivaWare for C Series that includes peripheral driver library and other utilities that simplify application development. Figure 1 shows the interaction between different software layers of this application.
The enet_s2e.c file contains the main function and performs the initialization before handing over control to the FreeRTOS scheduler. The tasks and their responsibilities are as follows:
The TCP/IP task and Ethernet task are created and managed by the lwIP library.
The data transfer between the serial peripherals and telnet sockets is handled by the TelnetHandler() function (present in telnet.c file), which is called by lwIPHostTimerHandler() function (present in lwip_task.c file). The lwIPHostTimerHandler() function runs in the TCP/IP task context.