一.我用的是NRF51的板子,兼容51822和51422外带了Debugin和Debugout烧录

二.我是用的芯片手册是51822。所以下面就来说说我是用的51822无线的应用

1.NRF51822简介

CPU: 32-bit ARM® Cortex™ M0 32-bit CPU
Memery:256/128 KB embedded flash、 16 KB RAM
System Peripherals:
一个32位定时器,两个16位定时器。(注:nRF51定时器的位数可以通过寄存器设置的,可变的)
16通道的CPU独立编程外设互联(PPI)
(翻译太渣,献原句:16 channel CPU independent Programmable Peripheral Interconnect (PPI))
128位AES ECB/CCM/AAR加密协处理器
RNG:随机数发生器
两个RTC时钟,RTC0,RTC1
温度传感器
GPIO:
31个GPIO引脚
支持多达4路PWM输出
Digital I/O:
SPI Master/Slave, 2-wire Master (I2C compatible), UART (CTS/RTS)
正交解码器(Quadrature decoder)
Analog I/O:
8/9/10 bit ADC - 8 configurable channels
Low power comparator
Power Management:
支持1.8V到3.6V宽电压
在芯片DC/DC转换
0.6 µA @ 3V OFF mode
1.2 µA @ 3V OFF mode + 1 region RAM retention
2.6 µA @ 3V ON mode, all blocks in idle mode
其他:
MPU

2.烧写工具及环境搭建

环境我用的是NRF51——SDK和KEIL(版本是4.72)这些资源在官网上都有,关键是环境要安装成功,我就遇见安装环境时,下一步界面直接跳到flish这个界面,最后的解决办法是安装微软的.NET framework 2.0这个环境。才能安装成功,还有安装J-LINK之类的官网的用户手册都有

3.芯片手册
大概说一下,我只是看了下WTD,GPIO,RADIO,ADC,UART,后面的如果有研究在更

4.WDT详情见芯片手册
代码:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

ifndef __WDT__H

define __WDT__H

void wdt_start(void);
void wdt_stop(void);
void wdt_feed(void);
void wdt_init(void);

endif

include “nrf51.h”

include “nrf51_bitfields.h”

define RELOAD_COUNT (32768*60*3-1) //3 minutes

void wdt_init(void)
{
NRF_WDT->TASKS_START = 0;
NRF_WDT->CRV = RELOAD_COUNT;
NRF_WDT->CONFIG =
WDT_CONFIG_HALT_Pause << WDT_CONFIG_HALT_Pos |
WDT_CONFIG_SLEEP_Pause << WDT_CONFIG_SLEEP_Pos;
NRF_WDT->RREN = WDT_RREN_RR0_Enabled << WDT_RREN_RR0_Pos;
}

void wdt_start(void)
{
NRF_WDT->TASKS_START = 1;
}

void wdt_feed(void)
{
if(NRF_WDT->RUNSTATUS & WDT_RUNSTATUS_RUNSTATUS_Msk)
NRF_WDT->RR[0] = WDT_RR_RR_Reload;
}

void wdt_stop(void)
{
NRF_WDT->TASKS_START = 0;
}

上面 我们 设置看看门狗
1.溢出时间为3s
2.debuger仿真的时候看门狗停止
3.CPU睡眠的时候看门狗停止
注意:1.看门狗只要一启动就不能关闭了。不同通过wdt_stop()来关闭
2.如果在app启动了定时器。那在空中升级的程序也必须喂狗。
在main.c中
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
wdt_start();
// Enter main loop
for (;;) {
app_sched_execute();

wdt_feed();
;/strong> power_manage();
}

3.GPIO见手册

4.RADIO代码
协议:图片复制不上来自己看手册
代码
void TxData(void)
{

    id_buf[0] = 0x57;   id_buf[1] = 0;id_buf[2] = 0;          id_buf[3] = 0;id_buf[4] = 0;id_buf[5] = 0;  id_buf[6] = cur;id_buf[7] = 'B';id_buf[8] = 0xaa;

}

void system_init (void)
{
clock_init();
lfclk_config();
}

void radio_disable(void)

{

NRF_RADIO -> TASKS_STOP = 1;
NRF_RADIO -> TASKS_TXEN = 0;
NRF_RADIO -> TASKS_RXEN = 0;
NRF_RADIO -> TASKS_STOP = 1;
NRF_RADIO -> TASKS_DISABLE = 1;
NRF_RADIO -> POWER = 0;

}

