 
- UID
- 856476
|

本笔记是可穿戴芯片nRF51822 的2.4G无线通信测试程序。
一、大概了解
(1)
通信速率设定,与平常我们使用的24L01一样,可设为三种不同的速率——250ksps,1Msps ,和2Msps
(2)发送端输出功率可编程,从+4dB到-20dBm , 一次以4dB的步进。省电模式:-30dBm
接收器集成了最大接收灵敏度的通道滤波器。动态负载长度。
(3)8位,16位,24位可编程CRC校验
(4)集成了DMA 功能,有利于复杂数据的管理和传输。
二、程序编写
1、初始化
1)
使用16MHz
晶振,并关闭低频晶振。等待起振。
NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
NRF_CLOCK->TASKS_HFCLKSTART = 1;
while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0);
2)设置按键为上拉输入。
nrf_gpio_range_cfg_input(BUTTON_START, BUTTON_STOP, NRF_GPIO_PIN_PULLUP);
2、
配置RADIO
发送功率——有8种可选的功率——

这里选择0dBm,
NRF_RADIO->TXPOWER = (RADIO_TXPOWER_TXPOWER_0dBm << RADIO_TXPOWER_TXPOWER_Pos);
说明: RADIO_TXPOWER_TXPOWER_Pos
这里宏定义为0x00, 其实如上图可知,这个TXPOWER寄存器有32位,但并不是全部都用上,只用上了后8位,所以起始位为0x00 , 假如用上了8~15位,这里
RADIO_TXPOWER_TXPOWER_Pos
就应该宏定义为0x08 了。
3、具体配置程序
/*
* 2.4 无线通信配置程序
*/
#include "radio_config.h"
#include "nrf_delay.h"
#define PACKET0_S1_SIZE (0UL) // 无符号长整型 0
#define PACKET0_S0_SIZE (0UL) //
#define PACKET0_PAYLOAD_SIZE (0UL) //包0负载大小
#define PACKET1_BASE_ADDRESS_LENGTH (4UL) //基地址长度
#define PACKET1_STATIC_LENGTH (1UL) //静态存储长度
#define PACKET1_PAYLOAD_SIZE (1UL) //包1负载大小
void radio_configure()
{
// Radio config
//(Pos 是有效位,每一个寄存器都是32位,但是用到的只有几个,其余都是保留位,所以要移位)
/*发送功率
RADIO_TXPOWER_TXPOWER_Pos4dBm
RADIO_TXPOWER_TXPOWER_0dBm
RADIO_TXPOWER_TXPOWER_Neg4dBm
RADIO_TXPOWER_TXPOWER_Neg8dBm
RADIO_TXPOWER_TXPOWER_Neg12dBm
RADIO_TXPOWER_TXPOWER_Neg16dBm
RADIO_TXPOWER_TXPOWER_Neg20dBm
RADIO_TXPOWER_TXPOWER_Neg30dBm
*/
NRF_RADIO->TXPOWER = (RADIO_TXPOWER_TXPOWER_0dBm << RADIO_TXPOWER_TXPOWER_Pos);
//RF 频率 = 2400+ A(MHz) ,A最大83,因为ISM 给的频率最大就是2.4835GHz
NRF_RADIO->FREQUENCY = 7UL; // Frequency bin 7, 2407MHz
/*
* 发送速率设定,有四种
*RADIO_MODE_MODE_Nrf_1Mbit
RADIO_MODE_MODE_Nrf_2Mbit
RADIO_MODE_MODE_Nrf_250Kbit
RADIO_MODE_MODE_Ble_1Mbit
*/
NRF_RADIO->MODE = (RADIO_MODE_MODE_Nrf_2Mbit << RADIO_MODE_MODE_Pos);
// R
// 数据包配置
NRF_RADIO->PCNF0 = (PACKET0_S1_SIZE << RADIO_PCNF0_S1LEN_Pos) |
(PACKET0_S0_SIZE << RADIO_PCNF0_S0LEN_Pos) |
(PACKET0_PAYLOAD_SIZE << RADIO_PCNF0_LFLEN_Pos);
// 数据包配置
/*
* 不对信号美白
最大有效位在前
静态长度为1,比设定而多发送标签: it
rf
in
ad
博客大赛
a
|
|