1# Experimental port for Semtech SX1280 2.4 GHz Multi Protocol Controller 2 3## Overview 4 5This 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. 6 7It uses the SX1280 C-Driver from Semtech to communicate with the SX1280. The main modification was to provide an optimized polling SPI driver that is faster then the one provided by STM32CubeMX. 8 9## Status 10 11Only 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. 12 13Segger RTT is used for debug output, so a Segger J-Link programmer is required. 14 15Uses 32.768 kHz crytstal as LSE for timing 16 17Support for Broadcaster and Peripheral roles. 18 19The Makefile project compiles gatt_counter, gatt_streamer_server, hog_mouse and hog_keyboard examples. 20 21## Limitation 22 23### Advertising State: 24- Only Connectable Advertising supported 25- Only fixed public BD_ADDR of 33:33:33:33:33:33 is used 26- Scan response not supported 27 28### Connection State: 29- Only a single packet is sent in each Connection Interval 30- Encryption not implemented 31- Some LL PDUs not supported 32 33### Central Role: 34- Not implemented 35 36### Observer Role: 37- Not implemented 38 39### Low power mode - basically not implemented: 40- MCU does not sleep 41- SPI could be disabled during sleep 42- 1 ms SysTick is used for host stack although 64-bit tick time is provided from LPTIM1 43 44## Getting Started 45 46For the FMLR-80-P-STL4E module, just run make. You can upload the EXAMPLE.elf file created in build folder, 47e.g. with Ozone using the provided EXAMPLE.jdebug, and run it. 48 49## TODO 50 51### General 52- multiple packets per connection interval 53- indicate random address in advertising pdus 54- allow to set random BD_ADDR via HCI command 55- support other adv types 56- support scan requests 57- handle Encryption 58 59## Low Power 60- enter STANDY_RC mode when idle 61- implement MCU sleep (if next wakeup isn't immediate) 62- sleep after connection request until first packet from Central 63- replace SysTick with tick counter based on LPTIM1 64- disable SPI on MCU sleep 65 66