nrf24le1 无线唤醒数据怎么存储

基于nRF24LE1芯片的一对多无线数据传输的实现_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于nRF24LE1芯片的一对多无线数据传输的实现
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢NRF24LE1内部FLASH读写操作C语言程序
NRF24LE1内部FLASH读写操作C语言程序
NRF24LE1内部FLASH读写操作C语言程序
主题帖子积分
功能:Flash存储器是掉电非易失性存储器,分为程序存储器(PM)和数据存储器(NVM)两部分。写入Flash存储器要先擦除后写入,本程序说明如何读写Flash存储器。
说明:先读出NVM的5个地址的单元内容,然后改写这5个单元,最后再次读出改写后的单元内容。
[C] 纯文本查看 复制代码001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145#include &Nordic\reg24le1.h&#include &stdint.h&#include &absacc.h&//定义按键sbit S3 = P0^7;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=未按/按下sbit S2& = P0^6;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=未按/按下sbit S1& = P0^5;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=未按/按下//定义显示灯sbit LED3 = P0^2;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=灭/亮sbit LED2 = P0^1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=灭/亮sbit LED1 = P0^0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 1/0=灭/亮//定义I/O口方向#define p0dir0xf0// P0.0-P0.2为输出,P0.5-P0.7为输入,#define p1dir0x02// P1.0(TXD)输出,P1.1(RXD)为输入,uint8_t data_buf[10] = {0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A};/**************************************************功能:延时子程序说明:用户可随意设定**************************************************/void delay(uint16_t x){&&&uint16_t i,j;&&&for(i=0;i&x;i++)&&&{&&&&&&j=108;&&&&&&while(j--);&&&}}/**************************************************功能:串口初始化子程序说明:波特率19.2K,使用内部波特率发生器**************************************************/void uart_init(void){&&&ES0 = 0;&&&&&&&&&&&&&&&&&&&&& // 关UART0中断&&&REN0 = 1;&&&&&&&&&&&&&&&&&&&& // 允许接收&&&SM0 = 0;&&&&&&&&&&&&&&&&&&&&& // 串口模式1,8bit可变波特率&&&SM1 = 1;&&&&&&&&&&&&&&&&& &&&PCON |= 0x80;&&&&&&&&&&&&&&&& // SMOD = 1&&&WDCON |= 0x80;&&&&&&&&&&&&&&& // 选择内部波特率发生器&&&S0RELL = 0xe6;&&&&&&&&&&&&&&& // 波特率19.2K(十进制998=十六进制0x03e6)&&&S0RELH = 0x03;&&&TI0 = 0;& // 清发送完成标志S0BUF=0x99;& // 送初值}/**************************************************功能:串口数据发送子程序**************************************************/void uart_putchar(uint8_t x){while (!TI0);// 等待发送完成TI0=0;// 清发送完成标志S0BUF=x;// 发送数据}/**************************************************功能:NVM多字节擦除/写入子程序说明:先擦除所在页,然后写入数据**************************************************/void hal_flash_bytes_write(uint16_t a, uint8_t *p, uint16_t n){&uint8_t xdata *&if ((a&=0xfa00)&&(a&=0xffff))&& // NVM地址区为0xFA00至0xFFFF&{&&& &F0 = EA;&EA = 0;// 关中断&WEN = 1;// 允许写入&if((a&=0xfa00)&&(a&0xfc00))// 地址在NVM加长寿命区{FCR = 32;// 必须擦除整页(512byte)!&while(RDYN == 1);FCR = 33;&while(RDYN == 1);}&if((a&=0xfc00)&&(a&0xfe00))// 地址在NVM普通寿命区{FCR = 34;// 擦除整页&while(RDYN == 1);}&if((a&=0xfe00)&&(a&=0xffff))// 地址在NVM普通寿命区{FCR = 35;// 擦除整页&while(RDYN == 1);}delay(1000);uart_putchar(XBYTE[a+0]);// 擦除完成,读出正确应全为“0xFF”uart_putchar(XBYTE[a+1]);uart_putchar(XBYTE[a+2]);uart_putchar(XBYTE[a+3]);uart_putchar(XBYTE[a+4]);&pb = (uint8_t xdata *)a;&while(n--)& // 连续写入数据&{&&&*pb++ = *p++;&&&while(RDYN == 1);&&&}& &WEN = 0;// 写完,禁止写&EA = F0; // 恢复中断&}}/**************************************************功能:主程序说明:按下S2键,执行擦除/写入程序,串口显示擦除前和写入后的单元内容**************************************************/void main(void){uint16_P0DIR = p0&& // 设定I/O口输入输出P1DIR = p1LED1=LED2=LED3=0;// 灯全亮delay(1000);LED1=LED2=LED3=1;// 灯全灭&&&&&&&&&&&&&&&&& uart_init();&&&&&&&&&&&&&&&&&&&&&&&&&& // 串口初始化addr=0xfb80; // 设定地址在NVMwhile(1){if (!S2){LED2=0;uart_putchar(XBYTE[addr+0]);&& // 读原来的NVM内容uart_putchar(XBYTE[addr+1]);uart_putchar(XBYTE[addr+2]);uart_putchar(XBYTE[addr+3]);uart_putchar(XBYTE[addr+4]);hal_flash_bytes_write(addr,data_buf,5);// 改写5个单元uart_putchar(XBYTE[addr+0]);// 读改写后的内容uart_putchar(XBYTE[addr+1]);uart_putchar(XBYTE[addr+2]);uart_putchar(XBYTE[addr+3]);uart_putchar(XBYTE[addr+4]);// 正确为“0x81,0x82...0x85”delay(5000);while (!S2);LED2=1;}}}
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&  nRF51可以支持基于2.4G的互相通信、与NRF24LE1的通信、与NRF24LU1的通信、与NRF24L01的通信。
一、nRF51822基于2.4G和nRF51822通信
  其中nRF51互相通信和之前用51操作nRF24L01很像,涉及到的只有几个核心的函数:
