网站大量收购独家精品文档,联系QQ:2885784924

关于NRF24l01调试.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NRF24l01的调试过程与方法小结心得体会:最近老板给了几块nrf24l01模块我,初次上手难免走了许多的弯路,经过近一周的时间的不断调试,模块之间终于可以相互收发数据了。这样下来终于松了一口气。其间的各种辛苦与艰辛难于言表。上网大致看了一下,网上基于51的调试比较多,但是我们实验室用的是DSP2812,由于nrf24l01是SPI接口,2812上刚好有SPI的接口,这样貌似给使用带来了方便,但是51之类的芯片虽然没有SPI口,但是例程也最多,关于他的讨论比较多。最开始我的想法也比较混乱,想直接用SPI来调试,把底层函数稍微修改了一下,发现并没有结果,这个东西就像一个黑匣子一样,即看不见也摸不着,后来我慢慢改变了思路。既然网上基于IO口模拟的SPI的例程最多,我决定另外走一条路,先用2812的IO口模拟SPI再用自带的SPI口去调试。这样一来我就有了两条可以走的路。第一条:底层SPI时序用IO口模拟去写。第二条:底层直接用2812的SPI去操作。虽然这样一来,路好走了一点,有各类的程序可以参考,但是这样带来最大的一个问题,这也是后来我才发现的,nrf24l01的最大读写速率是有限制的,2812在150M运行时很显然是太大了一点,由于nrf24l01对时序的要求很高,端口的读写速率和时序都有严格的要求,所以我们才看到,在网上一般是15M左右的单片机来模拟IO口,没有谁用150M的DSP来模拟IO口的,当然既然确定了这样的方法后来也发现了问题,我还是继续走下去了。很重要的一点是系统的时钟频率。当然时序的要求也很高,这也就是为什么,网上说这个模块不好调试的原因,既然是调试,当然我们既然是调试,肯定有一个思路和方法。那么方法是什么呢?开始的时候我是一股脑将发送和接收的程序都写进去,然后啥现象也没有,然后就傻眼了。在网上看了看,于是有了一点思路。方法是将发送和接收的调试分开来调试,以读取nrf24l01内部的寄存器为手段,先调试发送方,发送方调试没有问题以后,让发送方不断的发送数据,然后再来调试接收方,直到接收方也没有问题,再接着望下面去做。秉着这样的一个想法,我开始了调试。这里我只对一对一的调试进行说明,后续的一对多,以及调频之类虽然我有了想法,但是还没有开始实施。在开始调试之前建议将NRF24l01说明书读个三遍。模块的外部端口XL24LD01 是采用挪威N O R D I C 公司的n r f 2 4 L 0 1 2.4G 无线收发IC 设计的一款高性能2.4G无线收发模块,采用GFSK 调制,工作在2400‐2483M 的国际通用ISM 频段,最高调制速率可达2MBPS。 XL24L01-D01 集成了所有与 RF 协议相关的高速信号处理部分,如:自动重发丢失数据包和自动产生应答信号等,模块的 SPI 接口可以利用单片机的硬件 SPI 口连接或用单片机的 I/O 口进行模拟,内部有 FIFO 可以与各种高低速微处理器接口,便于使用低成本单片机。在连线的时候要特别注意电源线不要弄反过来了,要注意电源的最大值不能超过3.6V,这个电压直接影响了模块的端口的输出电压值,由于我们的DSP端口的高电平在3.3V,一般将电压设置在这个附近左右。只有在硬件没有问题的基础上才能开始调试软件,否者会出现很多的问题。还有一个,工作模式的问题,要注意在待机和掉电的模式下才能够进行寄存器的写操作。模块内部的寄存器在调试中对寄存器的读取操作是一个非常有效的验证方法。对芯片资料中给出的23个寄存器内容请看手册。对应的寄存器在头文件里面。用IO口模拟SPI的方法头文件如下:#ifndef _NRF24L01_H_#define _NRF24L01_H_#define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)// DO NOT MODIFY THIS LINE.#define DELAY_US(A) DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)//这个函数是在150M下的us级延时函数/*******************************************************/#define TX_ADDR_WITDH 5//发送地址宽度设置为5个字节#define RX_ADDR_WITDH 5//接收地址宽度设置为5个字节#define TX_DATA_WITDH 1//发送数据宽度1个字节#define RX_DATA_WITDH 1//接收数据宽度1个字节/*******************命令寄存器*******

您可能关注的文档

文档评论(0)

00625 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档