ภาษาอังกฤษ | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어
ตัวรับส่งสัญญาณวิทยุย่อย LLCC68 Sub-GHz เหมาะอย่างยิ่งสำหรับการใช้งานไร้สายระยะยาว มันถูกออกแบบมาสำหรับอายุการใช้งานแบตเตอรี่ที่ยาวนานด้วยเพียง 4.2 mA ของการใช้งานที่ได้รับการบริโภคในปัจจุบัน LLCC68 สามารถส่งได้สูงสุดถึง +22 dBm ด้วยแอมพลิฟายเออร์พลังงานแบบบูรณาการที่มีประสิทธิภาพสูง LLCC68 รองรับการปรับLORA®สำหรับกรณีการใช้ LPWAN และ (G) สามารถกำหนดค่าได้อย่างมากในการตอบสนองความต้องการแอปพลิเคชันที่แตกต่างกันสำหรับการใช้งานในอุตสาหกรรมและผู้บริโภคอุปกรณ์ให้การปรับเปลี่ยนLORA®ที่เข้ากันได้กับเครื่องรับส่งสัญญาณ Semtech ที่ใช้โดยข้อกำหนดของ LoRawan ™ที่ปล่อยออกมาโดย LORA Alliance ™วิทยุเหมาะสำหรับระบบที่กำหนดเป้าหมายตามกฎระเบียบวิทยุ การครอบคลุมความถี่อย่างต่อเนื่องจาก 150 MHz ถึง 960 MHz ช่วยให้การสนับสนุนของแถบ ISM ย่อย GHz ที่สำคัญทั้งหมดทั่วโลกสามารถใช้งานได้ในมิเตอร์อัจฉริยะห่วงโซ่อุปทานและโลจิสติกส์การสร้างระบบอัตโนมัติและอื่น ๆ
Libdriver LLCC68 เป็นตัวขับเคลื่อนฟังก์ชั่นเต็มรูปแบบของ LLCC68 ที่เปิดตัวโดย Libdriver.it ให้ฟังก์ชั่นการส่งแบบไร้สายการรับแบบไร้สาย CAD ฯลฯ libdriver เป็นไปตามมาตรฐาน Misra
/SRC รวมไฟล์ต้นฉบับ libdriver LLCC68
/อินเทอร์เฟซรวมถึง Libdriver LLCC68 SPI เทมเพลตอิสระ
/การทดสอบรวมถึงรหัสทดสอบไดรเวอร์ libdriver LLCC68 และรหัสนี้สามารถทดสอบฟังก์ชั่นที่จำเป็นของชิปได้ง่ายๆ
/ตัวอย่างรวมถึงรหัสตัวอย่าง libdriver LLCC68
/เอกสารรวมถึงเอกสารออฟไลน์ LLCC68
/แผ่นข้อมูลมีแผ่นข้อมูล LLCC68
/โครงการรวมถึงรหัสตัวอย่างบอร์ดการพัฒนา Linux และ MCU ทั่วไป โครงการทั้งหมดใช้เชลล์สคริปต์เพื่อแก้ไขข้อบกพร่องของไดรเวอร์และคำสั่งรายละเอียดสามารถพบได้ใน readme.md ของแต่ละโครงการ
/MISRA รวมถึงผลการสแกนรหัส MISRA Libdriver
แพลตฟอร์มอ้างอิง /อินเทอร์เฟซ SPI เทมเพลตอิสระและจบไดรเวอร์ SPI แพลตฟอร์มของคุณ
เพิ่มไดเร็กทอรี /SRC ไดรเวอร์อินเตอร์เฟสสำหรับแพลตฟอร์มของคุณและไดรเวอร์ของคุณเองในโครงการของคุณหากคุณต้องการใช้ไดรเวอร์ตัวอย่างเริ่มต้นเพิ่มไดเร็กทอรี /ตัวอย่างลงในโครงการของคุณ
คุณสามารถอ้างถึงตัวอย่างในไดเรกทอรี /ตัวอย่างเพื่อให้ไดรเวอร์ของคุณสมบูรณ์ หากคุณต้องการใช้ตัวอย่างการเขียนโปรแกรมเริ่มต้นนี่คือวิธีการใช้งาน
#include "driver_llcc68_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 LLCC68_IRQ_TX_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq tx done.n" );
break ;
}
case LLCC68_IRQ_RX_DONE :
{
uint16_t i ;
llcc68_bool_t enable ;
float rssi ;
float snr ;
llcc68_interface_debug_print ( "llcc68: irq rx done.n" );
/* get the status */
if ( llcc68_lora_get_status (( float * ) & rssi , ( float * ) & snr ) != 0 )
{
return ;
}
llcc68_interface_debug_print ( "llcc68: rssi is %0.1f.n" , rssi );
llcc68_interface_debug_print ( "llcc68: snr is %0.2f.n" , snr );
/* check the error */
if ( llcc68_lora_check_packet_error ( & enable ) != 0 )
{
return ;
}
if (( enable == LLCC68_BOOL_FALSE ) && len )
{
for ( i = 0 ; i < len ; i ++ )
{
llcc68_interface_debug_print ( "%c" , buf [ i ]);
}
llcc68_interface_debug_print ( "n" );
gs_rx_done = 1 ;
}
break ;
}
case LLCC68_IRQ_PREAMBLE_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq preamble detected.n" );
break ;
}
case LLCC68_IRQ_SYNC_WORD_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid sync word detected.n" );
break ;
}
case LLCC68_IRQ_HEADER_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid header.n" );
break ;
}
case LLCC68_IRQ_HEADER_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq header error.n" );
break ;
}
case LLCC68_IRQ_CRC_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq crc error.n" );
break ;
}
case LLCC68_IRQ_CAD_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq cad done.n" );
break ;
}
case LLCC68_IRQ_CAD_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq cad detected.n" );
break ;
}
case LLCC68_IRQ_TIMEOUT :
{
llcc68_interface_debug_print ( "llcc68: irq timeout.n" );
break ;
}
default :
{
break ;
}
}
}
/* gpio init */
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = llcc68_lora_irq_handler ;
/* lora init */
res = llcc68_lora_init ( a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* set send mode */
res = llcc68_lora_set_send_mode ();
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
llcc68_interface_debug_print ( "llcc68: send %s.n" , "123" );
/* send data */
res = llcc68_lora_send (( uint8_t * ) "123" , strlen ( "123" ));
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* deinit */
res = llcc68_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_llcc68_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 LLCC68_IRQ_TX_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq tx done.n" );
break ;
}
case LLCC68_IRQ_RX_DONE :
{
uint16_t i ;
llcc68_bool_t enable ;
float rssi ;
float snr ;
llcc68_interface_debug_print ( "llcc68: irq rx done.n" );
/* get the status */
if ( llcc68_lora_get_status (( float * ) & rssi , ( float * ) & snr ) != 0 )
{
return 1 ;
}
llcc68_interface_debug_print ( "llcc68: rssi is %0.1f.n" , rssi );
llcc68_interface_debug_print ( "llcc68: snr is %0.2f.n" , snr );
/* check the error */
if ( llcc68_lora_check_packet_error ( & enable ) != 0 )
{
return 1 ;
}
if (( enable == LLCC68_BOOL_FALSE ) && len )
{
for ( i = 0 ; i < len ; i ++ )
{
llcc68_interface_debug_print ( "%c" , buf [ i ]);
}
llcc68_interface_debug_print ( "n" );
gs_rx_done = 1 ;
}
break ;
}
case LLCC68_IRQ_PREAMBLE_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq preamble detected.n" );
break ;
}
case LLCC68_IRQ_SYNC_WORD_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid sync word detected.n" );
break ;
}
case LLCC68_IRQ_HEADER_VALID :
{
llcc68_interface_debug_print ( "llcc68: irq valid header.n" );
break ;
}
case LLCC68_IRQ_HEADER_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq header error.n" );
break ;
}
case LLCC68_IRQ_CRC_ERR :
{
llcc68_interface_debug_print ( "llcc68: irq crc error.n" );
break ;
}
case LLCC68_IRQ_CAD_DONE :
{
llcc68_interface_debug_print ( "llcc68: irq cad done.n" );
break ;
}
case LLCC68_IRQ_CAD_DETECTED :
{
llcc68_interface_debug_print ( "llcc68: irq cad detected.n" );
break ;
}
case LLCC68_IRQ_TIMEOUT :
{
llcc68_interface_debug_print ( "llcc68: irq timeout.n" );
break ;
}
default :
{
break ;
}
}
}
/* gpio init */
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = llcc68_lora_irq_handler ;
/* lora init */
res = llcc68_lora_init ( a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* start receiving */
llcc68_interface_debug_print ( "llcc68: start receiving...n" );
gs_rx_done = 0 ;
timeout = 3000 ;
/* start receive */
res = llcc68_lora_set_continuous_receive_mode ();
if ( res != 0 )
{
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
while (( timeout != 0 ) && ( gs_rx_done == 0 ))
{
timeout -- ;
llcc68_interface_delay_ms ( 1000 );
}
if ( gs_rx_done == 0 )
{
/* receive timeout */
llcc68_interface_debug_print ( "llcc68: receive timeout.n" );
( void ) llcc68_lora_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
/* deinit */
res = llcc68_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/llcc68/index.html
เอกสารออฟไลน์: /doc/html/index.html
โปรดดูที่ Inturning.md
ลิขสิทธิ์ (c) 2015 - ปัจจุบัน libdriver สงวนลิขสิทธิ์
ใบอนุญาต MIT (MIT)
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนา
ของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการ
ในซอฟต์แวร์โดยไม่มีข้อ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์
หากต้องการใช้, คัดลอก, แก้ไข, ผสาน, เผยแพร่, แจกจ่าย, sublicense, และ/หรือขาย
สำเนาซอฟต์แวร์และอนุญาตให้บุคคลที่ซอฟต์แวร์เป็นใคร
ได้รับการตกแต่งให้ทำเช่นนั้นขึ้นอยู่กับเงื่อนไขดังต่อไปนี้:
ประกาศลิขสิทธิ์ข้างต้นและการแจ้งเตือนนี้จะรวมอยู่ในทั้งหมด
สำเนาหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ Express หรือ
โดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันการค้า
ความฟิตสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใด
ผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรืออื่น ๆ
ความรับผิดไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจาก
ออกจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ใน
ซอฟต์แวร์.
กรุณาส่งอีเมลไปที่ [email protected]