mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-29 12:32:54 +00:00
62 lines
1.9 KiB
Markdown
62 lines
1.9 KiB
Markdown
# 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.
|
|
|
|
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.
|
|
|
|
## 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.
|
|
|
|
SEGGER RTT is used for debug output, so a Segger J-Link programmer is required.
|
|
|
|
Uses 32.768 kHz crytstal as LSE for timing
|
|
|
|
Support for Broadcast and Peripheral roles.
|
|
|
|
The Makefile project compiles gatt_counter, gatt_streamer_server, hog_mouse and hog_keyboard examples.
|
|
|
|
## 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
|
|
- 1 ms SysTick is used for host stack although 16-bit tick time is provided by LPTIM1 based on 32768 Hz LSE.
|
|
|
|
## Getting Started
|
|
|
|
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.
|
|
|
|
## TODO
|
|
|
|
### General
|
|
- indicate random address in advertising pdus
|
|
- allow to set random BD_ADDR via HCI command and use in Advertisements
|
|
- support other regular adv types
|
|
- 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
|
|
|