英語| 简体中文| 繁體中文| 日本語| Deutsch | 한국어
SX1268サブGHz無線トランシーバーは、長距離ワイヤレスアプリケーションに理想的なデバイスです。わずか4.2 mAのアクティブな現在の消費量で長いバッテリー寿命のために設計されています。 SX1268は、非常に効率的な統合パワーアンプを使用して490 MHzで最大+22 dBMを送信できます。780MHzで、SX1268はアンテナポートで+10 dBM信号を送信します。 LoraWANTM標準または独自のプロトコルを利用してさまざまなアプリケーション要件を満たすことは非常に構成できます。デバイスは、LORA AlliancetによってリリースされたLORAWANTM仕様の物理レイヤー要件に準拠するように設計されています。ラジオは、中国規制およびETSI EN 300 220(434 MHZ)からの頻繁な要件に基づいていない場合、無線規制のコンプライアンスをターゲットとするシステムに適しています。 MHzから810 MHzを使用すると、490および780 MHzの中国の低電力短距離デバイスバンドのサポートが可能になります。SX1268は、スマートメーター、サプライチェーン、ロジスティクス、建物の自動化などで使用できます。
Libdriver SX1268は、libdriver.itによって起動されたSX1268の完全な機能ドライバーです。
/SRCには、Libdriver SX1268ソースファイルが含まれています。
/インターフェイスには、Libdriver SX1268 SPIプラットフォーム独立テンプレートが含まれています。
/テストには、Libdriver SX1268ドライバーテストコードが含まれ、このコードはCHIPが必要な機能を簡単にテストできます。
/例には、Libdriver SX1268サンプルコードが含まれています。
/docには、libdriver sx1268オフラインドキュメントが含まれています。
/データシートにはSX1268データシートが含まれています。
/プロジェクトには、一般的なLinuxおよびMCU開発ボードのサンプルコードが含まれています。すべてのプロジェクトはシェルスクリプトを使用してドライバーをデバッグし、詳細指示は各プロジェクトのreadme.mdにあります。
/MISRAには、Libdriver Misraコードのスキャン結果が含まれています。
参照 /インターフェイスSPIプラットフォームに独立したテンプレートとプラットフォームSPIドライバーを完了します。
/srcディレクトリ、プラットフォームのインターフェイスドライバー、およびプロジェクトの独自のドライバーを追加します。デフォルトの例ドライバーを使用する場合は、 /サンプルディレクトリをプロジェクトに追加します。
/例ディレクトリの例を参照して、独自のドライバーを完成させることができます。デフォルトのプログラミング例を使用する場合は、それらを使用する方法を次に示します。
#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 ;オンライン文書:https://www.libdriver.com/docs/sx1268/index.html。
オフラインドキュメント:/doc/html/index.html。
貢献を参照してください。md。
Copyright(c)2015-現在のLibdriver All Rights Reserved
MITライセンス(MIT)
許可は、コピーを取得している人に無料で許可されます
このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)、取引
制限なしに、制限なしに権利を含むソフトウェアで
使用、コピー、変更、マージ、公開、配布、サブライセンス、および/または販売
ソフトウェアのコピー、およびソフトウェアがある人を許可するために
そうするために提供され、次の条件に従います。
上記の著作権通知とこの許可通知はすべてに含まれるものとする
ソフトウェアのコピーまたはかなりの部分。
ソフトウェアは、いかなる種類の保証も、明示的または
商品性の保証を含むがこれらに限定されない暗黙の、
特定の目的と非侵害へのフィットネス。いかなる場合でも
著者または著作権所有者は、請求、損害賠償、またはその他の責任を負います
契約、不法行為の行動、またはその他の責任は、から生じる、
ソフトウェアまたは使用またはその他の取引に関連して、または
ソフトウェア。
[email protected]に電子メールを送信してください。