《基于stm32f103zet6之NRF905无线模块的学习.doc》由会员分享,可在线阅读,更多相关《基于stm32f103zet6之NRF905无线模块的学习.doc(4页珍藏版)》请在三一文库上搜索。
1、基于stm32f103zet6之NRF905无线模块的学习stm32f103zet6简介STM32F系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。NRF905简介nRF905是挪威Nordic公司推出的一款单片射频发射器芯片,采用32引脚5mm5mm QFN封装,工作于433、868、915MHz 3个ISM(工业、科学
2、和医学)频道,其中国内433频段可以免费使用。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器、调制器等功能组成,不需要外加声表滤波器也可以有良好的通信效果。nRF905使用SPI接口可以和任何MCU进行通信,其中地址、输出功率和通信频道可通过程序进行配置,所以可以用于多机通信。nRF905融合了ShockBurstTM技术,可以自动处理数据包字头,且内置CRC校验功能,确保数据可靠传输。nRF905功耗很低,在以-10dBm的功率发射时,工作电流也只有11mA;而对应接收机的工作电流只有12.5 mA,芯片可以软件设置空闲模式、关机模式,易于节能设计。适合工业数据采集、无线报警及
3、安全系统等诸多领用。 基于stm32f103zet6之NRF905无线模块的学习一、硬件nrf905这个芯片小编们就不谈了,涉及到高频、射频是比较复杂,主要针对如何使用这个模块谈一谈这是涉及到小编们编程的引脚图, 其中uclk在这里不用,下面请看管脚图总结一下这个管脚表的比较重要的信息如下:1、nrf905和单片机通信使用的是SPI协议,小编这里用的是软件模拟spi,硬件spi有其他用途2、电源3.3V没有问题,IO口电压完全兼容匹配,输出电流也是没有问题的3、CD是载波检测信号,意思是当小编们的模块作为接收的时候,一旦它接收到发射模块同一个频段的信号时,该引脚会被nrf905置高,平常为低!
4、4、AM是地址匹配的意思,当作为接收模块的时候,当接收地址和发射地址匹配的时候,那么该引脚会被nrf905置高,平常为低!5、DR表示数据接收或者发送成功!当一个正确的数据包接收完毕, RF905自动移去字校验位,然后把DR引脚置高,平常为低!注意了:CD、AM、DR3个引脚的状态在小编们调试的时候是非常重要的,所以充分利用这几个引脚的功能!硬件方面需要注意的地方小编们已经说完了,接下来分析小编的程序!二、软件首先是发送流程:1、当微控制器有数据要发送时,通过SPI协议将地址和要发送的数据送传给RF905,SPI接口的速率在通信协议和器件配置时确定;2、微控制器置高TRX_CE和TX_EN,这
5、就设置为了发送数据模式3、RF905发送流程:(1) 射频寄存器自动开启;(2) 数据打包(加字头和CRC校验(3) 发送数据包;(4) 当数据发送完成,(1)(2)俩步自动完成!4、AUTO_RETRAN被置高,RF905不断重发,直到TRX_5、当TRX_CE被置低,RF905发送过程完成,自动进入空闲模式。注意:ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,RF905才能接受下一个发送数据包。然后是接收流程:1、当 TRX_CE 为高、TX_EN 为低时,RF905 进入 Sho
6、ckBurstTM 接收模式;2、650us 后,RF905 不断监测,等待接收数据;3、当 RF905 检测到同一 频段的载波时,载波检测引脚被置高;4、当接收到一个相匹配的地址,AM 引脚被置高;5、当一个正确的数据包接收完毕, RF905 自动移去字头、地址和 CRC校验位,然后把 DR 引脚置高6、微控制器把 TRX_CE 置低,nRF905 进入空闲模式;7、 微控制器通过 SPI 口,以一定的速率把数据移到微控制器内;8、 当所有的数据接收完毕,nRF905 把 DR 引脚和 AM 引脚置低;9、nRF905 此时可以进入 ShockBu rstTM 接收模式、ShockBurst
7、TM 发送模式或关机模式。 当正在接收一个数据包时,TRX_CE 或 TX_EN 引脚的状态发生改变,RF905 立即把其工作模式改变,数据包则丢失。需要注意的是:小编们设置接收模式的时候,是需要先把数据写入nrf905模块,然后才使能发送引脚的!接下来就是拿具体的程序来分析了A、首先看小编的主函数,很简单注意这个模式B、然后就是这个配置NRF905的函数,这个可是关键啊,具体数据的选择,最好是能看一下芯片手册,这里小编把代码贴出来其实简单来说给它发的内容就是:这就是根据寄存器的格式含义来的,其实也没有什么好说的,但是小编总是怀疑芯片手册上有些问题,那个应该是433.0MHZC、接下来看小编们是怎么实现发送数据的吧,小编把小编的代码贴出来,然后对着分析就好了。上述的printf函数都是小编加上的打印函数,方便调试的!大家可能好奇之前的模式设置是不是出问题了,心想,当设置为发送的时候应该是两个都选择为高啊,但是这里要告诉你,传输数据的时候,小编是这样理解的,选择模式的时候先将EN失能。然后当小编们通过SPI写入了数据之后才使用这句这样就是为了消除干扰吧,小编是这样想的。D、最后贴上部分驱动函数