嗨
低是我的測試失敗&main.c
我使用SDK 12.2和nrf51822
這個失敗是代碼失敗?或RF匹配?
謝謝
|
模式 |
渠道 |
6dB帶寬[MHz] |
99%OBW [MHz] |
判決書 |
|
BLE |
LCH |
0.2607 |
0.4274 |
失敗 |

/* Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved.
*
* The information contained herein is property of Nordic Semiconductor ASA.
* Terms and conditions of usage are described in detail in NORDIC
* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
*
* Licensees are granted free, non-transferable use of the information. NO
* WARRANTY of ANY KIND is provided. This heading must NOT be removed from
* the file.
*
*/
/** @file
*
* @defgroup nrf_radio_test_example_main main.c
* @{
* @ingroup nrf_radio_test_example
* @brief Radio Test Example Application main file.
*
* This file contains the source code for a sample application using the NRF_RADIO, and is controlled through the serial port.
*
*/
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include "bsp.h"
#include "nrf.h"
#include "radio_test.h"
#include "app_uart.h"
#include "app_error.h"
#include "nordic_common.h"
#include "nrf_delay.h"
static uint8_t mode_ = RADIO_MODE_MODE_Nrf_1Mbit;//RADIO_MODE_MODE_Nrf_1Mbit;//RADIO_MODE_MODE_Nrf_2Mbit;
static uint8_t txpower_ = RADIO_TXPOWER_TXPOWER_0dBm;
static int channel_start_ = 2;
uint8_t change_set_flg =0;
bool change_flg=0;
bool change_TX_RX = 0; // TX=1 , RX = 0
typedef enum
{
RADIO_TEST_NOP, /**< No test running. */
RADIO_TEST_TXCC, /**< TX constant carrier. */
RADIO_TEST_TXMC, /**< TX modulated carrier. */
RADIO_TEST_TXSWEEP, /**< TX sweep. */
RADIO_TEST_RXC, /**< RX constant carrier. */
RADIO_TEST_RXSWEEP, /**< RX sweep. */
} radio_tests_t;
#define BELL 7 // Bell
#define UART_TX_BUF_SIZE 512 /**< UART TX buffer size. */
#define UART_RX_BUF_SIZE 1 /**< UART RX buffer size. */
#define BUTTON_PIN 5
void uart_error_handle(app_uart_evt_t * p_event)
{
if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
{
APP_ERROR_HANDLER(p_event->data.error_communication);
}
else if (p_event->evt_type == APP_UART_FIFO_ERROR)
{
APP_ERROR_HANDLER(p_event->data.error_code);
}
}
/** @brief Function for configuring all peripherals used in this example.
*/
static void init(void)
{
NRF_RNG->TASKS_START = 1;
// Start 16 MHz crystal oscillator
NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
NRF_CLOCK->TASKS_HFCLKSTART = 1;
// Wait for the external oscillator to start up
while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0)
{
// Do nothing.
}
}
/** @brief Function for main application entry.
*/
int main(void)
{
init();
// NVIC_EnableIRQ(TIMER0_IRQn);
// __enable_irq();
nrf_gpio_cfg_input(BUTTON_PIN,GPIO_PIN_CNF_PULL_Pullup);
radio_sweep_end();
nrf_delay_ms(5);
radio_tx_carrier(txpower_, mode_, channel_start_);
while (true)
{
if( !nrf_gpio_pin_read(BUTTON_PIN)) //if BUTTON_PIN = low wile change
{
nrf_delay_ms(50);
if( nrf_gpio_pin_read(BUTTON_PIN)) //if BUTTON_PIN = hi
{
if(change_set_flg < 5)
change_set_flg +=1;
else
change_set_flg =0;
change_flg =1;
}
}
if(change_flg )
{
change_flg = 0;
switch (change_set_flg)
{
case 0:
change_TX_RX = 1;
channel_start_ = 2;
break;
case 1:
change_TX_RX = 1;
//channel_start_ = 41; //change 2441MHz to 2440MHz
channel_start_ = 40; //change 2441MHz to 2440MHz
break;
case 2:
change_TX_RX = 1;
channel_start_ = 80;
break;
case 3:
change_TX_RX = 0;
channel_start_ = 2;
break;
case 4:
change_TX_RX = 0;
//channel_start_ = 41; //change 2441MHz to 2440MHz
channel_start_ = 40; //change 2441MHz to 2440MHz
break;
case 5:
change_TX_RX = 0;
channel_start_ = 80;
break;
default:// No implementation needed.
break;
}
if(change_TX_RX) //TX
{
radio_sweep_end();
nrf_delay_ms(5);
//radio_tx_carrier(txpower_, mode_, channel_start_);
radio_modulated_tx_carrier(txpower_, mode_, channel_start_);
}
else //RX
{
radio_sweep_end();
nrf_delay_ms(5);
radio_rx_carrier(mode_, channel_start_);
}
}
}
}
// radio_tx_carrier(txpower_, mode_, 2);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
//
// radio_tx_carrier(txpower_, mode_, 41);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
//
// radio_tx_carrier(txpower_, mode_, 80);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
//
// radio_rx_carrier(mode_, 2);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
// radio_rx_carrier(mode_, 41);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
// radio_rx_carrier(mode_, 80);
// nrf_delay_ms(5000);
// radio_sweep_end();
// nrf_delay_ms(50);
/** @} */
