Englisch | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
Der LLCC68-Sub-GHz-Radio-Transceiver ist ideal für drahtlose Langstreckenanwendungen. Es ist für eine lange Akkulaufzeit mit nur 4,2 mA des aktiven Empfangsverbrauchs konzipiert. Der LLCC68 kann bis zu +22 dBm mit hocheffizienten integrierten Leistungsverstärkern übertragen. Die LLCC68 unterstützt die LORA® -Modulation für LPWAN -Anwendungsfälle und (g) FSK -Modulation für Legacy -Anwendungsfälle. Es ist sehr konfigurierbar, unterschiedliche Anwendungsanforderungen für die Branche und die Verwendung von Verbrauchern zu erfüllen. Das Gerät bietet LORA®-Modulation, die mit den von der LORA Alliance ™ verwendeten Semtech-Transceivern kompatibel ist. Das Radio ist für die Systeme zur Einhaltung der Einhaltung der Funkregelungen, die nicht auf ETSI EN 300 220, FCC CFR 47, und die japanischen Anforderungen an die ETSI-EN 300 220, geeignet. Die kontinuierliche Frequenzabdeckung von 150 MHz bis 960 MHz ermöglicht die Unterstützung aller wichtigen Sub-GHz-ISM-Bänder auf der ganzen Welt.
Libriver LLCC68 ist der vollständige Treiber von LLCC68, der von LiBDriver eingeführt wurde. Es bietet Funktionen von drahtlosen Senden, drahtlosen Empfangen, CAD usw. Libriver ist Misra -konform.
/SRC enthält Libriiver LLCC68 -Quelldateien.
/Interface enthält Libriiver LLCC68 SPI -Plattform -unabhängige Vorlage.
/Test umfasst den Treiber -Testcode von LiBDriver LLCC68 und dieser Code kann die erforderliche Chip -Funktion einfach testen.
/Beispiel enthält den Beispielcode Libriiver LLCC68.
/DOC enthält das Offline -Dokument Libriiver LLCC68.
/Datenblatt enthält LLCC68 -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_llcc68_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 LLCC68_IRQ_TX_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq tx done.n" );
break ;
}
case LLCC68_IRQ_RX_DONE :
{
uint16_t i ;
llcc68_bool_t enable ;
float rssi ;
float snr ;
llcc68_interface_debug_print ( "llcc68: irq rx done.n" );
/* get the status */
if ( llcc68_lora_get_status (( float * ) & rssi , ( float * ) & snr ) != 0 )
{
return ;
}
llcc68_interface_debug_print ( "llcc68: rssi is %0.1f.n" , rssi );
llcc68_interface_debug_print ( "llcc68: snr is %0.2f.n" , snr );
/* check the error */
if ( llcc68_lora_check_packet_error ( & enable ) != 0 )
{
return ;
}
if (( enable == LLCC68_BOOL_FALSE ) && len )
{
for ( i = 0 ; i < len ; i ++ )
{
llcc68_interface_debug_print ( "%c" , buf [ i ]);
}
llcc68_interface_debug_print ( "n" );
gs_rx_done = 1 ;
}
break ;
}
case LLCC68_IRQ_PREAMBLE_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq preamble detected.n" );
break ;
}
case LLCC68_IRQ_SYNC_WORD_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid sync word detected.n" );
break ;
}
case LLCC68_IRQ_HEADER_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid header.n" );
break ;
}
case LLCC68_IRQ_HEADER_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq header error.n" );
break ;
}
case LLCC68_IRQ_CRC_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq crc error.n" );
break ;
}
case LLCC68_IRQ_CAD_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq cad done.n" );
break ;
}
case LLCC68_IRQ_CAD_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq cad detected.n" );
break ;
}
case LLCC68_IRQ_TIMEOUT :
{
llcc68_interface_debug_print ( "llcc68: irq timeout.n" );
break ;
}
default :
{
break ;
}
}
}
/* gpio init */
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = llcc68_lora_irq_handler ;
/* lora init */
res = llcc68_lora_init ( a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* set send mode */
res = llcc68_lora_set_send_mode ();
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
llcc68_interface_debug_print ( "llcc68: send %s.n" , "123" );
/* send data */
res = llcc68_lora_send (( uint8_t * ) "123" , strlen ( "123" ));
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* deinit */
res = llcc68_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_llcc68_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 LLCC68_IRQ_TX_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq tx done.n" );
break ;
}
case LLCC68_IRQ_RX_DONE :
{
uint16_t i ;
llcc68_bool_t enable ;
float rssi ;
float snr ;
llcc68_interface_debug_print ( "llcc68: irq rx done.n" );
/* get the status */
if ( llcc68_lora_get_status (( float * ) & rssi , ( float * ) & snr ) != 0 )
{
return 1 ;
}
llcc68_interface_debug_print ( "llcc68: rssi is %0.1f.n" , rssi );
llcc68_interface_debug_print ( "llcc68: snr is %0.2f.n" , snr );
/* check the error */
if ( llcc68_lora_check_packet_error ( & enable ) != 0 )
{
return 1 ;
}
if (( enable == LLCC68_BOOL_FALSE ) && len )
{
for ( i = 0 ; i < len ; i ++ )
{
llcc68_interface_debug_print ( "%c" , buf [ i ]);
}
llcc68_interface_debug_print ( "n" );
gs_rx_done = 1 ;
}
break ;
}
case LLCC68_IRQ_PREAMBLE_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq preamble detected.n" );
break ;
}
case LLCC68_IRQ_SYNC_WORD_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid sync word detected.n" );
break ;
}
case LLCC68_IRQ_HEADER_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid header.n" );
break ;
}
case LLCC68_IRQ_HEADER_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq header error.n" );
break ;
}
case LLCC68_IRQ_CRC_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq crc error.n" );
break ;
}
case LLCC68_IRQ_CAD_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq cad done.n" );
break ;
}
case LLCC68_IRQ_CAD_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq cad detected.n" );
break ;
}
case LLCC68_IRQ_TIMEOUT :
{
llcc68_interface_debug_print ( "llcc68: irq timeout.n" );
break ;
}
default :
{
break ;
}
}
}
/* gpio init */
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = llcc68_lora_irq_handler ;
/* lora init */
res = llcc68_lora_init ( a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* start receiving */
llcc68_interface_debug_print ( "llcc68: start receiving...n" );
gs_rx_done = 0 ;
timeout = 3000 ;
/* start receive */
res = llcc68_lora_set_continuous_receive_mode ();
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
while (( timeout != 0 ) && ( gs_rx_done == 0 ))
{
timeout -- ;
llcc68_interface_delay_ms ( 1000 );
}
if ( gs_rx_done == 0 )
{
/* receive timeout */
llcc68_interface_debug_print ( "llcc68: receive timeout.n" );
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* deinit */
res = llcc68_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.libriver.com/docs/llcc68/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].