0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

h1654155282.3538 来源:网络整理 2018-04-12 10:07 次阅读

stm32f103zet6简介

STM32F系列属于中低端的32位ARM微控制器,该系列芯片意法半导体(ST)公司出品,其内核是Cortex-M3。

该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。

芯片集成定时器CANADC,SPI,I2CUSBUART,等多种功能。

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无线模块的学习

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • nRF905
    +关注

    关注

    2

    文章

    89

    浏览量

    52395
  • STM32F103ZET6
    +关注

    关注

    9

    文章

    67

    浏览量

    21121
收藏 人收藏

    评论

    相关推荐

    [3.2.1]--STM32F103ZET6的时钟结构

    时钟STM32F103ZET6
    李开鸿
    发布于 :2022年11月12日 03:15:07

    基于STM32F103ZET6无线语音控制小车设计

    基于STM32F103ZET6无线语音控制小车设计与实现基于STM32F103ZET6无线语音控制小车设计与实现摘要:本文以STM32F103ZET
    发表于 08-23 08:22

    如何学习STM32F103ZET6

    如何学习STM32F103ZET6
    发表于 10-13 07:57

    STM32F103ZET6蜂鸣器实验

    STM32F103ZET6蜂鸣器实验文章目录STM32F103ZET6蜂鸣器实验前言一、原理图二、程序源码1.beep.h2.beep.c3.main.c三、实验结果总结前言对于
    发表于 01-05 07:46

    STM32F103ZET6按键输入实验

    STM32F103ZET6按键输入实验文章目录STM32F103ZET6按键输入实验前言一、原理图二、程序源码1.key.h2.key.c3.main.c三、实验结果总结前言对于
    发表于 01-05 06:42

    STM32F103ZET6红牛电路图

    STM32F103ZET6红牛电路图:
    发表于 09-14 15:29 2076次下载
    <b class='flag-5'>STM32F103ZET6</b>红牛电路图

    NRF905工作模式

    NRF905工作模式NRF905工作模式NRF905工作模式NRF905工作模式NRF905工作模式NR
    发表于 11-19 15:24 10次下载

    基于STM32F103ZET6示波器程序

    基于STM32F103ZET6示波器程序 非常好的源代码
    发表于 12-29 17:25 225次下载

    nRF905无线收发模块开发指南

    基于nRF905无线收发模块开发指南,主要介绍模块的功能特点及开发应用
    发表于 03-09 10:59 14次下载

    STM32F103ZET6原理图+PCB文件

    STM32F103ZET6的详细资料,原理图及PCB图。
    发表于 05-10 15:12 0次下载

    STM32F103ZET6数据手册

    STM32F103ZET6、芯片学习资料、资料齐全,全面介绍了STM32F103ZET6芯片,覆盖范围广。
    发表于 05-13 15:39 740次下载

    stm32f103zet6电路图

    stm32f103zet6电路图,有需要的都可以看看。
    发表于 07-20 15:48 66次下载

    stm32学习(二)STM32F103ZET6内部资源讲解

    大家好,今天和大家分享一下STM32F103ZET6的版载资源,希望和大家一起学习,一起进步。当然本人目前是一个对库函数版本的初学者,如果谈论不妥的地方,希望大家能够及时提出,批评指正,本人将不
    发表于 11-05 18:20 30次下载
    <b class='flag-5'>stm32</b><b class='flag-5'>学习</b>(二)<b class='flag-5'>STM32F103ZET6</b>内部资源讲解

    STM32F103ZET6——控制LED灯

    STM32F103ZET6——控制LED灯
    发表于 12-03 21:06 135次下载
    <b class='flag-5'>STM32F103ZET6</b>——控制LED灯

    STM32F103ZET6 IAP超级终端

    STM32F103ZET6 IAP 超级终端资料分享
    发表于 11-21 15:24 10次下载