void Radio_Set_RX(void )
{
nrf_gpio_pin_write(Txpoweren,0);
nrf_gpio_pin_write(Rxpoweren,1);
NVIC_DisableIRQ(RADIO_IRQn);
radio_disable();
#ifdef F250K
radio_configureM(TxAdderss,RxAdderss,RADIO_MODE_MODE_Nrf_250Kbit,RADIO_TXPOWER_TXPOWER_Pos4dBm,Fren,RX_MODE);
#else
radio_configureM(TxAdderss,RxAdderss,RADIO_MODE_MODE_Nrf_1Mbit,RADIO_TXPOWER_TXPOWER_Pos4dBm,Fren,RX_MODE);
#endif
NVIC_EnableIRQ(RADIO_IRQn);
__enable_irq();
//set Priority of IRQ
NVIC_SetPriority(RADIO_IRQn,6);
NVIC_EnableIRQ(RADIO_IRQn);

//NRF_RADIO->PACKETPTR  = (uint32_t)buf;// set receive finish interrupt
NRF_RADIO->INTENSET = RADIO_INTENSET_END_Enabled << RADIO_INTENSET_END_Pos;
NRF_RADIO->EVENTS_READY = 0U;
NRF_RADIO->TASKS_RXEN   = 1U; // Enable radio.
while(NRF_RADIO->EVENTS_READY == 0U) // Wait for an event to be ready.
{// Do nothing.
}
NRF_RADIO->EVENTS_END  = 0U;
NRF_RADIO->TASKS_START = 1U; // Start listening and wait for address received event.//temp++;
//     radio_rx_mode(buf,cnt_num);

}

void Radio_Set_TX(uint8_t pwr)
{
//uint8_t temp=0xff;
//uint32_t tempcount=0;
unsigned char datapwr;
switch(pwr)
{
case 8:
datapwr=RADIO_TXPOWER_TXPOWER_Pos4dBm;
break;
case 7:
datapwr=RADIO_TXPOWER_TXPOWER_0dBm;
break;
case 6:
datapwr=RADIO_TXPOWER_TXPOWER_Neg4dBm;
break;
case 5:
datapwr=RADIO_TXPOWER_TXPOWER_Neg8dBm;
break;
case 4:
datapwr=RADIO_TXPOWER_TXPOWER_Neg12dBm;
break;
case 3:
datapwr=RADIO_TXPOWER_TXPOWER_Neg16dBm;
break;
case 2:
datapwr=RADIO_TXPOWER_TXPOWER_Neg20dBm;
case 1:
datapwr=RADIO_TXPOWER_TXPOWER_Neg30dBm;
default:
datapwr=RADIO_TXPOWER_TXPOWER_Pos4dBm;
break;
}
nrf_gpio_pin_write(Txpoweren,1);
nrf_gpio_pin_write(Rxpoweren,0);
NVIC_DisableIRQ(RADIO_IRQn);
radio_disable();
//radio_configure();
RadioMode.TxAdderss_S = TxAdderss;
RadioMode.RxAddersses = RxAdderss;
#ifdef F250K
RadioMode.DataSize = RADIO_MODE_MODE_Nrf_250Kbit;
#else
RadioMode.DataSize = RADIO_MODE_MODE_Nrf_1Mbit;
#endif
RadioMode.TxPower = datapwr; //RADIO_TXPOWER_TXPOWER_Pos4dBm;
RadioMode.Frequen = Fren;
RadioMode.Mode = TX_MODE;
radio_configure_M(&RadioMode);
NVIC_EnableIRQ(RADIO_IRQn);
__enable_irq();
NVIC_SetPriority(RADIO_IRQn,6); //set Priority of IRQ
NVIC_EnableIRQ(RADIO_IRQn);

//NRF_RADIO->PACKETPTR  = (uint32_t)buf;// set receive finish interrupt
//NRF_RADIO->INTENSET = RADIO_INTENSET_END_Enabled << RADIO_INTENSET_END_Pos;

}

void radio_rx_receive(uint8_t* buf)
{
//int datatemp;
//ErrorRecFlag=0;
NRF_RADIO->PACKETPTR = (uint32_t)buf;
NRF_RADIO->EVENTS_END = 0U;
NRF_RADIO->TASKS_START = 1U; // Start listening and wait for address received event.
Rx_flag=0;
// Wait for the end of the packet.
/*while(NRF_RADIO->EVENTS_END == 0U)
{
// Do nothing.
datatemp++;
if(datatemp>0x7fff11ff)
{
ErrorRecFlag=1;
return;
}
}*/
}

