English | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
Der Sub-GHz-Funk-Transceiver SX1268 ist das ideale Gerät für drahtlose Anwendungen mit großer Reichweite. Es ist für eine lange Batterielebensdauer mit nur 4,2 mA aktivem Empfangsstromverbrauch ausgelegt. Der SX1268 kann mit hocheffizienten integrierten Leistungsverstärkern bis zu +22 dBm bei 490 MHz übertragen. Bei 780 MHz verbraucht der SX1268 weniger als 20 mA, um ein Signal von +10 dBm an seinem Antennenanschluss zu übertragen. Der SX1268 unterstützt LoRa-Modulation für LPWAN-Anwendungsfälle und (G)FSK-Modulation für ältere Anwendungsfälle. Es ist hochgradig konfigurierbar, um verschiedene Anwendungsanforderungen zu erfüllen, die den LoRaWANTM-Standard oder proprietäre Protokolle verwenden. Das Gerät ist so konzipiert, dass es die Anforderungen der physikalischen Schicht der LoRaWANTM-Spezifikation erfüllt, die von der LoRa AllianceTM veröffentlicht wurde. Das Funkgerät eignet sich für Systeme, die auf die Einhaltung von Funkvorschriften abzielen, einschließlich aber nicht beschränkt auf die gesetzlichen Anforderungen Chinas und ETSI EN 300 220 (434 MHz). Die kontinuierliche Frequenzabdeckung von 410 MHz bis 810 MHz ermöglicht die Unterstützung der 490- und 780-MHz-Bänder chinesischer Geräte mit geringer Leistung und geringer Reichweite. SX1268 kann verwendet werden Smart Meter, Lieferkette und Logistik, Gebäudeautomation und so weiter.
LibDriver SX1268 ist der voll funktionsfähige Treiber von SX1268, der von LibDriver gestartet wurde. Er bietet Funktionen für drahtloses Senden, drahtloses Empfangen, CAD usw. LibDriver ist MISRA-konform.
/src enthält LibDriver SX1268-Quelldateien.
/interface enthält die plattformunabhängige Vorlage LibDriver SX1268 SPI.
/test enthält den Testcode des LibDriver SX1268-Treibers und dieser Code kann die erforderliche Funktion des Chips einfach testen.
/example enthält LibDriver SX1268-Beispielcode.
/doc enthält das LibDriver SX1268-Offlinedokument.
/Datenblatt enthält SX1268-Datenblatt.
/project enthält den allgemeinen Beispielcode für Linux- und MCU-Entwicklungsboards. Alle Projekte verwenden das Shell-Skript, um den Treiber zu debuggen, und die detaillierten Anweisungen finden Sie in der README.md jedes Projekts.
/misra enthält die Ergebnisse des LibDriver MISRA Code Scans.
Verweisen Sie auf eine plattformunabhängige SPI-Schnittstellenvorlage und stellen Sie Ihren Plattform-SPI-Treiber fertig.
Fügen Sie das Verzeichnis /src, den Schnittstellentreiber für Ihre Plattform und Ihre eigenen Treiber zu Ihrem Projekt hinzu. Wenn Sie die Standardbeispieltreiber verwenden möchten, fügen Sie das Verzeichnis /example zu Ihrem Projekt hinzu.
Sie können auf die Beispiele im Verzeichnis /example zurückgreifen, um Ihren eigenen Treiber zu vervollständigen. Wenn Sie die Standardprogrammierbeispiele verwenden möchten, erfahren Sie hier, wie Sie diese verwenden.
#include "driver_sx1268_lora.h"
uint8_t (*g_gpio_irq)(void) = NULL;
uint8_t res;
static uint8_t gs_rx_done;
static void a_callback(uint16_t type, uint8_t *buf, uint16_t len)
{
switch (type)
{
case SX1268_IRQ_TX_DONE :
{
sx1268_interface_debug_print("sx1268: irq tx done.\n");
break;
}
case SX1268_IRQ_RX_DONE :
{
uint16_t i;
sx1268_bool_t enable;
float rssi;
float snr;
sx1268_interface_debug_print("sx1268: irq rx done.\n");
/* get the status */
if (sx1268_lora_get_status((float *)&rssi, (float *)&snr) != 0)
{
return;
}
sx1268_interface_debug_print("sx1268: rssi is %0.1f.\n", rssi);
sx1268_interface_debug_print("sx1268: snr is %0.2f.\n", snr);
/* check the error */
if (sx1268_lora_check_packet_error(&enable) != 0)
{
return;
}
if ((enable == SX1268_BOOL_FALSE) && len)
{
for (i = 0; i < len; i++)
{
sx1268_interface_debug_print("%c", buf[i]);
}
sx1268_interface_debug_print("\n");
gs_rx_done = 1;
}
break;
}
case SX1268_IRQ_PREAMBLE_DETECTED :
{
sx1268_interface_debug_print("sx1268: irq preamble detected.\n");
break;
}
case SX1268_IRQ_SYNC_WORD_VALID :
{
sx1268_interface_debug_print("sx1268: irq valid sync word detected.\n");
break;
}
case SX1268_IRQ_HEADER_VALID :
{
sx1268_interface_debug_print("sx1268: irq valid header.\n");
break;
}
case SX1268_IRQ_HEADER_ERR :
{
sx1268_interface_debug_print("sx1268: irq header error.\n");
break;
}
case SX1268_IRQ_CRC_ERR :
{
sx1268_interface_debug_print("sx1268: irq crc error.\n");
break;
}
case SX1268_IRQ_CAD_DONE :
{
sx1268_interface_debug_print("sx1268: irq cad done.\n");
break;
}
case SX1268_IRQ_CAD_DETECTED :
{
sx1268_interface_debug_print("sx1268: irq cad detected.\n");
break;
}
case SX1268_IRQ_TIMEOUT :
{
sx1268_interface_debug_print("sx1268: irq timeout.\n");
break;
}
default :
{
break;
}
}
}
/* gpio init */
res = gpio_interrupt_init();
if (res != 0)
{
return 1;
}
g_gpio_irq = sx1268_lora_irq_handler;
/* lora init */
res = sx1268_lora_init(a_callback);
if (res != 0)
{
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
/* set send mode */
res = sx1268_lora_set_send_mode();
if (res != 0)
{
(void)sx1268_lora_deinit();
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
sx1268_interface_debug_print("sx1268: send %s.\n", "123");
/* send data */
res = sx1268_lora_send((uint8_t *)"123", strlen("123"));
if (res != 0)
{
(void)sx1268_lora_deinit();
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
/* deinit */
res = sx1268_lora_deinit();
if (res != 0)
{
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 0;
#include "driver_sx1268_lora.h"
uint8_t (*g_gpio_irq)(void) = NULL;
uint8_t res;
uint32_t timeout;
static uint8_t gs_rx_done;
static void a_callback(uint16_t type, uint8_t *buf, uint16_t len)
{
switch (type)
{
case SX1268_IRQ_TX_DONE :
{
sx1268_interface_debug_print("sx1268: irq tx done.\n");
break;
}
case SX1268_IRQ_RX_DONE :
{
uint16_t i;
sx1268_bool_t enable;
float rssi;
float snr;
sx1268_interface_debug_print("sx1268: irq rx done.\n");
/* get the status */
if (sx1268_lora_get_status((float *)&rssi, (float *)&snr) != 0)
{
return 1;
}
sx1268_interface_debug_print("sx1268: rssi is %0.1f.\n", rssi);
sx1268_interface_debug_print("sx1268: snr is %0.2f.\n", snr);
/* check the error */
if (sx1268_lora_check_packet_error(&enable) != 0)
{
return 1;
}
if ((enable == SX1268_BOOL_FALSE) && len)
{
for (i = 0; i < len; i++)
{
sx1268_interface_debug_print("%c", buf[i]);
}
sx1268_interface_debug_print("\n");
gs_rx_done = 1;
}
break;
}
case SX1268_IRQ_PREAMBLE_DETECTED :
{
sx1268_interface_debug_print("sx1268: irq preamble detected.\n");
break;
}
case SX1268_IRQ_SYNC_WORD_VALID :
{
sx1268_interface_debug_print("sx1268: irq valid sync word detected.\n");
break;
}
case SX1268_IRQ_HEADER_VALID :
{
sx1268_interface_debug_print("sx1268: irq valid header.\n");
break;
}
case SX1268_IRQ_HEADER_ERR :
{
sx1268_interface_debug_print("sx1268: irq header error.\n");
break;
}
case SX1268_IRQ_CRC_ERR :
{
sx1268_interface_debug_print("sx1268: irq crc error.\n");
break;
}
case SX1268_IRQ_CAD_DONE :
{
sx1268_interface_debug_print("sx1268: irq cad done.\n");
break;
}
case SX1268_IRQ_CAD_DETECTED :
{
sx1268_interface_debug_print("sx1268: irq cad detected.\n");
break;
}
case SX1268_IRQ_TIMEOUT :
{
sx1268_interface_debug_print("sx1268: irq timeout.\n");
break;
}
default :
{
break;
}
}
}
/* gpio init */
res = gpio_interrupt_init();
if (res != 0)
{
return 1;
}
g_gpio_irq = sx1268_lora_irq_handler;
/* lora init */
res = sx1268_lora_init(a_callback);
if (res != 0)
{
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
/* start receiving */
sx1268_interface_debug_print("sx1268: start receiving...\n");
gs_rx_done = 0;
timeout = 3000;
/* start receive */
res = sx1268_lora_set_continuous_receive_mode();
if (res != 0)
{
(void)sx1268_lora_deinit();
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
while ((timeout != 0) && (gs_rx_done == 0))
{
timeout--;
sx1268_interface_delay_ms(1000);
}
if (gs_rx_done == 0)
{
/* receive timeout */
sx1268_interface_debug_print("sx1268: receive timeout.\n");
(void)sx1268_lora_deinit();
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
/* deinit */
res = sx1268_lora_deinit();
if (res != 0)
{
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 1;
}
(void)gpio_interrupt_deinit();
g_gpio_irq = NULL;
return 0;
Online-Dokumente: https://www.libdriver.com/docs/sx1268/index.html.
Offline-Dokumente: /doc/html/index.html.
Bitte beachten Sie CONTRIBUTING.md.
Urheberrechte © (c) 2015 - Gegenwart LibDriver Alle Rechte vorbehalten
Die MIT-Lizenz (MIT)
Hiermit wird jeder Person kostenlos die Erlaubnis erteilt, eine Kopie zu erhalten
dieser Software und zugehörigen Dokumentationsdateien (die „Software“) zu behandeln
in der Software ohne Einschränkung, einschließlich, aber nicht beschränkt auf die Rechte
zu verwenden, zu kopieren, zu modifizieren, zusammenzuführen, zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen
Kopien der Software und Personen, denen die Software gehört, zu gestatten
dazu eingerichtet werden, unter folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen enthalten sein
Kopien oder wesentliche Teile der Software.
DIE SOFTWARE WIRD "WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE GEWÄHRLEISTUNG, AUSDRÜCKLICH ODER
STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT,
EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL DARF DAS
AUTOREN ODER URHEBERRECHTSINHABER HAFTEN FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE
HAFTUNG, OB AUS VERTRAG, DELIKT ODER ANDERWEITIG, ENTSTEHEND AUS,
AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN HANDLUNGEN MIT DER
SOFTWARE.
Bitte senden Sie eine E-Mail an [email protected].