nrf_esb_init---初始化ESB
nrf_esb_enable---使能ESB
nrf_esb_add_packet_to_tx_fifo---将数据送入发送队列
  如果想知道发送是否成功等状态可以用:
void nrf_esb_tx_success(uint32_t tx_pipe, int32_t rssi)// If an ACK was received, we send another packet.
void nrf_esb_tx_failed(uint32_t tx_pipe)
void nrf_esb_rx_data_ready(uint32_t rx_pipe, int32_t rssi)
void nrf_esb_disabled(void)
  整个架构比较简单:
二、NRF51822和NRF24LE1/NRF24LU1/NRF24L01通信
  其中nrf51和其他三种类型的2.4G模块通信类似,比其自身通信稍微复杂,其配置流程如下:
bool nrf_esb_set_enabled_prx_pipes(uint32_t pipes)
用于使能接收通道,第0位对应通道1,依次类推,可同时使能多个通道
bool nrf_esb_set_crc_length (nrf_esb_crc_length_t length)
设置CRC校验,务必使发送方和接收方一致
bool nrf_esb_set_output_power(nrf_esb_output_power_t power)
设置发送功率,可选功率从4~-20,4为步数
bool nrf_esb_set_channel (uint32_t channel )
设置无线通讯频率。无线频率=(2400 + channel) MHz,0 &= channel &= 125。
bool nrf_esb_set_datarate(nrf_esb_datarate_t datarate)
设置通信速率:可选250Kbps,1M,2M
NRFG 通讯比较麻烦的就是地址设置,和NRF24LXX 系列的无线芯片的地址有所不同,NRFG 通讯地址是由两部分组成,配置地址时需要设置BASEn 和PREFIXn 寄存器,同时要指定BASEn 中地址长度。另外,NRF51822 的地址每个字节内的位必须首位对调才能和NRF24LXX 系列的一致。
NRF24LE1 端地址设置:
uint8_t TX_ADDRESS[5] = {0xE5,0xE4,0xE3,0xE2,0xE1}; //地址定义
hal_nrf_set_address(HAL_NRF_TX,TX_ADDRESS); //设置NRF24LE1 发射地址
NRF51822 端地址设置:
(void)nrf_esb_set_address_prefix_byte(0,0xE5);
(void)nrf_esb_set_base_address_0(0xE1E2E3E4);
(void)nrf_esb_set_base_address_length(NRF_ESB_BASE_ADDRESS_LENGTH_4B);
void nrf_esb_enable_dyn_ack (void )
使能动态数据长度
&ESB:Enhanced ShockBurst,增强型突发模式。
Enhanced ShockBurstTM 模式比ShockBurst 模式多了一个确认数据传输的信号,保证数据传输的可靠性。EnhancedShockBurst 收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:
尽量节能。
低的系统费用(低速微处理器也能进行高速射频发射)。
数据在空中停留时间短,降低了碰撞几率,提供了抗干扰性能。
后记:nRF51822运行在传统2.4G模式下可以和之前的一些2.4G模块兼容,从而做出更个性化的通信网络。但更多的时候nRF51822用在BLE领域,比如bong手环、百度手环等一些设备上。但是其运行在BLE模式下需要搭载BLE协议栈,其复杂程度要比跑在经典2.4G模式下发杂得多。
@nRF51822基础实验系列:
@beautifulzzzz&-&物联网&普适计算实践者e-mail:&i-blog:&
阅读(...) 评论()君,已阅读到文档的结尾了呢~~
基于nRF24LE1的无线数据传输系统实现,无线数据传输系统,无线图像传输系统,无线应急传输系统,无线数据采集系统,数据传输系统,无线数据传输,gprs无线数据传输,数据传输系统分为,无线局域网数据传输,数据无线传输模块
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于nRF24LE1的无线数据传输系统实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 nrf24le1e 的文章

 

随机推荐