The SimpleLink Wi-Fi CC3220SF LaunchPad development kit (CC3220SF-LAUNCHXL) highlights CC3220SF, a single-chip wireless microcontroller (MCU) with 1MB internal flash, 4MB external serial flash, 256KB of RAM and enhanced security features.
See the TI CC3220 Product Page for details.
- Two separate execution environments: a user application dedicated ARM Cortex-M4 MCU and a network processor MCU to run all Wi-Fi and internet logical layers
- 40-pin LaunchPad standard leveraging the BoosterPack ecosystem
- On-board accelerometer and temperature sensor
- Two buttons and three LEDs for user interaction
- UART through USB to PC
- BoosterPack plug-in module for adding graphical displays, audio codecs, antenna selection, environmental sensing, and more
- Power from USB for the LaunchPad and optional external BoosterPack
- XDS110-based JTAG emulation with serial port for flash programming
Details on the CC3220SF LaunchXL development board can be found in the CC3220SF LaunchPad Dev Kit Hardware User’s Guide.
The CC3220SF SoC has two MCUs:
- Applications MCU - an ARM® Cortex®-M4 Core at 80 MHz, with 256Kb RAM, and access to external serial 4MB flash with bootloader and peripheral drivers in ROM.
- Network Coprocessor (NWP) - a dedicated ARM MCU, which completely offloads Wi-Fi and internet protocols from the application MCU.
Complete details of the CC3220SF SoC can be found in the CC3220 TRM.
Zephyr has been ported to the Applications MCU, with basic peripheral driver support.
|SPI_0||on-chip||WiFi host driver|
For consistency with TI SimpleLink SDK and BoosterPack examples, the I2C driver defaults to I2C_BITRATE_FAST mode (400 kHz) bus speed on bootup.
The accelerometer, temperature sensors, or other peripherals accessible through the BoosterPack, are not currently supported.
Connections and IOs¶
Peripherals on the CC3220SF LaunchXL are mapped to the following pins in the file boards/arm/cc3220sf_launchxl/pinmux.c.
|LED D7 (R)||64||9|
|LED D6 (O)||01||10|
|LED D5 (G)||02||11|
The default configuration can be found in the Kconfig file at boards/arm/cc3220sf_launchxl/cc3220sf_launchxl_defconfig.
Programming and Debugging¶
For Windows developers, see the CC3220 Getting Started Guide for instructions on installation of tools, and how to flash the board using UniFlash.
Note that zephyr.bin produced by the Zephyr SDK may not load via UniFlash tool. If encountering difficulties, use the zephyr.elf file and openocd instead (see below).
The following instructions are geared towards Linux developers who prefer command line tools to an IDE.
Before flashing and debugging the board, there are a few one-time board setup steps to follow.
Download and install the latest version of UniFlash.
Jumper SOP[2..0] (J15) to , and connect the USB cable to the PC.
This should result in a new device “Texas Instruments XDS110 Embed with CMSIS-DAP” appearing at /dev/ttyACM1 and /dev/ttyACM0.
Update the service pack, and place the board in “Development Mode”.
Setting “Development Mode” enables the JTAG interface, necessary for subsequent use of OpenOCD and updating XDS110 firmware.
Follow the instructions in Section 2.4 “Download the Application”, in the CC3220 Getting Started Guide, except for steps 5 and 6 in Section 2.4.1 which select an MCU image.
Ensure the XDS-110 emulation firmware is updated.
Download and install the latest XDS-110 emulation package.
Follow the directions here to update the firmware: http://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds110.html#updating-the-xds110-firmware
Note that the emulation package install may place the xdsdfu utility in <install_dir>/ccs_base/common/uscif/xds110/.
Switch Jumper SOP[2..0] (J15) back to .
Remove power from the board (disconnect USB cable) before switching jumpers.
Install TI OpenOCD
Clone the TI OpenOCD git repository from: http://git.ti.com/sdo-emu/openocd. Follow the instructions in the Release Notes in that repository to build and install.
Since the default TI OpenOCD installation is /usr/local/bin/, and /usr/local/share/, you may want to backup any current openocd installations there. If you decide to change the default installation location, also update the OPENOCD path variable in boards/arm/cc3220sf_launchxl/board.cmake.
Ensure CONFIG_XIP=y (default) is set.
This locates the program into flash, and sets CONFIG_CC3220SF_DEBUG=y, which prepends a debug header enabling the flash to persist over subsequent reboots, bypassing the bootloader flash signature verification.
See Section 21.10 “Debugging Flash User Application Using JTAG” of the CC3220 TRM for details on the secure flash boot process.
Once the above prerequisites are met, applications for the
board can be built, flashed, and debugged with openocd and gdb per the Zephyr
Application Development Primer (see Build an Application and
Run an Application).
To build and flash an application, execute the following commands for <my_app>:
# On Linux/macOS cd $ZEPHYR_BASE/<my_app> mkdir build && cd build # On Windows cd %ZEPHYR_BASE%\<my_app> mkdir build & cd build # Use cmake to configure a Ninja-based build system: cmake -GNinja -DBOARD=cc3220sf_launchxl .. # Now run ninja on the generated build system: ninja flash
This will load the image into flash.
To see program output from UART0, connect a separate terminal window:
% screen /dev/ttyACM0 115200 8N1
Then press the reset button (SW1) on the board to run the program.
To debug a previously flashed image, after resetting the board, use the ‘debug’ build target:
# On Linux/macOS cd $ZEPHYR_BASE/<my_app> # If you already made a build directory (build) and ran cmake, just 'cd build' instead. mkdir build && cd build # On Windows cd %ZEPHYR_BASE%\<my_app> # If you already made a build directory (build) and ran cmake, just 'cd build' instead. mkdir build & cd build # Use cmake to configure a Ninja-based build system: cmake -GNinja -DBOARD=cc3220sf_launchxl .. # Now run ninja on the generated build system: ninja debug
The SimpleLink Host Driver, imported from the SimpleLink SDK, has been ported to Zephyr, and communicates over a dedicated SPI to the network co-processor. It is available as a Zephyr WiFi device driver in drivers/wifi/simplelink.
SimpleLink provides a few rather sophisticated WiFi provisioning methods. To keep it simple for Zephyr development and demos, the SimpleLink “Fast Connect” policy is enabled, with one-shot scanning. This enables the cc3220sf_launchxl to automatically reconnect to the last good known access point (AP), without having to restart a scan, and re-specify the SSID and password.
To connect to an AP, first run the Zephyr WiFi shell sample application, and connect to a known AP with SSID and password.
See Wi-Fi sample
Once the connection succeeds, the network co-processor keeps the AP identity in its persistent memory. Newly loaded WiFi applications then need not explicitly execute any WiFi scan or connect operations, until the need to change to a new AP.
Secure Socket Offload¶
The SimpleLink WiFi driver provides socket operations to the Zephyr socket
offload point, enabling Zephyr BSD socket API calls to be directed to the
SimpleLink WiFi driver, by setting
Secure socket (TLS) communication is handled as part of the socket APIs, and enabled by:
- setting both
- using the TI Uniflash tool to program the required certificates and keys to the secure flash filesystem, and enabling the TI Trusted Root-Certificate Catalog.
See Socket HTTP GET Example and samples/net/sockets/http_get/boards/cc3220sf_launchxl.conf for an example.
See the document Simplelink WiFi Certificates Handling for details on using the TI UniFlash tool for certificate programming.
The following features are not supported in Zephyr v1.14:
- IPv6: While the hardware supports it, it has yet to be fully implemented in the SimpleLink WiFi driver.
- static IP address: It is not currently possible to set
yand assign a static IP address to the device via
CONFIG_NET_CONFIG_MY_IPV4_ADDR. DHCP is automatically handled by the SimpleLink WiFi driver to obtain an address dynamically.