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