红外遥控采用红外(IR)光来传送信息。发射器MCU的调制信号控制IR LED发射红外光。调制能够帮助接收器把需要的信号与所有其他的红外噪声源区分开来。调制的实现过程是用带有有效信息的包络信号对载波信号(通常是一个具有较高频率的方波)进行调制。
接收器采用光电二极管把IR光转换为电流。通常使用跨阻抗放大器将电流转换为电压;在解调前,该电压将通过一个增益放大器和滤波器。载波信号在解调过程中去除。解调信号可直接连接至接收器的MCU用于解码。
红外遥控调制和编码理论
所有的新式红外遥控设计均采用数字调制。两个基本的数字调制技术是幅移键控(ASK)和频移键控(FSK)。ASK通过改变载波幅度来表示逻辑1和0,而FSK则采用两种不同的载波频率来表示这些逻辑电平。
ASK调制
ASK是最古老和最简单的技术之一,颇受很多消费电子公司的青睐。它凭借自身优良的性能(鲁棒性好且低功耗)、设计简单和低成本,成为了最流行的调制模式。
在发送器中,有效数据被调制成一组频率范围从30kHz至60kHz的载波脉冲。当没有信号传输时,则插入一个空号。
接收器调谐至与发送器载波相同的频率,而所有其他的噪声则被接收器的带通滤波器所阻隔。许多制造商都提供了全集成的接收器模块, 此类模块可提供与接收器微控制器相对接的解调信号。典型的载波频率为30kHz、33kHz、36kHz、38kHz、40kHz或56kHz。
下文将说明ASK调制系统中所使用的几种主要的编码方法。
● 脉冲位置编码 脉冲位置编码是基本的ASK调制。每个位宽恒定。载波调制脉冲代表逻辑1,而空号则代表逻辑0。
● 脉冲距离编码 在脉冲距离编码中,每个位由一个载波调制脉冲和一个空号组成。空号宽度用来区分逻辑1和逻辑0。载波调制脉宽则是恒定的。
● 脉冲宽度编码 在脉冲宽度编码中,每个位由一个载波调制脉冲和一个空号组成。载波调制脉宽用来区分逻辑1和逻辑0,空号则是恒定的。
● 曼彻斯特编码 曼彻斯特编码也被称为双相位编码。每个位由一个载波调制脉冲和一个空号组成。载波调制脉冲和空号之间转换的极性规定了逻辑电平。例如,“调制脉冲至空号”表示逻辑1,而“空号至调制脉冲”则表示逻辑0。
FSK调制
FSK为逻辑1和逻辑0采用了两个不同的载波频率,而且在脉冲之间没有空号。这种解决方案采用两个频率,增加了解调的复杂性和成本,因此并未得到广泛使用。
MSP430FR4xx概述
MSP430FR4xx是超低功耗MSP430系列16位微控制器中的一员。它具有优化的外设资源和IR调制逻辑,从而非常适用于遥控应用。强大的LCD显示功能和丰富的电容式触摸I/O资源扩展了它在诸如血压计、水表及动态令牌(OTP)等其他领域中的使用。
MSP430FR4xx红外遥控实现
红外调制传统上主要是采用软件和有限的硬件资源来实现的(即用一个定时器来产生精确的时隙)。由于时隙很小,软件开销很大。MSP430FR4xx具有一些内部互联硬件资源(如定时器和SPI),因而能够以较低的软件开销来实现IR调制。
MSP430FR4xx中的IR调制逻辑包含两个级联定时器和附加组合逻辑(见图1)。
图1:IR调制逻辑电路。
IR 调制逻辑可通过设定SYSCFG1寄存器中的IREN位来使能。该逻辑具有两个不同的PWM输入信号(源自TA0和TA1),用以支持ASK或FSK调制。在ASK调制中,来自TA0的第一个PWM用于载波生成,而来自TA1的第二个PWM或来自eUSCI_A的输出则可用于产生包络。在FSK调制中,两个PWM信号分别代表两种不同的载波频率。SYSCFG1寄存器中的IRMSEL位规定了调制模式。在输出至外部引脚之前,可通过设定SYSCFG1寄存器中的IRPSEL位来使调制信号的极性反转,从而适应不同的外部驱动电路。
包络波形生成可利用硬件或软件来实现。在硬件模式中,包络信号来自TA1(仅可用于ASK)或eUSCI_A。当来自于后者时,其工作于SPI模式,8位数据自动地串行发送。在软件模式中,SYSCFG1寄存器中的IRDATA位负责控制是发送逻辑0还是逻辑1。SYSCFG1寄存器中的IRDSEL位则用来选择是使用硬件模式还是软件模式。
调制方案
● ASK调制 IRMSEL 位缺省为ASK调制。对AND门的两个输入进行调制,驱动外部LED:一个是来自TA0的载波信号,另一个是来自TA1、eUSCI_A或IRDATA位的包络时序信号。若是来自IRDATA位,则需要采用另一个独立的计数器(TA1、RTC或WDT)对这个位进行周期性的更新。
● FSK调制 若IRMSEL 位被置位, 则启用FSK 模式。TA0 和TA1分别生成两个单独的载波频率。包络波形可由eUSCI_A或IRDATA位生成;若由IRDATA位生成,则需要用另一个独立的计数器(RTC或WDT)对此位进行周期性的更新。
载波生成
定时器用于生成载波。TA0和TA1均可从高频SMCLK获得,从而实现较高的分辨率和较宽的频率范围。定时器的计数器可工作于“向上”或者“向上/向下” 计数模式。其CCR0用来控制载波周期,而CCR2则用来决定载波的占空比。从系统的角度看,较小的占空比有助于降低功耗。典型的占空比约为3/16至4 /16。多达7种输出模式可实现灵活的载波生成。启动载波生成之后,在一帧数据发送完成前,用户不必更新其配置。
波形包络生成
包络波形由发送的数据和使用的编码方式来决定。用户可使用TA1、eUSCI_A或IRDATA,根据所选取的调制模式来生成包络波形。
当在FSK 调制中使用TA1时,CCR0用来设定包络的周期,而CCR2则用来设定占空比。因此,对于不同的编码方式,应将CCR0配置为每位宽度的1或2 倍;CCR2必须在发送下一位之前更新。将要发送的位数决定了在一次传输中需要触发的中断次数,因此可将它直接加入到软件开销和电流消耗中。
当在SPI 模式中使用eUSCI_A时,其波特率应配置为有效数据波特率的1或2倍。例如,在脉冲位置编码中是配置相同的波特率,而在曼彻斯特编码中则要加倍。采用SPI可大幅减少中断次数,从而降低软件开销。
当使用IRDATA时,需要另一个独立的计数器( 通常是RTC ) 来更新IRDATA位。
硬件和软件开销考虑因素
MSP- 430系列专为超低功耗应用设计,从而延长电池寿命。降低功耗的最高原则是尽可能增加处于低功耗模式(比如LPM0/LPM3)的时间。强烈建议采用低功耗集成外设模块来取代由软件实现的功能。由于生成载波,高频SMCLK必不可少,在IR数据传输期间, 就调制和编码模式而言, 应尽量延长处于LPM0模式的时间。从这个角度来说,eUSCI_A是最可取的,因为它能够获得最长的时隙(4或8位)。但是在某些需要把eUSCI_A 用于执行其他任务的应用中,则要采用TA1和RTC等其他的硬件资源作为替代。
协议示例
业界使用的红外传输协议有很多,不过大多是从具有不同频率或格式的几种基础协议发展而来。下面将说明作为最流行协议的“脉冲距离协议”和“曼彻斯特协议(RC5)”。
脉冲距离协议
脉冲距离协议被许多家用电器公司所广泛使用。它采用载波频率为38kHz的ASK调制和脉冲距离编码。
● 帧格式 在协议中有两种帧:数据帧和重发帧。
数据帧由一个引导码和数据组成。引导码是一个长度为9ms的突发脉冲,其后是4.5ms的停顿。数据有效载荷包括识别设备用的8位地址和控制字用的8位命令。为保证可靠性,两者均发送两次。地址和命令的第二次传输是互补的,因此数据帧的总长度恒定(67.5ms)。有效载荷以一个560μs的载波调制拖尾脉冲作为结束,从而完成最后的数据间隙。逻辑1定义为一个跟随1690μs空号周期的560μs载波调制周期。逻辑0则定义为一个跟随560μs空号周期的560μs载波调制周期。图2显示了一个完整的数据帧格式。
图2:脉冲距离协议,数据帧格式。
重发帧定义为处理自动重发功能;它并不携带任何地址或命令信息。它包括序列脉冲和一个跟随其后的拖尾脉冲。在相同按键仍然按下的同时,重发帧每110ms重发一次。脉冲距离协议的完整序列格式如图3所示。
图3:脉冲距离协议,完整的序列格式。
● 包络生成 如果采用TA1来生成包络波形,则每对载波调制脉冲和空号必须对CCR0和CCR2进行一次更新。CCR0取决于载波调制脉冲周期和空号周期,而CCR2 则取决于载波调制脉冲周期。例如,如果TA1由4MHz的SMCLK提供且采用缺省分频器配置,则CCR0和CCR2被分别配置为54000和36000 来生成引导码(9ms的载波调制脉冲与4.5ms的空号配对),并针对逻辑1分别更新为9000和2240。如欲发送一个完整的数据帧,则CCR0和 CCR2必需更新34(1+8x2+8x2+1)次,这在TA1中断程序中实现。
如果采用SPI来生成包络波形,则应将其波特率设定为与0.56ms的最小时隙相等。因此,TXBUF应发送3字节数据(0xFF、0xFF、0x00)来传输引导码,而其他字节的发送则取决于有效载荷。每个数据帧总共有16个“1”和16个“0”。SPI的TXBUF需要更新大约15(121/8)次,这在SPI中断服务程序中实现。其软件开销是TA1开销的一半。
● 载波生成 要生成具有1/4占空比的38kHz载波,需要根据SMCLK来配置TA0的CCR0和CCR2。例如,当采用4MHz SMCLK时,CCR0和CCR2被分别配置为105(4000/38)和26(4000/38/4)。
曼彻斯特编码(RC5)
RC5协议由Philips公司推出。它采用载波频率固定为36kHz的ASK调制和曼彻斯特编码。
● 帧格式 RC5数据帧以两个逻辑1起始位(S1和S2)作为开始,后面是一个翻转位(T),有效载荷包含一个5位地址和一个6位命令。翻转位在每次新按键按压时改变其数值。5个地址位用于识别欲控制的设备,而6个命令位则包含将传输的信息。
逻辑1 被定义为一个跟随889 μs载波调制脉冲周期的889 μs 空号周期。逻辑0则被定义为一个跟随889μs空号周期的889 μs 载波调制脉冲周期。
完整的数据帧具有24.9ms的固定长度,其格式如图4所示。
图4:RC5协议,数据帧格式。
自动重发功能通过重发具有相同翻转位的数据帧来处理。在RC5的扩展版本中,S2起始位被解释为一个反转的第六地址位,而不是固定的逻辑1。
● 包络生成 最小时隙为889μs。需要更新TA1的输出模式来生成包络波形。例如,TA1由4MHz的SMCLK提供,CCR0和CCR2被分别固定为 7112(2x889/0.25)和3556(889/0.25)。TA1输出模式在每个数据帧中最多需要更新14(3+5+6)次,这在TA1中断服务程序中进行处理。
假如采用SPI,则利用889μs周期来设定波特率。其TXBUF需要被写入大约4(2x14/8)次来传输一个数据帧,这可在SPI中断程序中进行处理。
● 载波生成 如欲生成具有1/3占空比的36kHz载波,则根据SMCLK的频率来配置TA0的CCR0和CCR2。例如,当采用4MHz SMCLK时,CCR0 和CCR2 被分别配置为111(4000/36)和37(4000/36/3)。如果SMCLK为8MHz,则上面的两个数值应该加倍。
软件设计和开销比较
如果没有IR调制逻辑电路, 则通常需要采用一个定时器, 通过控制其PWM输出来完成红外传输。其计数器周期和通道占空比与载波周期和占空比是一致的。因此,软件根据定时器的溢出数来更新其PWM输出。例如,在脉冲距离协议的引导码生成过程中,软件计数342(9ms/(1/38kHz))次溢出来输出9ms的载波脉冲,计数171(4.5ms/(1 /38kHz))次溢出来输出4.5ms的空号。在溢出空号期间,器件保持在LPM0模式以节省功率。帧长度决定了唤醒次数。
在采用IR调制逻辑电路的情况下,器件仅需唤醒非常有限的时间即可实现包络生成,其间载波将自动生成,无需任何干预。
为了更好地了解IR逻辑电路在传输一个完整帧期间所拥有的软件开销的优越性,这里针对脉冲距离协议和曼彻斯特协议对采用不同方法的中断次数做了比较。详情见表1。
表1:传输一个完整数据帧的软件开销比较
结论
MSP430FR4xx 器件包含了丰富的外设和专用的IR调制逻辑功能电路,可为那些采用ASK或FSK调制的红外遥控实现方案的开发提供帮助。利用TA0和TA1,能够在几乎不需要软件干预的情况下轻松生成载波。给出的两个典型示例表明,利用eUSCI_A实现包络生成可获得最大的软件开销降幅。