Englisch | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
Der SEX1268-Sub-GHz-Radio-Transceiver ist das ideale Gerät für drahtlose Langstreckenanwendungen. Es ist für eine lange Akkulaufzeit mit nur 4,2 mA des aktiven Empfangsverbrauchs ausgelegt. Der SX1268 kann bis zu +22 dBm bei 490 MHz mit hocheffizienten integrierten Leistungsverstärkern übertragen. AAT 780 MHz konsumiert der SX1268 weniger als 20 mA, um ein +10 dBm -Signal an der Antennenanschlachtung zu übertragen. Es ist sehr konfigurierbar, unterschiedliche Anwendungsanforderungen zu erfüllen, indem die Lorawantm -Standard- oder proprietären Protokolle verwendet werden. Das Gerät ist so konzipiert, dass sie den physischen Schichtanforderungen der Lorawantm -Spezifikation entsprechen, die vom LORA -Alliancet veröffentlicht wurde. Das Radio ist für die Systeme zur Einhaltung der Compliance mit Funkregelung, aber nicht beschränkt auf die regulatorischen Anforderungen an die chinesischen und adSI -Ende -220 -Mhyz (434 MHz). 810 MHz ermöglicht die Unterstützung der 490- und 780 MHz chinesischen Gerätebänder mit niedriger Leistung.
LiBDriver SX1268 ist der vollständige Treiber von SX1268, der von LiBDriver eingeführt wurde.
/SRC enthält Libriiver SX1268 Quelldateien.
/Schnittstelle enthält Libriver SX1268 SPI -Plattform -unabhängige Vorlage.
/Test beinhaltet den Treiber -Testcode von LiBDriver SX1268 und dieser Code kann die erforderliche Funktion der Chip einfach testen.
/Beispiel enthält den Beispielcode Libriver SX1268.
/doc enthält Libriiver SX1268 Offline -Dokument.
/Datenblatt enthält SX1268 Datenblatt.
/Projekt umfasst den Probencode für Linux- und MCU Development Board. Alle Projekte verwenden das Shell -Skript, um den Treiber zu debuggen, und die Detailanweisung finden Sie in Readme.MD jedes Projekts.
/Misra enthält die Libriver Misra Code Scanning -Ergebnisse.
Referenz- /Schnittstellen -SPI -Plattform -unabhängige Vorlage und beenden Sie Ihren Plattform -SPI -Treiber.
Fügen Sie das Verzeichnis /SRC, den Schnittstellentreiber für Ihre Plattform und Ihre eigenen Treiber in Ihr Projekt hinzu, wenn Sie die Standard -Beispieltreiber verwenden möchten, fügen Sie Ihr Projekt das /Beispiel -Verzeichnis hinzu.
Sie können auf die Beispiele im Verzeichnis /Beispiel verweisen, um Ihren eigenen Treiber zu vervollständigen. Wenn Sie die Standard -Programmierbeispiele verwenden möchten, verwenden Sie sie.
#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 beziehen Sie sich auf den Beitrag.md.
Copyright (C) 2015 - Präsentieren Sie alle Rechte vorbehalten.
Die MIT -Lizenz (MIT)
Die Erlaubnis wird hiermit kostenlos an jede Person erteilt, die eine Kopie erhält
dieser Software und zugehörigen Dokumentationsdateien ("Software"), um zu handeln
In der Software ohne Einschränkung, auch ohne Einschränkung der Rechte
zu verwenden, zu kopieren, zu ändern, zusammenzufassen, zu veröffentlichen, zu vertreiben, zu unterlizenzieren und/oder verkaufen
Kopien der Software und Personen, denen die Software ist
Zu den folgenden Bedingungen geliefert:
Die oben genannte Urheberrechtsbekanntmachung und diese Berechtigungsbekanntmachung ist in alle enthalten
Kopien oder wesentliche Teile der Software.
Die Software wird "wie es ist" bereitgestellt, ohne dass eine Garantie jeglicher Art ausdrückt oder
Impliziert, einschließlich, aber nicht beschränkt auf die Garantien der Marktgängigkeit,
Fitness für einen bestimmten Zweck und Nichtverlust. In keinem Fall die
Autoren oder Urheberrechtsinhaber haften für Ansprüche, Schäden oder andere
Haftung, sei es bei Vertragsklagen, unerlaubter Handlung oder anderweitig, entsteht aus,
Aus oder im Zusammenhang mit der Software oder der Verwendung oder anderen Geschäften in der
SOFTWARE.
Bitte senden Sie eine E-Mail an [email protected].