xref: /btstack/port/stm32-l451-miromico-sx1280/README.md (revision 030e197dd0ee50e64b8cd0e01b839fdef4f8be97)
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