2020-07-03 18:10:33 +02:00
# Experimental port for Semtech SX1280 2.4 GHz Multi Protocol Controller
## Overview
This 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.
2020-11-02 19:57:11 +01:00
It 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.
2020-07-03 18:10:33 +02:00
## Status
Only 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.
2020-11-02 19:57:11 +01:00
SEGGER RTT is used for debug output, so a Segger J-Link programmer is required.
2020-07-03 18:10:33 +02:00
Uses 32.768 kHz crytstal as LSE for timing
2020-11-02 19:57:11 +01:00
Support for Broadcast and Peripheral roles.
2020-07-03 18:10:33 +02:00
2020-07-12 23:22:58 +02:00
The Makefile project compiles gatt_counter, gatt_streamer_server, hog_mouse and hog_keyboard examples.
2020-07-03 18:10:33 +02:00
## Limitation
### Advertising State:
- Only Connectable Advertising supported
- Only fixed public BD_ADDR of 33:33:33:33:33:33 is used
### Connection State:
- Encryption not implemented
- Some LL PDUs not supported
### Central Role:
- Not implemented
### Observer Role:
- Not implemented
### Low power mode - basically not implemented:
- MCU does not sleep
- SPI could be disabled during sleep
2020-11-02 19:57:11 +01:00
- 1 ms SysTick is used for host stack although 16-bit tick time is provided by LPTIM1 based on 32768 Hz LSE.
2020-07-03 18:10:33 +02:00
## Getting Started
2020-07-24 10:15:15 +02:00
For the FMLR-80-P-STL4E module, just run make. You can upload the EXAMPLE.elf file created in build folder,
e.g. with Ozone using the provided EXAMPLE.jdebug, and run it.
2020-07-03 18:10:33 +02:00
## TODO
### General
2020-07-14 18:05:18 +02:00
- indicate random address in advertising pdus
2020-11-02 19:57:11 +01:00
- allow to set random BD_ADDR via HCI command and use in Advertisements
- support other regular adv types
2020-07-03 18:10:33 +02:00
- handle Encryption
## Low Power
- enter STANDY_RC mode when idle
- implement MCU sleep (if next wakeup isn't immediate)
- sleep after connection request until first packet from Central
- replace SysTick with tick counter based on LPTIM1
- disable SPI on MCU sleep