4 接收器和转发器USART及串口SPI
4.1 USART特点及原理
ATMEGA16L单片机的同步和异步串行接收器和转发器(USART)是一个高度灵活的串行通讯设备。主要特点为:
(1) 全双工操作(独立的串行接收和发送寄存器) (2) 异步或同步操作;
(3) 主机或从机提供时钟的同步操作; (4) 高精度的波特率发生器;
(5) 支持5,6,7,8,或9个数据位和1个或2个停止位; (6) 硬件支持的奇偶校验操作; (7) 数据过速检测; (8) 帧错误检测;
(9) 噪声滤波,包括错误的起始位检测,以及数字低通滤波器;
(10)三个独立的中断:发送结束中断,发送数据寄存器空中断,以及接收结束中断; (11)多处理器通讯模式; (12)倍速异步通讯模式。
USART分为三个主要部分:时钟发生器,发送器和接收器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的的外部输入时钟同步起来。XCK(发送器时钟)引脚只用于同步传输模式。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟[7]。由于接收器具有时钟和数据恢复单元,它是USART模块中最复杂的。恢复单元用于异步数据的接收。除了恢复单元,接收器还包括奇偶校验,控制逻辑,移位寄存器和一个两级接收缓冲器UDR。接收器支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误。
4.2 SPI特点及原理
串行外设接口SPI允许ATMEGA16L和外设或其他AVR器件进行高速的同步数据传输。ATMEGA16L SPI的特点如下:
(1)全双工,3线同步数据传输; (2)主机或从机操作;
(3)LSB首先发送或MSB首先发送;
13
(4)7种可编程的比特率; (5)传输结束中断标志; (6)写碰撞标志检测; (7)可以从闲置模式唤醒;
(8)作为主机时具有倍速模式(CK/2)。
系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS拉高实现与从机的同步。
配置为SPI主机时,SPI接口不自动控制SS引脚,必须由用户软件来处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,中断就会发生。主机可以继续往SPDR写入数据以移位到从机中去,或者是将从机的SS拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。
配置为从机时,只要SS为高,SPI接口将一直保存睡眠状态,并保持MISO为三态。在这个状态下软件可以更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直到SS被拉低[8]。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR写入数据。最后进来的数据将一直保存于缓冲寄存器里。
SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。
工作于SPI从机模式时,控制逻辑对SCK引脚的输入信号进行采样。为了保证对时钟信号的正确采样,SPI时钟不能超过fosc/4。
SPI使能后,MOSI、MISO、SCK和SS引脚的数据 方向将按照表5-1所示自动进行配置。
表4-1 SPI引脚重载
引脚 MOSI MISO SCK SS 方向,SPI主机 用户定义 输入 用户定义 用户定义 方向,SPI从机 输入 用户定义 输入 输入
14
5 射频收发电路
5.1 芯片结构
nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率、放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。nRF905的详细结构如图5-1所示。
图5-1 nRF905的详细结构
5.2 工作模式
下面具体详细分析nRF905的发送流程和接收流程。 1.发送流程
典型的nRF905发送流程分以下几步:
15
(1)当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据传送给nRF905,SPI接口的速率在通信协议和器件配置时确定;
(2)微控制器置高TRX_CE和TX_EN,激发nRF905和Shock Burst TM发送模式; (3)nRF905的Shock Burst TM发送; ? 射频寄存器自动开启;
? 数据打包(加字头和CRC校验码); ? 发送数据包;
? 当数据发送完成,数据准备好引脚被置高。
(4)AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低; (5)当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
Shock Burst TM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
2.接收流程
(1)当TRX_CE为高、TX_EN为低时,nRF905进入Shock Burst TM接收模式; (2)650us后,nRF905不断监测,等待接收数据;
(3)当nRF905检测到同一频段的载波时,载波检测引脚被置高; (4)当接收到一个相匹配的地址,地址匹配引脚被置高;
(5)当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高;
(6)微控制器把TRX_CE置低,nRF905进入空闲模式;
(7)微控制器通过SPI口,以一定的速率把数据移到微控制器内;
(8)当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;
(9)nRF905由此可以进入Shock Burst TM接收模式、Shock Burst TM发送模式或关机模式。 当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发送改变,nRF905立即把其工作模式改变,数据包则丢失[9]。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。
5.3器件配置
所有配置字都是通过SPI接口送给nRF905。SPI接口的工作方式可通过SPI指令进行设置。当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。
5.3.1 SPI接口配置
SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄
16
存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含目标器件地址,字节长度由配置寄存器设置;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。
5.3.2 射频配置
射频配置寄存器和内容如表5-1所示:
表5-1 射频配置寄存器
名称 CH_NO HFREQ_PLL 位宽 9 1 和HFRQ_PLL一起进行频率设置 使PLL工作于433或868//915MHz(默认值为0) ‘0’-工作于433MHz频段 ‘1’-工作于868/915MHz频段 PA_PWR 2 输出功率(默认值为00) ‘00’-10dBm; ‘01’-2dBm; ‘00’+0dBm;‘00’+10dBm; RX_RED_PWR ATUTO_RETRAN RX_AFW 1 1 3 接受方式节能端,该位为高时,接受工作电流为1.6mA,但同时灵敏度也降低 自动重发位,只有当TRX_CE,和TXEN为高时才有效 接收地址宽度(默认值为100) ‘001’-1byte RX地址;‘001’-4byte RX地址 TR_AFW 3 发送地址宽度(默认值为100) ‘001’-1byte RX地址;‘001’-4byte RX地址 RX_PW 6 发送数据宽度(默认值为100000) ‘000001’-1byte发送数据宽度; ‘000010’-2byte发送数据宽度; ………………………………… ‘100000’-32byte发送数据宽度 TX_PW 6 接收数据宽度(默认值为100000) ‘000001’-1byte接收数据宽度; ‘000010’-2byte接收数据宽度; ………………………………… ‘100000’-32byte接收数据宽度 RX_ADDRESS UP_CLK_FREQ 32 2 发送地址标识(默认值E7E7E7E7) 输出时钟频率(默认值11) 17
描述