Bahasa Inggris | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
Transceiver Radio Sub-GHZ SX1268 adalah perangkat yang ideal untuk aplikasi nirkabel jarak jauh. Ini dirancang untuk masa pakai baterai yang lama dengan hanya 4,2 mA yang aktif menerima konsumsi saat ini. SX1268 dapat mentransmisikan hingga +22 dBm pada 490 MHz dengan amplifier daya terintegrasi yang sangat efisien. Pada 780 MHz, SX1268 mengkonsumsi kurang dari 20 mA untuk mentransmisikan Sinyal DBM di Port. Sangat dapat dikonfigurasi untuk memenuhi persyaratan aplikasi yang berbeda dengan menggunakan standar LoraWantM atau protokol berpemilik. Perangkat ini dirancang untuk memenuhi persyaratan lapisan fisik dari spesifikasi LoraWantM yang dilepaskan oleh Lora Aliancet. Radio yang cocok untuk Sistem yang menargetkan kepatuhan radio. MHZ hingga 810 MHz memungkinkan dukungan dari pita perangkat jarak pendek 490 dan 780 MHz China China .SX1268 dapat digunakan dalam meter pintar, rantai pasokan dan logistik, otomatisasi bangunan dan sebagainya.
Libdriver SX1268 adalah driver fungsi penuh SX1268 yang diluncurkan oleh libdriver.it menyediakan fungsi pengiriman nirkabel, penerima nirkabel, CAD, dll. Libdriver sesuai dengan misra.
/SRC termasuk file sumber Libdriver SX1268.
/Antarmuka termasuk Libdriver SX1268 SPI Platform Independent Template.
/Tes Termasuk Libdriver SX1268 Kode Tes Driver dan kode ini dapat menguji fungsi chip yang diperlukan secara sederhana.
/Contoh termasuk Libdriver SX1268 Kode Sampel.
/DOC termasuk Libdriver SX1268 Offline Document.
/DataSheet termasuk SX1268 DataSheet.
/Proyek termasuk kode sampel Dewan Pengembangan Linux dan MCU yang umum. Semua proyek menggunakan skrip shell untuk men -debug pengemudi dan instruksi detail dapat ditemukan di readme.md setiap proyek.
/Misra termasuk hasil pemindaian kode misra libdriver.
Referensi /antarmuka platform SPI Templat independen dan selesaikan driver SPI platform Anda.
Tambahkan direktori /src, driver antarmuka untuk platform Anda, dan driver Anda sendiri ke proyek Anda, jika Anda ingin menggunakan driver contoh default, tambahkan /contoh direktori ke proyek Anda.
Anda dapat merujuk pada contoh di direktori /contoh untuk menyelesaikan driver Anda sendiri. Jika Anda ingin menggunakan contoh pemrograman default, inilah cara menggunakannya.
#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 ;Dokumen online: https://www.libdriver.com/docs/sx1268/index.html.
Dokumen offline: /doc/html/index.html.
Silakan merujuk ke Contributing.md.
Hak Cipta (C) 2015 - Libdriver Hak Hak Dilindungi Undang -Undang
Lisensi MIT (MIT)
Izin dengan ini diberikan, gratis, kepada siapa pun yang mendapatkan salinan
dari perangkat lunak ini dan file dokumentasi terkait ("perangkat lunak"), untuk menangani
dalam perangkat lunak tanpa batasan, termasuk tanpa batasan hak
untuk menggunakan, menyalin, memodifikasi, menggabungkan, mempublikasikan, mendistribusikan, sublisense, dan/atau menjual
salinan perangkat lunak, dan untuk mengizinkan orang yang menjadi perangkat lunaknya
dilengkapi untuk melakukannya, tunduk pada kondisi berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua
salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, ekspres atau
Tersirat, termasuk tetapi tidak terbatas pada jaminan diperjualbelikan,
Kebugaran untuk tujuan dan non -infringement tertentu. Dalam hal apa pun tidak akan
Penulis atau pemegang hak cipta bertanggung jawab atas klaim, kerusakan atau lainnya
Tanggung jawab, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari,
Di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain di
PERANGKAT LUNAK.
Silakan kirim email ke [email protected].