xref: /btstack/port/stm32-l451-miromico-sx1280/README.md (revision f508b9c49cd1d53417aff1ced856dc5513cff274)
12fd737d3SMatthias Ringwald# Experimental port for Semtech SX1280 2.4 GHz Multi Protocol Controller
22fd737d3SMatthias Ringwald
32fd737d3SMatthias Ringwald## Overview
42fd737d3SMatthias Ringwald
52fd737d3SMatthias 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.
62fd737d3SMatthias Ringwald
7*f508b9c4SMatthias RingwaldIt 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.
82fd737d3SMatthias Ringwald
92fd737d3SMatthias Ringwald## Status
102fd737d3SMatthias Ringwald
112fd737d3SMatthias 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.
122fd737d3SMatthias Ringwald
13*f508b9c4SMatthias RingwaldSEGGER RTT is used for debug output, so a Segger J-Link programmer is required.
142fd737d3SMatthias Ringwald
152fd737d3SMatthias RingwaldUses 32.768 kHz crytstal as LSE for timing
162fd737d3SMatthias Ringwald
17*f508b9c4SMatthias RingwaldSupport for Broadcast and Peripheral roles.
182fd737d3SMatthias Ringwald
192fd737d3SMatthias RingwaldThe Makefile project compiles gatt_counter, gatt_streamer_server, hog_mouse and hog_keyboard examples.
202fd737d3SMatthias Ringwald
212fd737d3SMatthias Ringwald## Limitation
222fd737d3SMatthias Ringwald
232fd737d3SMatthias Ringwald### Advertising State:
242fd737d3SMatthias Ringwald- Only Connectable Advertising supported
252fd737d3SMatthias Ringwald- Only fixed public BD_ADDR of 33:33:33:33:33:33 is used
262fd737d3SMatthias Ringwald
272fd737d3SMatthias Ringwald### Connection State:
282fd737d3SMatthias Ringwald- Encryption not implemented
292fd737d3SMatthias Ringwald- Some LL PDUs not supported
302fd737d3SMatthias Ringwald
312fd737d3SMatthias Ringwald### Central Role:
322fd737d3SMatthias Ringwald- Not implemented
332fd737d3SMatthias Ringwald
342fd737d3SMatthias Ringwald### Observer Role:
352fd737d3SMatthias Ringwald- Not implemented
362fd737d3SMatthias Ringwald
372fd737d3SMatthias Ringwald### Low power mode - basically not implemented:
382fd737d3SMatthias Ringwald- MCU does not sleep
392fd737d3SMatthias Ringwald- SPI could be disabled during sleep
40*f508b9c4SMatthias Ringwald- 1 ms SysTick is used for host stack although 16-bit tick time is provided by LPTIM1 based on 32768 Hz LSE.
412fd737d3SMatthias Ringwald
422fd737d3SMatthias Ringwald## Getting Started
432fd737d3SMatthias Ringwald
442fd737d3SMatthias RingwaldFor the FMLR-80-P-STL4E module, just run make. You can upload the EXAMPLE.elf file created in build folder,
452fd737d3SMatthias Ringwalde.g. with Ozone using the provided EXAMPLE.jdebug, and run it.
462fd737d3SMatthias Ringwald
472fd737d3SMatthias Ringwald## TODO
482fd737d3SMatthias Ringwald
492fd737d3SMatthias Ringwald### General
502fd737d3SMatthias Ringwald- indicate random address in advertising pdus
51*f508b9c4SMatthias Ringwald- allow to set random BD_ADDR via HCI command and use in Advertisements
52*f508b9c4SMatthias Ringwald- support other regular adv types
532fd737d3SMatthias Ringwald- handle Encryption
542fd737d3SMatthias Ringwald
552fd737d3SMatthias Ringwald## Low Power
562fd737d3SMatthias Ringwald- enter STANDY_RC mode when idle
572fd737d3SMatthias Ringwald- implement MCU sleep (if next wakeup isn't immediate)
582fd737d3SMatthias Ringwald- sleep after connection request until first packet from Central
592fd737d3SMatthias Ringwald- replace SysTick with tick counter based on LPTIM1
602fd737d3SMatthias Ringwald- disable SPI on MCU sleep
612fd737d3SMatthias Ringwald
62