【摘 要】本文首先比较详细、系统地介绍了最新51兼容射频SoC nRF9E5的片内微控制器和其它功能模块;然后分析了无线鼠标与有线鼠标的区别,并引出了无线光机鼠标的概念和工作原理,给出用nRF9E5进行无线光机鼠标设计的方案和该方案中的电池寿命的计算方法;最后,说明用nRF9E5进行无线光机鼠标设计的优势。
【关键词】nRF9E5;射频;无线通信;光机鼠标;鼠标
1. 引言
nRF9E5是Nordic VLSI公司于2004年2月5日推出的系统级RF芯片,其内置nRF905 433/868/915MHz收发器、8051兼容微控制器和4输入10位80ksps AD转换器,是真正的系统级芯片。内置nRF905收发器与nRF905 芯片的收发器一样,可以工作在ShockBurstTM(自动处理前缀、地址和CRC)方式。内置电压调整模块,最大限度地抑制噪音,为系统提供1.9V 到3.6V的工作电压。nRF9E5符合美国通信委员会和欧洲电信标准学会的相关标准。由于nRF905功耗低,工作可靠,因此很适用于无线光机鼠标设计。
2. nRF9E5功能介绍
2.1微控制器
nRF9E5的片内微控制器与标准51兼容。指令时序与标准51稍有区别,典型的区别是nRF9E5的片内微控制器的指令周期为4到20个指令周期。中断控制器支持5个扩展的中断源:ADC中断、SPI中断、RADIO1中断、RADIO2中断和唤醒定时器中断。片内控制器还有3个与8052相同的定时器。一个和8051相同的串口,可以用定时器1和定时器2来作为异步通信的波特率产生器。此外,还扩展了两个数据指针,以方便于从XRAM区读取数据。
微处理器中有256字节的数据RAM和512字节的ROM。上电复位或软件复位后,处理器自动执行ROM中的引导区中的代码。用户程序通常是在引导区的引导下,从EEPROM加载到1个4K的RAM中,这个4K的RAM也可作存储数据用。如果应用当中不用掩膜ROM(也即内含的ROM),程序代码必须从外部非易失性存储器中加载,比较常见的是通过SPI接口扩展型号为25320的EEPROM。
nRF9E5的大部分寄存器和标准8051相同,只是为了控制一些8051没有的功能,增加了一些特殊功能寄存器,如RADIO(P2)、 ADCCON、ADCDATAH、ADCDATAL、ADCSTATIC、PWMCON、PWMDUTY等。nRF9E5中的P0、P1和P2口寄存器地址和标准8051中的相同,都是0x80,0x90,0xA0,但功能和标准8051中的有所不同。
![](http://www.mcu99.com/Article/UploadFile/200806/20080613141627582.gif)
图1 nRF9E5功能图[1]
2.2 PWM
nRF9E5内有一个可编程控制的PWM(脉宽调制)输出,使用时,通过程序改变P0.7的功能来实现,并可编程决定PWM工作于6位、7位或8位。PWM的频率与晶振有关,可编程控制。
2.3 SPI接口
SPI(串行外设接口)的接口引脚有MISO(接收EEPROM的SDO送来的数据)、SCK(给EEPROM的SCK提供时钟信号)、MOSI (送数据到EEPROM的SDI)、EECSN(给EEPROM的CSN送使能信号)。SPI口的MISO、SCK和MOSI与P1口的低3位重用,通过寄存器SPI_CTRL控制来控制功能间的撤换。SPI硬件不产生任何片选信号,可以用GPIO口来进行片选。通常,系统上电时,SPI自动和片外的 25320相连,当程序加载完成后,MISO(P1.2)、MOSI(P1.0)和SCK(P1.0)可能会用作其它用途,比如其它的SPI器件或 GPIO。
2.4 LF时钟,RTC唤醒定时器,GPIO唤醒和WTD
nRF9E5内有一个低频的时钟CKLF,该时钟常开。当晶振开始工作后,CKLF频率为4kHz;晶振不工作时,CKLF是一个低功耗RC晶振并且不能禁能,只要VDD 1.8V,其连续工作。RTC唤醒定时器、WTD(看门狗)和GPIO唤醒全都工作在CKLF频率,以保证芯片低功耗工作时能够完成这三个功能。
RTC唤醒定时器是个24位可编程控制的递减计数器,WTD则是个16位可编程控制的递减计数器。RTC唤醒定时器和WTD的循环周期一般在300us和80ms之间,默认为1ms。
2.5 AD转换器
nRF9E5片内有10位ADC,AD转换参考电压可以通过软件设置在AREF和1.22V之间(内部参考电压)。AD转换器的4个输入可通过软件进行选择,通道0到3可以把对应引脚AIN0到AIN3上的电压值分别转换为数字值,通道4用于对nRF9E5工作电压的监控。AD转换器默认工作于 10位方式,可通过软件使其工作于6位、8位或12位方式。
2.6 射频收发器
nRF9E5收发器通过内部并行口或内部SPI口与其它模块进行通信,具有同单片射频收发器nRF905相同的功能。DuoCeiver接收器输出的数据准备信号,可通过程序使其为微处理器的中断或通过GPIO口的传给CPU。
nRF9E5工作于433/868/915 ISM频段。收发器由一个完整的频率合成器、一个功率放大器、一个调节器和两个接收器组成。输出功率、频道和其它射频参数可通过对特殊功能寄存器 RADIO(0xA0)编程进行控制。发射模式下,射频电流消耗仅为11mA,接收模式下为12.5mA。为了节能,可通过程序控制收发器的开/关。
3. 无线鼠标的基本知识[2]
无线鼠标的基本功能和普通鼠标相同,唯一的区别是无线鼠标通过无线方式传送鼠标信息给PC机,而普通鼠标是通过电线。这意味着无线鼠标检测鼠标移动和按键信息的方法和普通有线鼠标一样,也是用开关来检测按键,用球和滚轴来检测鼠标的移动。无线鼠标使用电池供电,所以应该尽量考虑节能问题,尽量用最少的次数就能把检测到的鼠标信息发送到PC机。无线鼠标在PC机处还应有一个接收器,一般该接收器是通过USB接口或串口与PC机相连,目前发展的趋势是采用USB接口。
4. 无线光机鼠标方案
无线光机鼠标器,即将滚轮的机械转动转换成光信号,然后变为数字电信号再通过无线的方式发送给和PC机相连的接收器。无线光机鼠标器底部有一个露出一部分的塑胶小球,当鼠标器在操作桌面上移动时,小球随之转动,在鼠标器内部装有三个滚轴与小球接触,其中有两个分别是X轴方向和Y轴方向滚轴,用来分别测量X轴方向和Y轴方向的移动量,另一个是空轴,仅起支撑作用。拖动鼠标器时,由于小球带动三个滚轴转动,X轴方向和Y轴方向滚轴又各带动一个转轴(称为译码轮)转动。译码轮(见图2)[3]的两侧分别装有红外
图2 译码轮和光敏传感器工作原理
发光二极管和光敏传感器,组成光电耦合器。光敏传感器内部沿垂直方向排列有两个光敏晶体管A和B。由于译码轮有间隙,故当译码轮转动时,红外发光二极管发出的红外线时而照在光敏传感器上,时而被阻断,从而使光敏传感器输出脉冲信号。光敏晶体管A和B被安放的位置使得其光照和阻断的时间有差异,从而产生的脉冲A和脉冲B有一定的相位差,利用这种方法,就能测出鼠标器的拖动方向。塑胶小球的移动带动滚轴转动,滚轴每转动一个小角度,鼠标位置计数器加1,每隔一定时间,nRF9E5就把鼠标位置计数器的值读出,通过计算得出鼠标移动的位移,再把位移信息发送给PC机。
鼠标的按键是典型的开关,每个开关和nRF9E5的一个GPIO口相连。与开关相连的GPIO口配置为输入状态,并通过外部上拉电阻把其置高。按键在被按下的时候可能会出现抖动,所以在软件设计的时候一般要考虑到去抖动,一般的方法是延时15-25ms再去检测按键。一般的鼠标按键有:左键、中键和右键。系统原理图如图3所示。
![](http://www.mcu99.com/Article/UploadFile/200806/20080613141628264.gif)
射频部分基于nRF9E5设计,系统晶振为16MHz,EEPROM存储程序,使用nRF9E5的ShockBurstTM工作方式发送鼠标信息包。ShockBurstTM工作方式在芯片硬件设计时就已经考虑到节能,因此使用该工作方式可以延长电池寿命。
5. 无线光机鼠标电池寿命算法[2]
5.1工作状态分析
无线光机鼠标中,最耗电是红外发光二极管,而不是射频收发部分,因此,要使发光二极管尽量少耗电并且鼠标又能正常工作。下文给出一个节电的方法,首先把发光二极管的工作状态分为以下三种:
状态1:鼠标在移动并且要求以最大的精确度测出移动信息。此状态下,tledon=10us,tkedoff=200us,每隔10ms,鼠标信息被精确算出并发送给PC机。
状态2:鼠标刚刚被用过但现在不用。此状态下tledon=10us,tledoff=25000us。当用户再次拖动鼠标时,也不会感觉得出25000us的短延时。鼠标从状态1进入状态2一般应在5ms左右,当鼠标检测到移动时,应立刻从状态2进入状态1。
状态3:当鼠标很长时间没用时,进入状态3。此状态下tledon=10us,tledoff=100000us。同样,很久没有使用之后再次拖动鼠标时,用户感觉不出来100000us的延时。一旦检测出鼠标被移动时,鼠标应该马上进入状态1,从状态2进入状态3一般要1到2分钟。
5.2工作电流的计算
发光二极管的工作电流是10mA。nRF9E5在工作状态时工作电流为3mA,空闲状态时工作电流是25uA,传送ShockBurstTM数据包时工作电流为11mA。各个状态时的平均电流可根据公式(1)来计算:
![](http://www.mcu99.com/Article/UploadFile/200806/20080613141629860.gif)
至于状态1,要考虑到ShockBurstTM发射所消耗的电流。假设数据包共为124位,发射速度为1Mbit/s,则nRF9E5所用时间为 124us,此外,起动时间为202us,ShockBurstTM的工作时间加起来应该是326us。因此,可得到状态1的平均电流算式,如式(4)
![](http://www.mcu99.com/Article/UploadFile/200806/20080613141629242.gif)
nRF9E5推荐外接晶振频率为16MHz,当外接晶振工作频率降低时,无线光机鼠标的平均工作电流也会明显降低。经过计算,nRF9E5外接晶振是4MHz的无线光机鼠标的电池寿命约为外接晶振是16MHz时的1.33倍。同样,降低nRF9E5的射频发射速度,无线光机鼠标的电池寿命也会增大。
5. 结论
nRF9E5尺寸小,使用中外围元件少,433/868/915MHz三个工作频率,非常适合用来做无线光机鼠标与PC机进行通信。nRF9E5的 ShockBurstTM技术,使得无线光机鼠标的功耗更低,设计中为节约用电而编写的程序更少,并且电池监管更方便。此外,nRF9E5更易于实现安全的无线光机鼠标信息的发送,如果设计需要,还可以扩展更多的鼠标按键。
参考文献 [1] Nordic VLSI ASA Inc. 2.4Ghz RF transceiver with embedded 8051 compatible microcontroller and 9 input, 10 bit ADC[Z].2003.5 [2] Nordic VLSI ASA Inc. nRF24Ex in a wireless keyboard design[Z].2003.10 |