Welcome to the first installment in a series of blog posts that will review the major components of the SimpleLink™ microcontroller (MCU) platform’s software development kits (SDKs). These SDKs feature common components and device-specific middleware that speed time to market and provide a unified development experience across the entire SimpleLink MCU portfolio of wired and wireless devices.
One of the most important components of SimpleLink MCU SDKs are TI Drivers, which offer portable, feature-rich access to device peripherals through easy-to-use functional application programming interfaces (APIs). TI Drivers are open source (Berkeley Software Distribution license [BSD]) and built on a hardware abstraction layer (DriverLib). This device-agnostic approach provides easy portability of the application code across SimpleLink devices now and into the future.
Peripherals exposed through these intuitive and consistent TI Driver APIs include analog-to-digital converters (ADCs), a universal asynchronous receiver/transmitter (UART), a Serial Peripheral Interface (SPI), pulse-width modulation (PWM) and general-purpose input/output (GPIO), among many others. Figure 1 shows the key components of the SDK with TI Drivers highlighted.
Figure 1: TI Drivers within the SimpleLink MCU SDK
TI Drivers currently work with a real-time operating system (RTOS) and all devices within the SimpleLink platform support TI-RTOS. Most SimpleLink devices also support FreeRTOS. However, rather than directly calling a kernel-specific API, TI Driver code examples leverage the Portable Operating System Interface (POSIX) and driver porting layer (DPL) to provide a consistent API layer on top of a desired kernel. This consistent API requires less than 2KB of memory for typical applications.
The SimpleLink SDK is also compliant with POSIX, an industry standard Institute for Electrical and Electronic Engineers (IEEE) abstraction layer, which exposes kernel-related functions through a common set of APIs. POSIX offers source-code compatibility between different RTOS kernels, so regardless of which RTOS variant you select for this example, the application source code is identical and fully portable between TI-RTOS or FreeRTOS.
Using TI Drivers and the POSIX APIs, you can develop an application such as a low-power thermostat using the SimpleLink MSP432™ MCU. And if your needs change, Wi-Fi® connectivity can be added based on a SimpleLink CC3220 wireless MCU or by combining the host MSP432 MCU with the CC3120 wireless network processor. All of the thermostat control software, user interfaces and applications that you develop for the MSP432 MCU-based thermostat are 100 percent reusable in the new Wi-Fi thermostat.
Similarly, if you need to release a Bluetooth® low energy thermostat for phone pairing, all of that software is also portable to a CC2640R2F wireless MCU solution – with or without the host MSP432 MCU. Or when moving to a gateway sensor network in an industrial setting, you can still use the same software developed for that stand-alone thermostat in a Sub-1 GHz sensor network application on a dual-band CC1350 wireless MCU (which also enables a Bluetooth low energy connection to the smartphone). As you can see, it’s easy to enhance system functionality using various connectivity options by reusing the initial application across each SimpleLink MCU without starting from scratch.
TI Driver APIs are fully documented within a doxygen-generated API guide. The API guide is available in TI Resource Explorer and delivered within the SimpleLink SDK. For each TI Driver, you will find a generic usage example, as well as instructions on how to configure and initialize the driver. All functions available for each TI Driver are fully documented to help you exercise the capabilities exposed by the driver.
TI Resource Explorer also provides code examples using TI Drivers. Each example is packaged with a README.html page, which includes documentation and an overview of each example. A Board.html page shows how to access some hardware resources in your software (on-board LEDs, push-buttons, etc.). Without having to download or unzip anything, you can easily explore the contents of the project.
The next installment of this SimpleLink MCU SDK series will provide more insights on RTOS and POSIX support.