红外遥控编码协议的波形基本特征是:一串高低电平组成的波形。对遥控器来说,假如高电平使得红外发射管导通,那么高电平使得红外发射管发出红外光,在电器接收端就能接收到红外光。低电平期间,红外发射管不导通,红外发射管停止发送红外光,在电器接收端就接收不到红外光。
高电平的持续时间从10us到10ms不等。为了使得遥控器尽可能省电,高电平的持续时间要尽可能短。低电平的持续时间一般在100us到10ms。
电器接收端接收红外信号采用光敏接收二极管接收,经过几级放大后传送给接收电路。这是早期的电器接收端的做法。后来,把光敏接收管,放大电路和带通滤波器集成于一体,就是我们现在熟悉的一体化接收头。
由于早期没有一体化接收头,所以,早期的红外编码协议有不带载波的。这个载波是在高电平中叠加一大串高频率的高低电平。载波的频率范围一般在20K-500KHz。不带载波的红外编码的高电平一般在10-20us,紧跟着的低电平的长度一般在100us-10ms。这个很短的高电平使得遥控器发出很短的红外光,电器接收端接收到连续2次红外光就纪录下了低电平的时间,接收完所有的红外光,就可以判断接收到的信号是否是电器所需要的功能。这就是目前大家熟悉的无载波的遥控编码协议的工作原理。可以看出,无载波的高电平发出的红外光目的是告诉电器一个计数的标志,所以,其宽度不需要长,宽度值也不会被电器接收所纪录。另外,由于环境中,红外光信号到处都是,所以,在无载波遥控器发射时,经常会混杂一些干扰信号,使得电器反应不灵敏,所以,无载波编码一般都很短,目的是为了避免干扰,但是,外界的红外光干扰也会使得电器误动作。因而,无载波编码日渐被淘汰。
带载波的红外编码就需要电器接收端带有带通滤波器。有了这个带通滤波器,就彻底避免了无载波编码的易受干扰的缺点。同样的原理,电器接收端的一体化接收头在接收红外光时,也是频繁纪录连续2次的红外光之间的时间,载波的高电平也是不被纪录的。多次纪录的时间就可以算出频率,只有符合带通滤波器的中心频率的信号(如38KHz)才会使得一体化接收头输出信号。可以看出,要让这个载波频率计算得准,起码要5次以上的时间才行。按照38KHz计算,5次的时间就是100多us。红外遥控器发射端的载波的占空比,就是高电平占一高一低时间的比例,一般是1/3,1/4,目的是为了使遥控器省电,但是也不能太小了,太小了,高电平时间就短了,无法使红外光发送得够强,传送距离才能保证,灵敏度才能有保证。
红外编码协议的编码方式一般有2种,一种是脉宽调制方式(PWM),另一种是脉相调制方式(PPM)。脉宽调制方式(PWM)的定义逻辑位是:一串载波+一段低电平,以低电平的宽度不同作为区分逻辑位的不同。脉相调制方式(PPM)的定义逻辑位是:一串载波和一段低电平的前后顺序不同来区分不同的逻辑位,如一串载波+一段低电平是逻辑0,一段低电平+一串载波是逻辑1。
常见的逻辑位只有2个逻辑位。每个逻辑位由一个载波串和一个低电平组成。衍生的逻辑位有:一串载波或一段低电平就是逻辑位,或者是,多个载波串和低电平组成一个逻辑位。逻辑位的数量也不是2个,有3个,4个,......,16个,甚至更多。
一个完整的红外编码协议,往往有基本波形串(我们称之为基本帧Frame),重复帧和结束帧。有的红外编码协议只有基本帧,没有重复帧和结束帧;大多数红外编码协议有基本帧和重复帧。如NEC6122编码协议,9ms载波串+4.5ms低电平开头的一帧是基本帧,基本帧固定长度是108ms,后面的9ms载波串+2.25ms开头的就是重复帧。这个是最常见的红外编码协议。该编码协议的一个变种是重复帧和基本帧相同。
由于国内常见的红外编码协议不多,所以,独立读码器解码时一般都只解码基本帧。这样做也可以使读码器解码速度最快。从理论来说,这么做是不合理的。
随着红外遥控器编码格式的层出不穷地出现,独立读码器的功能受到了限制,经常需要添加新的编码格式以满足生产测试的需要。如数字电视机顶盒遥控器就出现了几种非常见的编码格式。作为独立读码器功能的补充,电脑读码器的出现最多也仅仅是便于开发使用,生产使用显然是不足的。因为电脑读码器的解码速度肯定是不如独立读码器的。那么,电脑读码器的功能主要就是解码。从以上分析来看,电脑读码器的解码必须是解码红外遥控编码协议的完整部分。可以看出,只解码基本帧的速度肯定是快得多,但是,解码结果很可能不正确。如上面举例的NEC6122编码和变种的NEC编码,假如只解码第一帧(基本帧),不解码重复帧,解码结果是相同的。这样的话,对于只看解码结果的使用者来说,错误的结果将导致开发结果的失误。
另外,所谓解码,就是把读到的波形与读码器内部预先存储的编码协议波形进行比较,如在读码器的规定误差范围内,那么就能解码出结果。这里出现2个问题,一个是读码器内的标准编码协议,这个协议的准确与否,直接导致解码结果的正确与否。另外一个问题是,解码误差的问题。电器接收红外信号,肯定都有自己的识别误差。不同的电器的误差范围不同。举例说明,NEC6122的编码协议是9ms载波串+4.5ms+32位逻辑位,逻辑0是560us载波串+560us低电平,逻辑1是560us载波串+1680us低电平,Pioneer(先锋)音响的编码协议是8.4ms载波串+4.2ms+32位逻辑位,逻辑0是520us载波串+520us低电平,逻辑1是520us载波串+1560us低电平。两者误差是8%左右。显然,先锋音响接收误差范围是小于8%的,否则,同样数据的NEC6122的遥控器就可以遥控先锋音响。如果,电脑读码器的解码误差大于8%,在解码先锋遥控器的时候就会解码出NEC6122协议。再举例,DM500,DM600遥控器的红外编码协议,逻辑位大于2个,每个逻辑位的低电平之间相差130us,而逻辑位低电平最长有2800us,我们可以算出,相邻2个低电平之间的误差只有3%。如果读码器的解码误差大于3%,那么解码结果就会出错。