ภาษาอังกฤษ | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
ตัวรับส่งสัญญาณวิทยุย่อย SX1268 Sub-GHz เป็นอุปกรณ์ที่เหมาะสำหรับการใช้งานไร้สายระยะยาว มันถูกออกแบบมาสำหรับอายุการใช้งานแบตเตอรี่ที่ยาวนานด้วยเพียง 4.2 mA ของการใช้งานที่ได้รับการบริโภคในปัจจุบัน SX1268 สามารถส่งสูงถึง +22 dBm ที่ 490 MHz ด้วยแอมพลิฟายเออร์พลังงานแบบบูรณาการที่มีประสิทธิภาพสูงใน 780 MHz, SX1268 ใช้เวลาน้อยกว่า 20 mA เพื่อส่งสัญญาณ +10 dBM ที่พอร์ต ANTENNA ของมัน SX1268 สามารถกำหนดค่าได้อย่างมากในการปฏิบัติตามข้อกำหนดของแอปพลิเคชันที่แตกต่างกันโดยใช้โปรโตคอลมาตรฐาน LoRawantM หรือโปรโตคอลที่เป็นกรรมสิทธิ์อุปกรณ์ได้รับการออกแบบมาเพื่อให้สอดคล้องกับข้อกำหนดของชั้นทางกายภาพของข้อกำหนด LoRawantm ที่ปล่อยออกมาโดย Lora Alliancetm วิทยุเหมาะสำหรับระบบการกำหนดเป้าหมาย ถึง 810 MHz ช่วยให้สามารถรองรับแถบอุปกรณ์ระยะสั้นระยะสั้นของจีน 490 และ 780 MHz SX1268 ในสมาร์ทมิเตอร์ซัพพลายเชนและโลจิสติกส์การสร้างระบบอัตโนมัติและอื่น ๆ
Libdriver SX1268 เป็นไดรเวอร์ฟังก์ชั่นเต็มรูปแบบของ SX1268 ที่เปิดตัวโดย Libdriver.it ให้ฟังก์ชั่นการส่งแบบไร้สายการรับแบบไร้สาย CAD ฯลฯ libdriver เป็นไปตามมาตรฐาน MISRA
/SRC รวมไฟล์ต้นฉบับ libdriver SX1268
/อินเตอร์เฟสรวมถึง Libdriver SX1268 SPI แพลตฟอร์มอิสระเทมเพลตอิสระ
/การทดสอบรวมถึงรหัสทดสอบไดรเวอร์ libdriver SX1268 และรหัสนี้สามารถทดสอบฟังก์ชั่นที่จำเป็นของชิปได้ง่ายๆ
/ตัวอย่างรวมถึงรหัสตัวอย่าง libdriver SX1268
/เอกสารรวมถึงเอกสารออฟไลน์ libdriver SX1268
/แผ่นข้อมูลมีแผ่นข้อมูล SX1268
/โครงการรวมถึงรหัสตัวอย่างบอร์ดการพัฒนา Linux และ MCU ทั่วไป โครงการทั้งหมดใช้เชลล์สคริปต์เพื่อแก้ไขข้อบกพร่องของไดรเวอร์และคำสั่งรายละเอียดสามารถพบได้ใน readme.md ของแต่ละโครงการ
/MISRA รวมถึงผลการสแกนรหัส MISRA Libdriver
แพลตฟอร์มอ้างอิง /อินเทอร์เฟซ 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
โปรดดูที่ Inturning.md
ลิขสิทธิ์ (c) 2015 - ปัจจุบัน libdriver สงวนลิขสิทธิ์
ใบอนุญาต MIT (MIT)
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนา
ของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการ
ในซอฟต์แวร์โดยไม่มีข้อ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์
หากต้องการใช้, คัดลอก, แก้ไข, ผสาน, เผยแพร่, แจกจ่าย, sublicense, และ/หรือขาย
สำเนาซอฟต์แวร์และอนุญาตให้บุคคลที่ซอฟต์แวร์เป็นใคร
ได้รับการตกแต่งให้ทำเช่นนั้นขึ้นอยู่กับเงื่อนไขดังต่อไปนี้:
ประกาศลิขสิทธิ์ข้างต้นและการแจ้งเตือนนี้จะรวมอยู่ในทั้งหมด
สำเนาหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ Express หรือ
โดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันการค้า
ความฟิตสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใด
ผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรืออื่น ๆ
ความรับผิดไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจาก
ออกจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ใน
ซอฟต์แวร์.
กรุณาส่งอีเมลไปที่ [email protected]