xref: /btstack/port/stm32-l451-miromico-sx1280/README.md (revision cd5f23a3250874824c01a2b3326a9522fea3f99f)
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 the SPI driver that uses DMA for full packets.
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 Broadcast 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
27### Connection State:
28- Encryption not implemented
29- Some LL PDUs not supported
30
31### Central Role:
32- Not implemented
33
34### Observer Role:
35- Not implemented
36
37### Low power mode - basically not implemented:
38- MCU does not sleep
39- SPI could be disabled during sleep
40- 1 ms SysTick is used for host stack although 16-bit tick time is provided by LPTIM1 based on 32768 Hz LSE.
41
42## Getting Started
43
44For the FMLR-80-P-STL4E module, just run make. You can upload the EXAMPLE.elf file created in build folder,
45e.g. with Ozone using the provided EXAMPLE.jdebug, and run it.
46
47## TODO
48
49### General
50- indicate random address in advertising pdus
51- allow to set random BD_ADDR via HCI command and use in Advertisements
52- support other regular adv types
53- handle Encryption
54
55## Low Power
56- enter STANDY_RC mode when idle
57- implement MCU sleep (if next wakeup isn't immediate)
58- sleep after connection request until first packet from Central
59- replace SysTick with tick counter based on LPTIM1
60- disable SPI on MCU sleep
61
62