영어 | 简体中文 | 繁體中文 | 日本語 | 도이치치 | 한국어
NRF24L01+는 초대형 무선 응용 프로그램에 적합한 내장 된베이스 밴드 프로토콜 엔진 (Enhanced Shockburst ™)을 갖춘 단일 칩 2.4GHz 트랜시버입니다. NRF24L01+는 2.400-2.4835GHz의 월드 와이드 ISM 주파수 대역에서 작동하도록 설계되었습니다. SPI를 통해 액세스 할 수있는 레지스터 맵에는 NRF24L01+의 모든 구성 레지스터가 포함되어 있으며 칩의 모든 작동 모드에서 액세스 할 수 있습니다. 내장 된베이스 밴드 프로토콜 엔진 (Enhanced ShockBurst ™)은 패킷 통신을 기반으로하며 수동 작동에서 고급 자동 프로토콜 작동에 이르기까지 다양한 모드를 지원합니다. 내부 FIFOS는 라디오 프론트 엔드와 시스템의 MCU 사이의 원활한 데이터 흐름을 보장합니다. Enhanced Shock-Burst ™는 모든 고속 링크 계층 작업을 처리하여 시스템 비용을 줄입니다. 라디오 프론트 엔드는 GFSK 변조를 사용합니다. 주파수 채널, 출력 전력 및 공기 데이터 속도와 같은 사용자 구성 가능한 매개 변수가 있습니다. NRF24L01+는 250kbps, 1Mbps 및 2Mbps의 공기 데이터 속도를 지원합니다. 두 가지 전력 절약 모드와 결합 된 높은 공기 데이터 속도는 NRF24L01+가 초 저전력 설계에 매우 적합하게 만듭니다. NRF24L01+는 NRF24L01과 드롭 인 호환되며 NRF2401A, NRF2402, NRF24E1 및 NRF24E2와 호환됩니다. NRF24L01+의 간 조절 및 광대역 차단 값은 NRF24L01과 비교하여 훨씬 개선되었으며 NRF24L01+에 내부 필터링을 추가하면 RF 규제 표준을 충족하기위한 여백이 향상되었습니다. 장전 전압 레귤레이터는 높은 전원 공급망 비율 (PSRR) 및 광범위한 전원 공급 범위를 보장합니다. NRF24L01은 무선 PC 주변 장치, 마우스, 키보드, 리모컨, 게임 컨트롤러 등에 사용됩니다.
Libdriver NRF24L01은 libdriver에 의해 시작된 NRF24L01의 전체 기능 드라이버입니다. IT는 무선 전송, 무선 수신 등의 함수를 제공합니다. libdriver는 Misra를 준수합니다.
/src에는 libdriver nrf24l01 소스 파일이 포함됩니다.
/인터페이스에는 libdriver nrf24L01 SPI 플랫폼 독립 템플릿이 포함됩니다.
/테스트에는 Libdriver NRF24L01 드라이버 테스트 코드가 포함 되며이 코드는 필요한 기능을 간단히 테스트 할 수 있습니다.
/예제에는 libdriver NRF24L01 샘플 코드가 포함됩니다.
/doc에는 libdriver nrf24l01 오프라인 문서가 포함되어 있습니다.
/데이터 시트에는 NRF24L01 데이터 시트가 포함됩니다.
/프로젝트에는 공통 Linux 및 MCU 개발 보드 샘플 코드가 포함됩니다. 모든 프로젝트는 쉘 스크립트를 사용하여 드라이버를 디버깅하고 각 프로젝트의 readme.md에서 세부 명령을 찾을 수 있습니다.
/misra에는 libdriver misra 코드 스캔 결과가 포함되어 있습니다.
참조 /인터페이스 SPI 플랫폼 독립 템플릿 및 플랫폼 SPI 드라이버를 완료합니다.
/SRC 디렉토리, 플랫폼의 인터페이스 드라이버 및 자신의 드라이버를 프로젝트에 추가하십시오. 기본 예제 드라이버를 사용하려면 /예제 디렉토리를 프로젝트에 추가하십시오.
/예제 디렉토리의 예제를 참조하여 자신의 드라이버를 완료 할 수 있습니다. 기본 프로그래밍 예제를 사용하려면 사용 방법은 다음과 같습니다.
#include "driver_nrf24l01_basic.h"
uint8_t ( * g_gpio_irq )( void ) = NULL ;
uint8_t res ;
uint8_t addr [ 5 ] = NRF24L01_BASIC_DEFAULT_RX_ADDR_0 ;
...
static void a_callback ( uint8_t type , uint8_t num , uint8_t * buf , uint8_t len )
{
switch ( type )
{
case NRF24L01_INTERRUPT_RX_DR :
{
uint8_t i ;
nrf24l01_interface_debug_print ( "nrf24l01: irq receive with pipe %d with %d.n" , num , len );
for ( i = 0 ; i < len ; i ++ )
{
nrf24l01_interface_debug_print ( "0x%02X " , buf [ i ]);
}
nrf24l01_interface_debug_print ( ".n" );
break ;
}
case NRF24L01_INTERRUPT_TX_DS :
{
nrf24l01_interface_debug_print ( "nrf24l01: irq send ok.n" );
break ;
}
case NRF24L01_INTERRUPT_MAX_RT :
{
nrf24l01_interface_debug_print ( "nrf24l01: irq reach max retry times.n" );
break ;
}
case NRF24L01_INTERRUPT_TX_FULL :
{
break ;
}
default :
{
break ;
}
}
}
...
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = nrf24l01_interrupt_irq_handler ;
res = nrf24l01_basic_init ( NRF24L01_TYPE_TX , a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
if ( nrf24l01_basic_send (( uint8_t * ) addr , ( uint8_t * ) "123" , 3 ) != 0 );
{
( void ) nrf24l01_basic_deinit ();
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
if ( nrf24l01_basic_deinit () != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 0 ; #include "driver_nrf24l01_basic.h"
uint8_t ( * g_gpio_irq )( void ) = NULL ;
uint8_t res ;
uint32_t timeout ;
...
static void a_callback ( uint8_t type , uint8_t num , uint8_t * buf , uint8_t len )
{
switch ( type )
{
case NRF24L01_INTERRUPT_RX_DR :
{
uint8_t i ;
nrf24l01_interface_debug_print ( "nrf24l01: irq receive with pipe %d with %d.n" , num , len );
for ( i = 0 ; i < len ; i ++ )
{
nrf24l01_interface_debug_print ( "0x%02X " , buf [ i ]);
}
nrf24l01_interface_debug_print ( ".n" );
break ;
}
case NRF24L01_INTERRUPT_TX_DS :
{
nrf24l01_interface_debug_print ( "nrf24l01: irq send ok.n" );
break ;
}
case NRF24L01_INTERRUPT_MAX_RT :
{
nrf24l01_interface_debug_print ( "nrf24l01: irq reach max retry times.n" );
break ;
}
case NRF24L01_INTERRUPT_TX_FULL :
{
break ;
}
default :
{
break ;
}
}
}
...
timeout = 5000 ;
res = gpio_interrupt_init ();
if ( res != 0 )
{
return 1 ;
}
g_gpio_irq = nrf24l01_interrupt_irq_handler ;
res = nrf24l01_basic_init ( NRF24L01_TYPE_RX , a_callback );
if ( res != 0 )
{
( void ) gpio_interrupt_deinit ();
g_gpio_irq = NULL ;
return 1 ;
}
nrf24l01_interface_delay_ms ( timeout );
if ( nrf24l01_basic_deinit () != 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/nrf24l01/index.html.
오프라인 문서 : /doc/html/index.html.
Contributing.md를 참조하십시오.
Copyright (C) 2015- 현재 Libdriver 판권 소유
MIT 라이센스 (MIT)
이에 따라 사본을 얻는 사람에게 무료로 허가가 부여됩니다.
이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의
권리를 포함하여 제한이없는 소프트웨어에서
사용, 복사, 수정, 병합, 출판, 배포, 하선 및/또는 판매
소프트웨어 사본 및 소프트웨어가있는 사람을 허용하기 위해
다음 조건에 따라이를 위해 제공됩니다.
위의 저작권 통지 및이 권한 통지는 모두에 포함되어야합니다.
소프트웨어의 사본 또는 상당 부분.
소프트웨어는 어떤 종류의 보증없이 "있는 그대로"제공됩니다.
상업성의 보증을 포함하되 이에 국한되지 않는 암시,
특정 목적과 비방을위한 적합성. 어떠한 경우에도
저자 또는 저작권 보유자는 청구, 손해 또는 기타에 대해 책임을집니다.
계약, 불법 행위 또는 다른 방법으로,
소프트웨어 또는 사용 또는 기타 거래와 관련하여
소프트웨어.
[email protected]으로 이메일을 보내주십시오.