HTMicron is a Brazilian company making System In Package (SIP) solution. During Sigfox Connect, they shown a STM32-SLP product and gave me an eval board for reviewing.
This type of solution is interesting as it is really compact and easy to add in your design: you get a powerful ARM chip from ST + all the electronic needed for a Sigfox global communication system. There is no need for an extra component around the chip, more than an antenna and a power supply.
The price for the SIP is going to be around $5.
Let see how to use that chip.
The kit content is really simple, in the evaluation board box you have nothing else than the board itself: you need to provide your own antenna and you own usb cable.
The board is basically a ST-Link circuit connected to the iMCP-HT32Sx SIP device.
There is no documentation within the box, you will just get your Sigfox ID on the back of the board. So you need to go to htmicron website to access the documentation. Here I only found the chip datasheet where these is no mention on how to use the device interface. In fact, the documentation is spread in different places… see links below.
The SIP is containing a Cortex-M0 STM32 chip and a S2-LP radio circuit. There is no mention of external EEPROM or Secure Element. This are looking good choice in my point of view to make it simple.
The STM32L052x8 is a Cortex-M0, 32b with 64KB flash, 8KB Ram and 2KB EEPROM. The average size for a Sigfox firmware on a such platform is under 32KB. This is giving enough space for most of the custom applications.
The chip is a standard package with PCB pins like the Telecom Design or the Murata chip. This is something you need to solder using reflow and where I really recommend to use a stencil for applying the solder paste. Nothing complicated and expensive with services like aisler.net or equivalent services.
As you can see on the picture above, the SPI bus is not available from outside. This is a limitation in your development. I did not checked that completely but I assume you can use alternate pins and switch different SPI configuration. That said, it’s a limitation and a complexity you need to consider when selecting this solution.
To access the Chip documentation, do not search on the website, you will not find a lot of useful documentation and user guide. All the documentation is accessible from the htmicron github page. You also have a good documentation in the Application note page.
When you connect the board to an USB cable, you will have a Serial connection to the device. This one is 115200Bps 8/N/1. If you click on the reset button you will see the device boot sequence with the deviceID and PAC.
*** RTC_IRQHandler IN Sigfox iMCP HT32SX ID: 00D20XXX - PAC: 6F4EECXXXXXXXXXX Freq Offset 9300 LBT 0 RSSI -18 Error Open: 0 Config word err: 0
Depending on your serial terminal, the indentation could look strange as the device only print LF, so you may have to set your terminal to replace LF by CRLF.
By default, the device comes with a default application looking like the push-button example. So you can fire a message by clicking on the user button.
Sending frame... TX SHUTDOWN SHUTDOWN TX SHUTDOWN SHUTDOWN TX SHUTDOWN SHUTDOWN Error Send Frame: 0
Apparently this code do not use Monarch and seems to use a 917MHz configuration, so I’m not sure what RCZ is configured. In my point of view the default firmware could have a way to select a RCZ like using one click for this then having a frame sent by a double-click. This would be more convenient.
So, now, if you want to use the SIP you need to make your own firmware.
Basic information before writing you own code
The ID and PAC are the needed informations to register the devkit on Sigfox backend. If you want to make your own firmware, you also need to know the private key. I recommend to store these information securely as during the flashing process you always have a risk to loose these critical informations.
The device is not protected against reading from the ST-LINK so you can easily dump the flash. I was expecting the credentials to be stored in the EEPROM and encrypted but I was “pleased” to get them from the Flash memory at address 0x800FF00.
You can see the 32b SigfoxID (byte in the reversed order), then the PAC key and under we have a 128B steam really looking like the Sigfox private key (something I still need to verify).
The devkit is not registered as a Sigfox Devkit coming with its own free subscription. It means you need to have some Sigfox subscription to register it and start transmitting with it.
The next step is to understand the STM32 configuration inside the SIP to be able to create a custom project. The github repository have sample project containing the IOC file. This file is a CubeMX project file containing the device configuration.
The devkit board circuit is also available from the github repository following this link. Thank to this schema, you can see the board have a led and a switch button accessible for your test.
|iMPC Pin||STM32 Pin||Feature|
We can see other pin used to control the S2LP:
|PA13||SWD IO – Flashing device|
|PA14||SWD CLK – Flashing device|
|PA15||SPI – S2LP – CS – Communication with S2LP|
|PB4||SPI – S2LP – MISO – Communication with S2LP|
|PB3||SPI – S2LP – SCLK – Communication with S2LP|
|PA7||SPI – S2LP – MOSI – Communication with S2LP|
|PA0||SL2P Interrupt EXTI0|
|PB8||GPIO to control S2LP SDN (Shutdown) pin|
|PA10||USART1 RX – Communication with host / st-link|
|PA9||USART1 TX – Communication with host / st-link|
We now master all the configuration and can start to make our own firmware!
Make our own firmware from the examples.
The recommended way is to use Keil environment. Even if that environment is high quality it’s also proprietary and not my preferred choice. I would prefer to use STM32CubeIDE but during my test, I found a bug with STM32CubeMX (saying there is a bug on ST stuff is like saying, sun is rising on the morning… I know). The problem is STM32CubeMX is not able to create a working project for STM32CubeIDE with a STM32L052x8 chip. By-the-way, you can use SystemWorkbench / AC6 selecting SW4STM32 target as an alternate open-source development environment based on eclipse and GCC compiler.
I will make another post about how to make this and run IT_SDK on the chip to get an advanced SDK to build an industrial solution on top of iMCP.
So right now, to compile your first program, you can follow the HT32Sx getting start guide available on github and follow the steps. ARM Keil environment is free-to-use for STM32L0 devices up to 256KB, so it is not open but not blocking currently.
Prototype with iMCP
The devkit has been made to support a standard ST sensor HAT, so you can use most of the ST extension to make your own design and quickly test a complex system without having to route your own board. I assume, the limit is the accessibility of the SPI bus.