Board Porting
Board : SLSTK3400A
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- EFM32HG322F64 with 64 kB Flash and 8 kB RAM
- Integrated SEGGER J-Link USB debugger/emulator
- 128 x 128 Pixel Memory LCD
- 20 pin expansion header
- 2 user buttons, 2 user LEDs and 2 touch buttons
- Silicon Labs Si7021 Relative Humidity/Temperature sensor
- USB device interface
Quick References
- 32-bit ARM Cortex-M0+ CPU (upto 25MHz)
- 64 kB Flash
- 8 kB RAM
- Up to 37 General Purpose I/O pins
- 6 Channel DMA Controller
- 6 Channel Peripheral Reflex System (PRS) for autonomous inter-peripheral signaling
- Hardware AES with 128-bit keys in 54 cycles
- Timers/Counters
- 3× 16-bit Timer/Counter
- 3×3 Compare/Capture/PWM channels
- Dead-Time Insertion on TIMER0
- 1× 24-bit Real-Time Counter
- 1× 16-bit Pulse Counter
- Watchdog Timer with dedicated RC oscillator @ 50 nA
- Communication interfaces
- Up to 2× Universal Synchronous/Asynchronous Receiver/Transmitter
- UART/SPI/SmartCard (ISO 7816)/IrDA/I2S
- Triple buffered full/half-duplex operation
- 1x Low Energy UART
- Autonomous operation with DMA in Deep Sleep Mode
- 1x I2C Interface with SMBus support
- Address recognition in Stop Mode
- 1x Low Energy Universal Serial Bus (USB) Device•
- Fully USB 2.0 compliant
- On-chip PHY and embedded 5V to 3.3V regulator
- Crystal-free operation
- Ultra low power precision analog peripherals
- 12-bit 1 Msamples/s Analog-to-Digital Converter
- 4 single-ended channels/2 differential channels
- On-chip temperature sensor [ADC Channel 0]
- Current Digital-to-Analog Converter
- Selectable current range between 0.05 and 64 μA
- 1× Analog Comparator
- Capacitive sensing with up to 5 inputs
- Supply Voltage Comparator
- Ultra efficient Power-on Reset and Brown-Out Detect
- Debug Interface
- 2-pin Serial Wire Debug interface
- Micro Trace Buffer (MTB)
- Pre-Programmed USB/UART Bootloader
- Single power supply 1.98 to 3.8 V
Available implementations for reference
CPU - Cortex M0+ - SAMD21
Peripherals - EFM32LG Family / EFM32GG Family
Porting Guide
- Identify a similar board, in my case I opted for STK3700.
- Porting CPU : Check if CPU support is available. If not then CPU might need to be ported, the procedure may be as follows
- Identify a similar MCU (EFM32GG in my case as its a part of Series 0 MCU)
- Copy the folder structure of
cpu/efm32/families/efm32gg
and create cpu/efm32/families/efm32hg
- Copy the
vendor/includes
from vendor's source. The source can be found in the local files installed during the setup of Simplicity studio for EFM32 series.
- Modify the
vectors.c
as per datasheet. Ref Table 4.1. Interrupt Request Lines (IRQ) in Reference Manual
efm32-info.mk
needs to be modified based on the memory map.
- Modify rest of the files as required.
- Alternatively, the above procedures could be done using EFM32 Generator
- Exposure to Kconfig can be done later. If required, follow Kconfig implementation from a similar CPU.
- Porting Board Copy the folder structure of STK3700
- Modify
doc.txt
as per datasheet and other files as required. Summary of peripherals can be found in product overview section in Reference manual.
- Modify
board.h
as per board User manual.
- Modify
periph_conf.h
with reference to peripherals listed in board manual .
- For LOCx values, refer 5.9.2 Alternate Functionality Pinout of EFM32HG322 in datasheet
- In the case of UART, make sure that the first reference is made to the USART used for the Virual Com Port.
ACK
Thanks to Bas Stottelaar, Leandro Lanzieri and Kevin Weiss for the support.