- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NRF905参程序参考教程包含多个实例和解释
NRF905程序参考教程。
本资料主要是将程序中各部分子程序的功能与NRF905的手册相关联,使得各位同仁在每个子程序为什么这么写都在手册中找到具体的体现,特别是寄存器配置。
内涵完整参考程序,是100%可用程序。
硬件的连接方法在参考程序之后,并介绍原理。
本人最后只是为了提供给大家一个入门的资料或是引子罢了,至于如何应用的巧妙那是后期编程巧妙的结果,目前只是给刚进门的人士一个可以快速理解和掌握的浅显易懂的教程罢了。本人疏忽之处还请见谅。
按照惯例先展示作品抛砖引玉:
四路AD采集+温度采集
彩屏显示信息数据GSM手机电话
最近做的,音频功放四路电机控制大功率led控制,不解释。
以前做的,舵机和摄像头,不解释。
更早先的,VGA显示,不解释。
已发送为例子。
1.通过spi接口把寄存器相应的值写到905中
2.把要发的数据写到905中
3.把状态设置成发送
4.数据被发出
那么操作905就主要是前三步的问题,那么请带个这前三个问题深入理解下面的相关解释了。
无线通信模块的三个要素:
Nrf905模式的配置
Nrf905通过寄存器配置
Nrf905需要spi通信配置寄存器
先看模式配置:程序加解释
PWR_UP TRX_CE TX_EN 操作模式 0 X X 断电和SPI编程 1 0 X 待机和SPI编程 1 1 0 射频接收模式 1 1 1 射频发送模式 根据这个图表,我们发觉有四种模式。捡重点的说实现收发功能有两种模式。
这两种模式在程序段中的实现是:
设置成接受模式,程序中没写PWR_UP,如果他是低电平就变成断电,所以个程序段默认PWR_UP为高电平。
void SetRxMode(void)
{
TXEN=0;
TRX_CE=1;
Delay(1); // delay for mode change(=650us)
}
设置发送模式,这里会有疑问,在于 TRX_CE=0;。这里给出的解释是,如果我们直接写 TRX_CE=1;这样模块立即将其内部所写好的数据发送出去。
而对于编程的人员来说编出的程序五花八门,就比如说这条,改程序员的意图并不想让设置发送模式时,数据就被立即发出,所以写了 TRX_CE=0;。如果看后面的完整程序,你会发现在发送时,有 TRX_CE=1;这一步。所以说,刚才那个图表没有问题。这里可以认为是准备发送模式,而不是发送模式,一旦 TRX_CE=1;那么数据立即被发送。
void SetTxMode(void)
{
TRX_CE=0;
TXEN=1;
Delay(1); // delay for mode change(=650us)
}
关于图表中前两种模式中,实例程序所应用的是第二种,即待机spi编程模式。不管应用两种的哪一种,都是为了spi编程(通过spi通信配置905寄存器)。
那么给出这个模式的应用程序段:
有这么做引脚赋予各种电平先不用管他,我们看到 PWR=1;TRX_CE=0;TXEN=0;这三个,在待机spi模式中TXEN=x;即可以为任何值。说明现在是待机且spi编程模式。
程序段中其他引脚功能罗列下:
Csn:spi的有效与否的引脚,低电平有效。如果只是单纯的设置模式,该引脚并没用处,只是后期程序的编写,所以做下配置。
Sck:spi的时钟,现在只是设置模式,还没开始spi通信,所以付个低电平。
DR:数据是否准备好,现在没有什么可准备的。
AD,CD也是一样,等到spi通信的时候才需关系。这里做个引子吧。
void nRF905Init(void)
{
CSN=1; // Spi disable
SCK=0; // Spi clock line init low
DR=0; // Init DR for input
AM=0; // Init AM for input
CD=0; // Init CD for input
PWR=1; // nRF905 power on
TRX_CE=0; // Set nRF905 in standby mode
TXEN=0; // set radio in Rx mode
}
Nrf905寄存器的配置
配置905寄存器的意思是,通过spi传输一个值,放入905的寄存器中,这个值可以让905传输数据时,产生各种你想要的效果,类似于你用手调节耳机音量,你的手就相当于配置耳机的寄存器。
那么我先给出主要需配置的寄存器然后再解释.
如
原创力文档


文档评论(0)