Anglais | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
L'émetteur-récepteur radio SX1268 sous-GHZ est le dispositif idéal pour les applications sans fil à longue portée. Il est conçu pour une longue durée de vie de la batterie avec seulement 4,2 mA de consommation active active. Le SX1268 peut transmettre jusqu'à +22 dBM à 490 MHz avec des amplificateurs de puissance intégrés très efficaces. À 780 MHz, le SX1268 consomme moins de 20 mA pour transmettre un signal de +10 dBM à son port d'antenne.SX1268 soutient la modulation de la LORA pour les cas d'utilisation de LPWAN. Il est hautement configurable de répondre à différentes exigences d'application en utilisant les protocoles standard ou propriétaires du Lorawantm. L'appareil est conçu pour se conformer aux exigences de la couche physique de la spécification LORAWANTM publiée par la LORA Alliancetm.La radio est adaptée aux systèmes ciblant la conformité avec les réglementations de radio, y compris mais non limité aux exigences de réglementation chinoises et à la fréquence ETSI En 300 220 (434 MHZ). MHz à 810 MHz permet le support des bandes de dispositifs à courte portée de 490 et 780 MHz à faible puissance.
Libdriver SX1268 est le pilote complet de la fonction de SX1268 lancée par Libdriver.It fournit des fonctions d'envoi sans fil, de réception sans fil, de CAO, etc. Libdriver est conforme à Misra.
/ SRC inclut les fichiers source Libdriver SX1268.
/ L'interface inclut le modèle indépendant de la plate-forme SPI Libdriver SX1268.
/ Le test comprend le code de test du pilote LibDriver SX1268 et ce code peut tester la fonction nécessaire en puce.
/ L'exemple inclut Libdriver SX1268 Exemple de code.
/ DOC comprend le document hors ligne Libdriver SX1268.
/ La fiche technique comprend la fiche technique SX1268.
/ Le projet comprend l'exemple de code commun Linux et MCU Development Board. Tous les projets utilisent le script shell pour déboguer le pilote et l'instruction détaillée peut être trouvée dans Readme.md de chaque projet.
/ MISRA comprend les résultats de la numérisation du code MISRA Libdriver.
Modèle indépendant de la plate-forme SPI de référence / interface et terminer votre pilote SPI de plate-forme.
Ajoutez le répertoire / src, le pilote d'interface de votre plateforme et vos propres pilotes à votre projet, si vous souhaitez utiliser l'exemple par défaut, ajoutez le répertoire / exemple à votre projet.
Vous pouvez vous référer aux exemples du répertoire / exemple pour compléter votre propre pilote. Si vous souhaitez utiliser les exemples de programmation par défaut, voici comment les utiliser.
#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 ;Documents en ligne: https://www.libdriver.com/docs/sx1268/index.html.
Documents hors ligne: /doc/html/index.html.
Veuillez vous référer à contribution.md.
Copyright (C) 2015 - Présent libdriver Tous droits réservés
La licence du MIT (MIT)
L'autorisation est accordée gratuitement par la présente à toute personne qui obtient une copie
de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter
dans le logiciel sans restriction, y compris sans limitation, les droits
Pour utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et / ou vendre
copies du logiciel, et pour permettre aux personnes auxquelles le logiciel est
meublé pour le faire, sous réserve des conditions suivantes:
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation doivent être inclus dans tous
copies ou parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou
Implicite, y compris mais sans s'y limiter
FACTIONNEMENT dans un but particulier et sans contrefaçon. En aucun cas le ne doit
Les auteurs ou les détenteurs de droits d'auteur sont responsables de toute réclamation, dommage ou autre
Responsabilité, que ce soit dans une action de contrat, délit ou autre, découlant de,
Hors de ou en relation avec le logiciel ou l'utilisation ou d'autres transactions dans le
LOGICIEL.
Veuillez envoyer un e-mail à [email protected].