الإنجليزية | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
يعد جهاز الإرسال والاستقبال الراديوي SX1268 SX1268 هو الجهاز المثالي للتطبيقات اللاسلكية طويلة المدى. تم تصميمه لعمر بطارية طويل مع 4.2 مللي أمبير فقط من الاستهلاك الحالي النشط. يمكن أن ينقل SX1268 ما يصل إلى +22 DBM عند 490 MHz مع مضخمات طاقة متكاملة عالية الكفاءة. في 780 MHz ، يستهلك SX1268 أقل من 20 مللي أمبير لإرسال إشارة +10 DBM في modulation antana port.sx1268 LORA لاستخدام الحالات (G) للاستخدام. إنه قابل للتكوين بشكل كبير لتلبية متطلبات التطبيق المختلفة باستخدام بروتوكولات LorawantM المعيارية أو الملكية. تم تصميم الجهاز للامتثال لمتطلبات الطبقة المادية لمواصفات LorawantM التي تم إصدارها من قبل Lora Alliancet. يتيح MHz إلى 810 MHz دعم نطاقات الأجهزة ذات المدى القصير الصيني 490 و 780 MHz.
Libdriver SX1268 هو برنامج تشغيل الوظيفة الكامل لـ SX1268 الذي تم إطلاقه بواسطة Libdriver.it يوفر وظائف إرسال لاسلكي ، وتلقي اللاسلكي ، CAD ، إلخ.
/يتضمن SRC ملفات مصدر Libdriver SX1268.
/الواجهة تتضمن Libdriver SX1268 SPI النموذج المستقل.
/يتضمن الاختبار رمز اختبار برنامج التشغيل Libdriver SX1268 ، ويمكن لهذا الرمز اختبار الوظيفة اللازمة للرقاقة ببساطة.
/مثال يتضمن libdriver sx1268 رمز عينة.
/DOC يتضمن Libdriver SX1268 وثيقة غير متصلة بالإنترنت.
/ورقة البيانات تتضمن ورقة البيانات SX1268.
/يتضمن المشروع رمز عينة مجلس تطوير Linux و MCU المشترك. تستخدم جميع المشاريع البرنامج النصي Shell لتصحيح السائق ويمكن العثور على تعليمات التفاصيل في كل مشروع readme.md.
/يتضمن Misra نتائج مسح رمز Libdriver Misra.
مرجع /واجهة 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.
يرجى الرجوع إلى المساهمة.
حقوق الطبع والنشر (ج) 2015 - تقدم Libdriver جميع الحقوق محفوظة
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT)
يتم منح إذن ، مجانًا ، لأي شخص يحصل على نسخة
من هذا البرنامج وملفات الوثائق المرتبطة ("البرنامج") ، للتعامل
في البرنامج دون قيود ، بما في ذلك على سبيل المثال لا الحصر الحقوق
لاستخدام ونسخ وتعديل ودمج ونشر وتوزيع و/أو بيع و/أو بيع
نسخ من البرنامج ، والسماح للأشخاص الذين يكون البرنامج لهم
مفروشة للقيام بذلك ، مع مراعاة الشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه ويجب تضمين إشعار الإذن هذا في الجميع
نسخ أو أجزاء كبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون ضمان من أي نوع ، صريح أو
ضمنيًا ، بما في ذلك على سبيل المثال لا الحصر ، ضمانات القابلية للتسويق ،
اللياقة لغرض معين وعدم الانفجارات. بأي حال من الأحوال يجب
يتحمل المؤلفون أو حاملي حقوق الطبع والنشر مسؤولية أي مطالبة أو أضرار أو غيرها
المسؤولية ، سواء في إجراء عقد أو ضرر أو غير ذلك ، ناشئة عن ،
خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو غيرها من المعاملات في
برمجة.
يرجى إرسال بريد إلكتروني إلى [email protected].