nRF24L01无线通信系统设计(3)

2019-04-09 21:08

化程序、串行外设接口(SPI )的初始化程序、nRF24L01 芯片的初始化程序、矩阵键盘的初始化程序、数码管显示模块的初始化程序等。其中STM32F103单片机的初始化又包括复位和时钟初始化配置、GPIO口初始化配置、中断初始化配置。接下来,本节将详细介绍各部分初始化程序的内容。 3.2.1 RCC时钟初始化配置

初始化配置中首先要进行时钟配置,以保证后续程序的正常运行,STM32中,共有五种时钟源,分别是:

1. HSI 高速内部时钟,频率为8MHz

2. HSE 外部告诉时钟,一般为石英晶振,频率为4-16MHz 3. LSI 低速内部时钟,频率为40KHz

4. LSE 低速外部时钟,一般为外接的低速晶振,频率为32.768KHz 5. PLL 锁相环倍频输出,时钟输入源可为HSI/2、HSE、HSE/2,倍频范围2~16倍,最大频率为72MHz

时钟初始化配置的流程如图3-4所示。

配置AHB时钟 配置PLL为HSE的9倍频 开启PLL 开始 打开HSE时钟

打开要使用的外设时钟 结束

图3-4 RCC时钟初始化流程图

3.2.2 SPI的初始化配置

STM32F103 的串行SPI接口置配置时,设SPI为主,串行时钟在SCK脚产生。配置程序软件及步骤如下:

10

1. 配置nRF24L01的MOSI、MISO输入输出线和SCLK时钟线分别同CPU的SPI对应的外设线相连接,即SPI1与SCK(PA5/ SPI1_SCK)、MISO(PA6/ SPI1_MISO)、MOSI(PA7/ SPI1_MOSI)相连接。

2.通过SPI_CR1寄存器的BR位定义串行时钟波特率分频值为256。

3.选择CPOL和CPHA位,定义数据传输和串行时钟的相位关系,选择了串行时钟的稳态,时钟悬空低电平,数据捕获于第一个时钟沿。 4.设置DRR位来定义为8位。

5.配置SPI_CR1寄存器的LSBFIRST位定义帧格式。

6.如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输器件应把NSS脚连接到高电平;在软件模式中,需设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作在输出模式,则只需设置SSOE位。

7.设置MSTR和SPE位在这个配置中,MOSI脚是数据输出,而MISO脚是数据输入。SPI串行口初始化流程图如3-5所示:

使能SPI 结束 GPIO口配置 设定为双向通信 设定为主模式 设定数据位为8 选择串行时钟的相位CPOL=0和极性CPHA=1 设置串行时钟波特率为256 设置校验位为7 开始 图3-5 SPI串行口初始化流程图

11

3.2.3 NVIC中断配置

为了能让系统程序的执行效率更高,所以必须尽量使用STM32的中断响应

函数来取代传统的循环判断方式。STM32中断种类丰富,数量充足,另有多种复用功能,给系统的整体设计带来了极大方便。

STM32中断配置以抢占优先级与响应优先级这两项为主要参数,抢占优先

级代表了中断的嵌套关系,抢占优先级较高(数值较小)的中断能够在优先级较低的中断里面嵌套执行。响应优先级表示了当中断同时发生的时候STM32响应的顺序,数值较小的中断优先响应。

3.2.4 nRF24L01初始化配置

nRF24L01初始化程序包括其与MCU的GPIO的配置、通信频率配置和SPI的初始化配置等。nRF24L01初始化流程图如图3-6所示:在配置过程中使能APB2外围端口GPIOB,GPIOA总线时钟,配置GPIO口PB0(CSN)、PA4(CE)推免输出,PB1(IRQ)上拉输出,输出频率均为50MHz,初始化SPI,使能nRF24L01,SPI片选取消。

SPI片选取消 外围时钟总线配置 GPIO口配置 SPI初始化 使能nRF24L01 开始 结束 图3-6 nRF24L01初始化流程图

12

3.3 nRF24L01无线通信软件设计 3.3.1 nRF24L01射频芯片特性 1.射频通道

