基于stm32f103zet6之NRF905无线模块的学习

发布时间:2023-09-19  

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引脚5mm&TImes;5mm QFN封装,工作于433、868、915MHz 3个ISM(工业、科学和医学)频道,其中国内433频段可以免费使用。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器、调制器等功能组成,不需要外加声表滤波器也可以有良好的通信效果。nRF905使用SPI接口可以和任何MCU进行通信,其中地址、输出功率和通信频道可通过程序进行配置,所以可以用于多机通信。

nRF905融合了ShockBurstTM技术,可以自动处理数据包字头,且内置CRC校验功能,确保数据可靠传输。nRF905功耗很低,在以-10dBm的功率发射时,工作电流也只有11mA;而对应接收机的工作电流只有12.5 mA,芯片可以软件设置空闲模式、关机模式,易于节能设计。适合工业数据采集、无线报警及安全系统等诸多领用。

基于stm32f103zet6之NRF905无线模块的学习

基于stm32f103zet6之NRF905无线模块的学习

一、硬件

nrf905这个芯片小编们就不谈了,涉及到高频、射频是比较复杂,主要针对如何使用这个模块谈一谈

基于stm32f103zet6之NRF905无线模块的学习

这是涉及到小编们编程的引脚图, 其中uclk在这里不用,下面请看管脚图

基于stm32f103zet6之NRF905无线模块的学习

总结一下这个管脚表的比较重要的信息如下:

1、nrf905和单片机通信使用的是SPI协议,小编这里用的是软件模拟spi,硬件spi有其他用途

2、电源3.3V没有问题,IO口电压完全兼容匹配,输出电流也是没有问题的

3、CD是载波检测信号,意思是当小编们的模块作为接收的时候,一旦它接收到发射模块同一个频段的信号时,该引脚会被nrf905置高,平常为低!

4、AM是地址匹配的意思,当作为接收模块的时候,当接收地址和发射地址匹配的时候,那么该引脚会被nrf905置高,平常为低!

5、DR表示数据接收或者发送成功!当一个正确的数据包接收完毕, RF905自动移去字校验位,然后把DR引脚置高,平常为低!

注意了:CD、AM、DR3个引脚的状态在小编们调试的时候是非常重要的,所以充分利用这几个引脚的功能!

硬件方面需要注意的地方小编们已经说完了,接下来分析小编的程序!

二、软件

首先是发送流程:

1、当微控制器有数据要发送时,通过SPI协议将地址和要发送的数据送传给RF905,SPI接口的速率在通信协议和器件配置时确定;

2、微控制器置高TRX_CE和TX_EN,这就设置为了发送数据模式

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 进入 ShockBurstTM 接收模式;

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 接收模式、ShockBurstTM 发送模式或关机模式。 当正在接收一个数据包时,TRX_CE 或 TX_EN 引脚的状态发生改变,

RF905 立即把其工作模式改变,数据包则丢失。

需要注意的是:小编们设置接收模式的时候,是需要先把数据写入nrf905模块,然后才使能发送引脚的!!!

接下来就是拿具体的程序来分析了

A、首先看小编的主函数,很简单

基于stm32f103zet6之NRF905无线模块的学习

注意这个模式

B、然后就是这个配置NRF905的函数,这个可是关键啊,具体数据的选择,最好是能看一下芯片手册,这里小编把代码贴出来

基于stm32f103zet6之NRF905无线模块的学习

其实简单来说给它发的内容就是:

基于stm32f103zet6之NRF905无线模块的学习

这就是根据寄存器的格式含义来的,其实也没有什么好说的,但是小编总是怀疑芯片手册上有些问题,那个应该是433.0MHZ

C、接下来看小编们是怎么实现发送数据的吧,小编把小编的代码贴出来,然后对着分析就好了。

基于stm32f103zet6之NRF905无线模块的学习

上述的printf函数都是小编加上的打印函数,方便调试的!

大家可能好奇之前的模式设置是不是出问题了,心想,当设置为发送的时候应该是两个都选择为高啊,但是这里要告诉你,传输数据的时候,小编是这样理解的,选择模式的时候

先将EN失能。然后当小编们通过SPI写入了数据之后才使用这句

基于stm32f103zet6之NRF905无线模块的学习

这样就是为了消除干扰吧,小编是这样想的。

D、最后贴上部分驱动函数

基于stm32f103zet6之NRF905无线模块的学习

基于stm32f103zet6之NRF905无线模块的学习

基于stm32f103zet6之NRF905无线模块的学习

基于stm32f103zet6之NRF905无线模块的学习

基于stm32f103zet6之NRF905无线模块的学习


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>