NRF51822 2.4G无线相关推荐

  1. 《高级无线网络—4G技术》——1.3 混合4G无线网络协议

    本节书摘来自异步社区<高级无线网络-4G技术>一书中的第1章,第1.3节,作者: [芬]Savo G. Glisic 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  2. 7620a路由mysql_MT7620A路由刷DDWRT 及2.4G无线设置经验

    本帖最后由 overthink 于 2015-6-15 15:10 编辑 MT7620A路由刷DDWRT 及2.4G无线设置经验 用了N久的buffalo WHR-HP-G54,刷了DDWRT,以前做 ...

  3. 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验

    不愧是你,RK.那个把性价比这一块拿捏得死死的.先前,才刚推出300出头的RK84三模无线机械键盘,具备2.4G.蓝牙.有线三种连接方式,还是搭载使用CHERRY MX轴体,可以说,这价位84键机械键 ...

  4. 2.4G无线音频双向传输技术运用

    2.4G无线音频双向传输技术运用 1.产品描述 A8810S1 是一对远距离的 2.4G 无线音频传输模组.模组专业的 RF 电路设计配合独有的软件跳频机制,有效提高了 RF 的抗干扰能力及传输距离. ...

  5. 2.4gwifi最高下载速度_宽带200m,光猫和无线一体的猫,5g和2.4g无线下速度多少是正常?...

    宽带200m,光猫和无线一体的猫,5g和2.4g无线下速度多少是正常? 200M宽带下载5G wifi下载手机最大可以跑到200Mbps,而2.4G wifi下手机最大可以跑到72.2Mbps,所以, ...

  6. 2.4G无线技术参数及行业分享

    谈到2.4G很多人第一印象是Bluetooth.zigbee等目前主流的通信技术,殊不知除了这些还有另外一种适合工业.消费类,2.4G通讯技术频谱同样落在ISM频段内,其频率是2400MHZ-2525 ...

  7. 2.4G无线麦克风无线音频传输模块

    模块概述 M01主要是一个2.4G无线音频传输模块,模组RF电路设计配合独有的软件跳频机制,有效提高了RF的抗干扰能力及传输距离.模组内置高性能的音频转换器,支持48K/24bit高品质的音频采样.支 ...

  8. 2.4G无线芯片NRF24L01 驱动源码及详解

    概述 NRF24L01/NRF24L01+ 是挪威NordicVLSI公司出品的2.4G射频收发器件,主打高速率,低功耗,应用简单功能.其性能卓越(我说的原厂真货),深受国内开发者欢迎.原厂芯片价格一 ...

  9. 4G无线模块 电力通信模块

    4G无线模块TD210,标准通讯接口及协议,电力规约.环保212.MODBUS-RTU协议等,通过串口的形式采集各种电力参数,电压,电流,有功功率,无功功率,有功电度,无功电度,频率,功率因数,开关量 ...

最新文章

  1. Java实用教程笔记 Java多线程机制
  2. Atheros无线网卡芯片全介绍
  3. [渝粤教育] 西南科技大学 复习资料 法理学
  4. 代码注释(图案:小狗)
  5. python计算AA制时砍价后大家需要分摊的钱
  6. vue 组件传值$attrs $listeners $bus provide/inject $parent/$children
  7. Windows10 中在指定目录下启动Powershell
  8. English trip V2 - 9 People and Places Teacher:Julia Key: at on in
  9. DXBC2HLSL Tool
  10. 远程安全接入解决方案
  11. 仅以此纪念我一波三十折的2022保研路--上岸华科网安直博
  12. Nebula Exchange 从Hive导入 NoSuchMethodError
  13. python tkinter 文本框全选_Python Tkinter Entry(文本框)
  14. 打造数字孪生社区,极视角助力成都市成华区杉板桥社区智能感知体系建设
  15. Latent Variables的理解
  16. 播放失败,请在设置中切换输出设备
  17. 朗润国际期货:元旦各地金融市场休市情况
  18. 把html转化为thymeleaf,Springboot和Thymeleaf HTML模板:转换为PDF后,汉字消失
  19. 【C4D基础】导入图片、选择工具、线性切割、显示与渲染、旋转
  20. 微信小程序 使用.wxs在.wxml中分割字符串渲染多条数据

热门文章

  1. MapX 简介 (转)
  2. grafana graphite statsd搭建安装部署 实时监控_亲测成功
  3. Android MediaPlayer本地视频播放器
  4. 如何查看本机的ip地址和端口号
  5. Rosalind全排列的问题
  6. explicit关键字的作用
  7. 亚马逊云科技北京区域第二个EC2可用区帮助客户构建高可用架构
  8. chromosome-territories:染色质疆域简介
  9. 遥感影像的几何校正介绍
  10. 可视化随笔 阶梯图