nRF24L01的工作频率可选择的范围是2.400GHz到2.483GHz,每个频道的带宽是1Mhz(1Mbps速率是)或2MHz(2Mbps速率时),射频通道通过寄存器RF_CH设置,设置后模块的工作中心频率为F0=2400+RFCH[MHz] 发送方与接收方的射频通道号必须设为一致,当工作在2Mbps模式时,两对收发模块的RF_CH设置必须小于2才能时两对模块通信互不影响。 2.工作模式 模式 接收模式 发送模式 发送模式 待机模式Ⅱ 待机模式Ⅰ 掉电模式 PWR_UP 1 1 1 1 1 0 PRIM_RX 1 0 0 0 — — CE 1 1 1→0 1 0 — FIFO寄存器状态 — 数据在TXFIFO寄存器中 停留在发送模式直至数据发送完 TXFIFO为空 无数据传输 — 表3-1 nRF24L01工作模式表

nRF24L01可设置为多种工作模式,通过寄存器PWR_UP、PRIM_RX和引脚CE设置,详见上表3-1: 3.载波检测

nRF24L01具有载波检测功能,通过读取寄存器CD可知道空间中是否有对应频道的射频信号,CD为高表示有信号,内部CD信号是经过载波的,高电平会保持128us以上。 4.数据通道

nRF24L01配置为接收模式时可以接收最多6个不同地址相同频率的数据,每个数据通道拥有自己的地址并且可以通过寄存器来进行分别配置。数据通道的开启和关闭是通过寄存器EN_RXADDR来设置的,低6位每一位控制一个通道,每个数据通道的地址通过寄存器RX_ADDR_Px来配置(x为0到5,其中RX_ADDR_P0和RX_ADDR_P1是40位,RX_ADDR_P2到第5通道的第8位到第39位于通道1相同,只有低8位可以设置。

13

5.数据包处理方式

nRF24L01有两种处理数据包的方式,ShockBurstTM模式和增强型ShockBurstTM模式,两种方式都是通过SPI接口与微控制器连接。

在ShockBurstTM接收模式下,当接收到有效的地址和数据时IRQ通知MCU,随后MCU可将接收到的数据从RXFIFO寄存器中读出。

在ShockBurstTM发送模式下,nRF24L01自动生成前导码及CRC校验。数据发送完毕后IRQ通知MCU。减少了MCU的查询时间,也就意味着减少了MCU的工作量,同时减少了软件的开发时间。nRF24L01内部有三个不同的RXFIFO寄存器(6个通道共享此寄存器)和三个不同的TXFIFO寄存器。在掉电模式下、待机模式下和数据传输的过程中MCU可以随时访问FIFO寄存器。 本文系统设计中使用的是增强型的ShockBurstTM模式,其可以同时控制应答及重发功能而无需增加MCU工作量。发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失,一旦数据丢失则通过重新发送功能将丢失的数据恢复。在增强型ShockBurstTM下,这一切都由nRF24lL01芯片自动完成。 6.数据包格式

增强型ShockBurstTM模式下的数据包格式如表2:

前导码 地址(3~5字节) 9位(标志位) 数据(1~32字节) CRC校验(0/1/2) 表2 增强型ShockBurstTM模式下的数据包格式

ShockBurstTM模式下的数据包格式如表3。 前导码 地址(3~5字节) 数据(1~32字节) CRC校验(0/1/2) 表3 ShockBurstTM模式下的数据包格式

前导码用来检测0和1,芯片在接收模式下去除前导码,在发送模式下加入前导码。

地址为接收地址,地址宽度可以是3、4或5字节宽度,地址可以对接收通道及发送通道分别进行配置,从接收的数据包中自动去除地址。

标志位中的其中两位是PID,其他七位保留用作将来与其它产品相兼容。 PID数据包识别其中两位是用来每当接收到新的数据包后加1。 PID的作用是识别接收到的数据时新数据包还是重发的数据包。 (1)接收方

14


nRF24L01无线通信系统设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:破解福建男装迅速崛起的奥秘

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: