12fd737d3SMatthias Ringwald# Experimental port for Semtech SX1280 2.4 GHz Multi Protocol Controller 22fd737d3SMatthias Ringwald 32fd737d3SMatthias Ringwald## Overview 42fd737d3SMatthias Ringwald 52fd737d3SMatthias RingwaldThis port targets the Semtech SX1280 radio controller. The Host Stack and the Controller (incl. Link Layer) run on a STM32 MCU, with the SX1280 connected via SPI. 62fd737d3SMatthias Ringwald 7*f508b9c4SMatthias RingwaldIt uses the SX1280 C-Driver from Semtech to communicate with the SX1280. The main modification was to the SPI driver that uses DMA for full packets. 82fd737d3SMatthias Ringwald 92fd737d3SMatthias Ringwald## Status 102fd737d3SMatthias Ringwald 112fd737d3SMatthias RingwaldOnly tested with the Miromico FMLR-80-P-STL4E module so far. On this module, the 52 Mhz clock for the SX1280 is controlled by the MCU. 122fd737d3SMatthias Ringwald 13*f508b9c4SMatthias RingwaldSEGGER RTT is used for debug output, so a Segger J-Link programmer is required. 142fd737d3SMatthias Ringwald 152fd737d3SMatthias RingwaldUses 32.768 kHz crytstal as LSE for timing 162fd737d3SMatthias Ringwald 17*f508b9c4SMatthias RingwaldSupport for Broadcast and Peripheral roles. 182fd737d3SMatthias Ringwald 192fd737d3SMatthias RingwaldThe Makefile project compiles gatt_counter, gatt_streamer_server, hog_mouse and hog_keyboard examples. 202fd737d3SMatthias Ringwald 212fd737d3SMatthias Ringwald## Limitation 222fd737d3SMatthias Ringwald 232fd737d3SMatthias Ringwald### Advertising State: 242fd737d3SMatthias Ringwald- Only Connectable Advertising supported 252fd737d3SMatthias Ringwald- Only fixed public BD_ADDR of 33:33:33:33:33:33 is used 262fd737d3SMatthias Ringwald 272fd737d3SMatthias Ringwald### Connection State: 282fd737d3SMatthias Ringwald- Encryption not implemented 292fd737d3SMatthias Ringwald- Some LL PDUs not supported 302fd737d3SMatthias Ringwald 312fd737d3SMatthias Ringwald### Central Role: 322fd737d3SMatthias Ringwald- Not implemented 332fd737d3SMatthias Ringwald 342fd737d3SMatthias Ringwald### Observer Role: 352fd737d3SMatthias Ringwald- Not implemented 362fd737d3SMatthias Ringwald 372fd737d3SMatthias Ringwald### Low power mode - basically not implemented: 382fd737d3SMatthias Ringwald- MCU does not sleep 392fd737d3SMatthias Ringwald- SPI could be disabled during sleep 40*f508b9c4SMatthias Ringwald- 1 ms SysTick is used for host stack although 16-bit tick time is provided by LPTIM1 based on 32768 Hz LSE. 412fd737d3SMatthias Ringwald 422fd737d3SMatthias Ringwald## Getting Started 432fd737d3SMatthias Ringwald 442fd737d3SMatthias RingwaldFor the FMLR-80-P-STL4E module, just run make. You can upload the EXAMPLE.elf file created in build folder, 452fd737d3SMatthias Ringwalde.g. with Ozone using the provided EXAMPLE.jdebug, and run it. 462fd737d3SMatthias Ringwald 472fd737d3SMatthias Ringwald## TODO 482fd737d3SMatthias Ringwald 492fd737d3SMatthias Ringwald### General 502fd737d3SMatthias Ringwald- indicate random address in advertising pdus 51*f508b9c4SMatthias Ringwald- allow to set random BD_ADDR via HCI command and use in Advertisements 52*f508b9c4SMatthias Ringwald- support other regular adv types 532fd737d3SMatthias Ringwald- handle Encryption 542fd737d3SMatthias Ringwald 552fd737d3SMatthias Ringwald## Low Power 562fd737d3SMatthias Ringwald- enter STANDY_RC mode when idle 572fd737d3SMatthias Ringwald- implement MCU sleep (if next wakeup isn't immediate) 582fd737d3SMatthias Ringwald- sleep after connection request until first packet from Central 592fd737d3SMatthias Ringwald- replace SysTick with tick counter based on LPTIM1 602fd737d3SMatthias Ringwald- disable SPI on MCU sleep 612fd737d3SMatthias Ringwald 62