

Código fuente del proyecto
###
//Programa para //Programa para Rx /* Copyright (c) 2009 Nordic Semiconductor. Reservados todos los derechos. * *La información contenida en este documento es propiedad confidencial de Nordic * Semiconductor ASA. Los términos y condiciones de uso se describen detalladamente. * en el ACUERDO DE LICENCIA DE SOFTWARE ESTÁNDAR DE NORDIC SEMICONDUCTOR. * * A los licenciatarios se les concede el uso gratuito e intransferible de la información. EN EL * Se proporciona GARANTÍA de CUALQUIER TIPO. Este encabezado NO debe eliminarse de * el archivo. * * $Última revisión modificada: 2211 $ */ /** @filete * @brief Ejemplo de receptor primario ShockBurst mejorado * @defgroup esb_prx_example Ejemplo de receptor primario ShockBurst (PRX) mejorado * @{ * @ingroup nrf_examples * * @brief Este ejemplo monitorea los datos y escribe el primer byte (byte 0) del * cargas útiles recibidas a P0. * * El ejemplo muestra la configuración mínima requerida para recibir paquetes desde un * dispositivo transmisor primario (PTX). * * Se utilizan los siguientes parámetros de radio predeterminados: * - canal de radiofrecuencia 2 * - Velocidad de datos de 2 Mbps * - Dirección RX 0xE7E7E7E7E7 (tubería 0) y 0xC2C2C2C2C2 (tubería 1) * - CRC de 1 byte * * El proyecto @ref esb_ptx_example se puede utilizar como contraparte para transmitir los datos. * */ #include "nrf24le1.h" // Archivo de encabezado de E/S para NRF24LE1 #include "hal_clk.h" // biblioteca que contiene funciones de reloj #incluir// biblioteca de enteros estándar #include "hal_nrf.h" // biblioteca que contiene funciones de comunicación inalámbrica // Variables globales carga útil uint8_t(3); // carga útil a recibir // función principal vacío principal { #ifdef MCU_NRF24LE1 mientras (hal_clk_get_16m_source! = HAL_CLK_XOSC16M) { // Espere hasta que se esté ejecutando el oscilador de cristal de 16 MHz } #terminara si #ifdef MCU_NRF24LU1P // Habilitar radio SPI RFCTL = 0x10; #terminara si // Establece P0 como salida P0DIR = 0; // Habilitar el radio reloj RFCKEN = 1; // Habilitar interrupción de RF RF = 1; // Habilitar interrupción global EA = 1; // Configurar la radio como receptor principal (PTX) hal_nrf_set_operación_modo(HAL_NRF_PRX); // Establece el ancho de la carga útil en 3 bytes hal_nrf_set_rx_payload_width((int)HAL_NRF_PIPE0, 3); // Enciende la radio hal_nrf_set_power_mode(HAL_NRF_PWR_UP); // Habilitar receptor CE_ALTO; // Bucle infinito para(;;){} } // interrupción de radio NRF_ISR { uint8_t irq_flags; // Leer y borrar indicadores IRQ de la radio irq_flags = hal_nrf_get_clear_irq_flags; // Si se reciben datos if((irq_flags & (1<<(uint8_t)HAL_NRF_RX_DR)) > 0) { // Leer carga útil mientras(!hal_nrf_rx_fifo_empty) { hal_nrf_read_rx_payload(carga útil); } // Escribe la carga útil recibida(0) en el puerto 0 P0 = carga útil(0); } } /** @} */ //Programa para Tx /* Copyright (c) 2009 Nordic Semiconductor. Reservados todos los derechos. * *La información contenida en este documento es propiedad de Nordic Semiconductor ASA. *Los términos y condiciones de uso se describen detalladamente en NORDIC * CONTRATO DE LICENCIA DE SOFTWARE ESTÁNDAR DE SEMICONDUCTOR. * * A los licenciatarios se les concede el uso gratuito e intransferible de la información. EN EL * Se proporciona GARANTÍA de CUALQUIER TIPO. Este encabezado NO debe eliminarse de * el archivo. * * $Última revisión modificada: 2513 $ */ /** @filete * @brief Ejemplo de transmisor primario ShockBurst mejorado * @defgroup esb_ptx_example Ejemplo de transmisor primario ShockBurst (PTX) mejorado * @{ * @ingroup nrf_examples * * @brief Este ejemplo envía paquetes continuamente. El contenido de P0 es * enviado en el primer byte de carga útil (byte 0). * * El ejemplo muestra la configuración mínima requerida para transmitir paquetes a un * dispositivo receptor primario (PRX). * * Se utilizan los siguientes parámetros de radio predeterminados: * - canal de radiofrecuencia 2 * - Velocidad de datos de 2 Mbps * - Dirección TX 0xE7E7E7E7E7 * - CRC de 1 byte * * El proyecto @ref esb_prx_example se puede utilizar como contraparte para recibir los datos. * */ #include "nrf24le1.h" // Archivo de encabezado de E/S para NRF24LE1 #include "hal_clk.h" // biblioteca que contiene funciones de reloj #incluir // biblioteca de enteros estándar #include "hal_nrf.h" // biblioteca que contiene funciones de comunicación inalámbrica #incluir // biblioteca booleana estándar // Variables globales bool estático volátil radio_busy; // función principal vacío principal (vacío) { carga útil uint8_t(3); // carga útil a transmitir #ifdef MCU_NRF24LE1 mientras (hal_clk_get_16m_source! = HAL_CLK_XOSC16M) { // Espere hasta que se esté ejecutando el oscilador de cristal de 16 MHz } #terminara si #ifdef MCU_NRF24LU1P // Habilitar radio SPI RFCTL = 0x10U; #terminara si // Habilitar el radio reloj RFCKEN = 1U; // Habilitar interrupción de RF RF = 1U; // Habilitar interrupción global EA = 1U; // Enciende la radio hal_nrf_set_power_mode(HAL_NRF_PWR_UP); // Bucle infinito para(;;) { // Poner el contenido de P0 en la carga útil(0) carga útil(0) = ~P0; // escribe complemento de Port0 // Escribe la carga útil en la radio TX FIFO hal_nrf_write_tx_payload(carga útil, 3U); // Alternar señal de radio CE para iniciar la transmisión CE_PULSO; radio_busy = verdadero; // Espere a que finalice la operación de radio mientras (radio_ocupada) { } } } // interrupción de radio NRF_ISR { uint8_t irq_flags; // Leer y borrar indicadores IRQ de la radio irq_flags = hal_nrf_get_clear_irq_flags; cambiar(irq_flags) { // Transmisión exitosa caso (1 << (uint8_t)HAL_NRF_TX_DS): radio_ocupada = falso; // Los datos han sido enviados romper; // Falló la transmisión (retransmisiones máximas) caso (1 << (uint8_t)HAL_NRF_MAX_RT): // Cuando se produce una interrupción MAX_RT, la carga útil de TX no se eliminará del TX FIFO. // Si se va a descartar el paquete, esto debe hacerse manualmente vaciando el TX FIFO. // Alternativamente, se puede llamar a CE_PULSE reiniciando la transmisión de la carga útil. // (Sólo será posible después de que se borre las banderas de radio irq) hal_nrf_flush_tx; radio_ocupada = falso; romper; por defecto: romper; } } /** @} */ ###
Diagramas de circuito
| Diagrama de circuito: dispositivo de comunicación inalámbrico basado en NRF24LE1 | ![]() |
Vídeo del proyecto








