Dieses Paket schlägt eine Implementierung in C des Treibers für die LR11XX -Funkkomponente vor.
Der Treiber ist in mehreren Komponenten aufgeteilt:
Diese Komponente wird verwendet, um die Firmware zu aktualisieren.
Diese Komponente wird verwendet, um Daten aus Registern oder internem Speicher zu lesen / zu schreiben.
Diese Komponente wird verwendet, um mit systemweiten Parametern wie Taktquellen, integrierten HF-Schalter usw. zu interagieren.
Diese Komponente wird verwendet, um Daten über die verschiedenen Modems (LORA und GFSK) zu senden / zu empfangen oder einen LORA -CAD (Kanalaktivitätserkennung) auszuführen. Parameter wie Auswahl der Leistungsverstärker, Ausgangsleistung und Fallback -Modi sind auch über diese Komponente zugänglich.
Dies enthüllt auch Funktionen für Sigfox. In dieser Komponente für LR1110/LR1120 wird auch die Bluetooth®-Low-Energy-Begräbnis-Kompatibilität bereitgestellt.
Diese Komponente liefert LR-FHSS-bezogene Funktionen.
Diese Komponente wird verwendet, um das passive Scannen der Wi-Fi-Signale zu konfigurieren und zu initiieren, die gemeinsam genutzt werden können, um eine Geolokalisierung anzufordern.
Diese Komponente wird verwendet, um die Erfassung von GNSS -Signalen zu konfigurieren und zu initiieren, die gemeinsam genutzt werden können, um eine Geolokalisierung anzufordern.
Diese Komponente wird verwendet, um Schlüssel in den internen Schlüsselbund einzustellen und abzuleiten und kryptografische Operationen mit dem integrierten Hardware -Beschleuniger auszuführen.
Diese Komponente wird verwendet, um die LORA-Rundenzeit des Geräts (RTTOF) des Geräts zu konfigurieren und zu betreiben.
Jede Komponente basiert auf verschiedenen Dateien:
Die HAL (Hardware-Abstraktionsschicht) ist eine Sammlung von Funktionen, die der Benutzer implementieren muss, um plattformabhängige Anrufe an den Host zu schreiben. Die Liste der Funktionen ist die folgende:
Wenn der Chip mit der Beibehaltung aus dem Schlafmodus aufwacht, wird ein Parameter nicht ordnungsgemäß neu konfiguriert. Diese falsche Konfiguration kann in allen nachfolgenden Übertragungen zu einer unerwartet hohen benachbarten Kanalleistung führen.
Das Problem erscheint nur in der Lora -Modulation für alle Bandbreiten mit Ausnahme von 500 kHz und 800 kHz.
Die folgenden Firmware -Versionen sind betroffen:
Die Problemumgehung besteht darin, das Bit 30 im Register 0x00F30054 zurückzusetzen, wenn der Chip mit der Aufbewahrung aus dem Schlafmodus aufwacht.
Diese Problemumgehung löst den Fall nicht, in dem LR11XX_RADIO_MODE_SLEEP mit lr11xx_radio_auto_tx_rx konfiguriert ist und der Chip auf den RX -Modus gesetzt ist. Dies ist die Tatsache, dass die Problemumgehung nicht vor dem nachfolgenden Getriebe angewendet werden kann, der automatisch vom Chip nach dem Aufwachen aus dem Schlafmodus mit der Aufbewahrung auf den Markt gebracht wird.
Die erste Implementierung - standardmäßig im Treiber aktiviert - fügt einen impliziten Aufruf hinzu, der den Parameter für jede Funktion aktualisiert, die den Chip in der Übertragung festlegen kann - direkt oder nicht -:
lr11xx_radio_set_tx_with_timeout_in_rtc_steplr11xx_radio_set_tx_infinite_preamblelr11xx_radio_set_rx_with_timeout_in_rtc_step - Falls lr11xx_radio_auto_tx_rx aktiviert wurdelr11xx_radio_set_cad - Falls LR11XX_RADIO_CAD_EXIT_MODE_TX mit lr11xx_radio_set_cad_params festgelegt wurde Diese Implementierung kann deaktiviert werden, indem das Makro LR11XX_DISABLE_HIGH_ACP_WORKAROUND definiert wird. Diese Behinderung wird nützlich sein, wenn in Zukunft eine neue Firmware veröffentlicht wird, die ein Fix integriert, und die Problemumgehung nicht mehr benötigt.
Der Hauptvorteil dieser Implementierung besteht darin, dass sie für den Benutzer transparent ist, der nur den Treiber aktualisieren muss, ohne seine Anwendung zu ändern. Der Hauptnachteil ist, dass der implizite Aufruf systematisch durchgeführt wird, auch wenn dies nicht erforderlich ist.
Die zweite Methode erfordert, dass der Benutzer die Funktion lr11xx_radio_apply_high_acp_workaround explizit aufruft, wenn der Chip mit der Retention aus dem Schlafmodus aufwacht (Hinweis: Um die Implementierung zu erleichtern, kann er aufgerufen werden, wenn der Chip aus jedem Schlafmodus aufwacht).
Diese Methode erfordert, dass die Makro LR11XX_DISABLE_HIGH_ACP_WORKAROUND definiert werden soll, damit die Implementierung 1 der Problemumgehung (standardmäßig aktiviert) deaktiviert ist.
Die folgenden Firmware -Versionen sind betroffen:
Wenn der Chip einen Empfang im 2,4 -GHz -Band beendet, wird ein Parameter nicht richtig konfiguriert. Diese falsche Konfiguration verhindert, dass ein nachfolgender GNSS -Scan ordnungsgemäß funktioniert.
Es ist wichtig anzumerken, dass der Parameter ordnungsgemäß neu konfiguriert ist und die Einschränkung nicht erscheint:
Die Problemumgehung soll das Bit 4 im Register 0x00F30024 einstellen, wenn der Chip einen Empfang im 2,4 -GHz -Band beendet, bevor ein GNSS -Scan gestartet wird.
Diese Problemumgehung wird bei Verwendung einer LR1110 -Firmware -Version nicht benötigt. Trotzdem verhindert es nicht, dass ein LR1110 ordnungsgemäß funktioniert, wenn die Problemumgehung nicht deaktiviert ist.
Die erste Implementierung - standardmäßig im Treiber aktiviert - fügt einen impliziten Aufruf hinzu, der den Parameter für jede Funktion aktualisiert, mit der der Chip im GNSS -Scan -Modus festgelegt werden kann:
lr11xx_gnss_scan Diese Implementierung kann deaktiviert werden, indem das Makro LR11XX_DISABLE_MIXER_CFG_WORKAROUND definiert wird. Diese Behinderung wird nützlich sein, wenn in Zukunft eine neue Firmware veröffentlicht wird, die ein Fix integriert, und die Problemumgehung nicht mehr benötigt.
Der Hauptvorteil dieser Implementierung besteht darin, dass sie für den Benutzer transparent ist, der nur den Treiber aktualisieren muss, ohne seine Anwendung zu ändern. Der Hauptnachteil ist, dass der implizite Aufruf systematisch durchgeführt wird, auch wenn dies nicht erforderlich ist.
Die zweite Methode erfordert, dass der Benutzer die Funktion lr11xx_gnss_apply_mixer_cfg_workaround explizit aufruft, wenn der Chip einen Empfang in der 2.4GHz beendet, wenn ein GNSS -Scan danach geplant ist, ohne eine der in der Beschreibung dieser Begrenzung angegebenen Zustände zu durchlaufen.
Diese Methode erfordert, dass die Makro LR11XX_DISABLE_MIXER_CFG_WORKAROUND definiert werden soll, damit die Implementierung 1 der Problemumgehung (standardmäßig aktiviert) deaktiviert ist.