NRF51822 2.4G无线
一.我用的是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无线相关推荐
- 《高级无线网络—4G技术》——1.3 混合4G无线网络协议
本节书摘来自异步社区<高级无线网络-4G技术>一书中的第1章,第1.3节,作者: [芬]Savo G. Glisic 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 7620a路由mysql_MT7620A路由刷DDWRT 及2.4G无线设置经验
本帖最后由 overthink 于 2015-6-15 15:10 编辑 MT7620A路由刷DDWRT 及2.4G无线设置经验 用了N久的buffalo WHR-HP-G54,刷了DDWRT,以前做 ...
- 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
不愧是你,RK.那个把性价比这一块拿捏得死死的.先前,才刚推出300出头的RK84三模无线机械键盘,具备2.4G.蓝牙.有线三种连接方式,还是搭载使用CHERRY MX轴体,可以说,这价位84键机械键 ...
- 2.4G无线音频双向传输技术运用
2.4G无线音频双向传输技术运用 1.产品描述 A8810S1 是一对远距离的 2.4G 无线音频传输模组.模组专业的 RF 电路设计配合独有的软件跳频机制,有效提高了 RF 的抗干扰能力及传输距离. ...
- 2.4gwifi最高下载速度_宽带200m,光猫和无线一体的猫,5g和2.4g无线下速度多少是正常?...
宽带200m,光猫和无线一体的猫,5g和2.4g无线下速度多少是正常? 200M宽带下载5G wifi下载手机最大可以跑到200Mbps,而2.4G wifi下手机最大可以跑到72.2Mbps,所以, ...
- 2.4G无线技术参数及行业分享
谈到2.4G很多人第一印象是Bluetooth.zigbee等目前主流的通信技术,殊不知除了这些还有另外一种适合工业.消费类,2.4G通讯技术频谱同样落在ISM频段内,其频率是2400MHZ-2525 ...
- 2.4G无线麦克风无线音频传输模块
模块概述 M01主要是一个2.4G无线音频传输模块,模组RF电路设计配合独有的软件跳频机制,有效提高了RF的抗干扰能力及传输距离.模组内置高性能的音频转换器,支持48K/24bit高品质的音频采样.支 ...
- 2.4G无线芯片NRF24L01 驱动源码及详解
概述 NRF24L01/NRF24L01+ 是挪威NordicVLSI公司出品的2.4G射频收发器件,主打高速率,低功耗,应用简单功能.其性能卓越(我说的原厂真货),深受国内开发者欢迎.原厂芯片价格一 ...
- 4G无线模块 电力通信模块
4G无线模块TD210,标准通讯接口及协议,电力规约.环保212.MODBUS-RTU协议等,通过串口的形式采集各种电力参数,电压,电流,有功功率,无功功率,有功电度,无功电度,频率,功率因数,开关量 ...
最新文章
- Java实用教程笔记 Java多线程机制
- Atheros无线网卡芯片全介绍
- [渝粤教育] 西南科技大学 复习资料 法理学
- 代码注释(图案:小狗)
- python计算AA制时砍价后大家需要分摊的钱
- vue 组件传值$attrs $listeners $bus provide/inject $parent/$children
- Windows10 中在指定目录下启动Powershell
- English trip V2 - 9 People and Places Teacher:Julia Key: at on in
- DXBC2HLSL Tool
- 远程安全接入解决方案
- 仅以此纪念我一波三十折的2022保研路--上岸华科网安直博
- Nebula Exchange 从Hive导入 NoSuchMethodError
- python tkinter 文本框全选_Python Tkinter Entry(文本框)
- 打造数字孪生社区,极视角助力成都市成华区杉板桥社区智能感知体系建设
- Latent Variables的理解
- 播放失败,请在设置中切换输出设备
- 朗润国际期货:元旦各地金融市场休市情况
- 把html转化为thymeleaf,Springboot和Thymeleaf HTML模板:转换为PDF后,汉字消失
- 【C4D基础】导入图片、选择工具、线性切割、显示与渲染、旋转
- 微信小程序 使用.wxs在.wxml中分割字符串渲染多条数据