一种电子设备中的红外实现装置及其实现方法与流程

文档序号:11135654阅读:762来源:国知局
一种电子设备中的红外实现装置及其实现方法与制造工艺

本申请涉及一种电子设备中用于实现红外遥控和/或红外学习的装置及其实现方法。



背景技术:

遥控器(remote control)是一种电子设备的组件,用来在较短距离内无线地操纵电子设备。最常见的遥控器是红外(infrared,IR)遥控器,通过发射人眼不可见的红外光信号来操纵电子设备。红外遥控器通常使用红外发光二极管(infrared light-emitting diode,IR LED)作为发射元件,所发射的红外线波长通常在760nm至1500nm之间。典型地,红外遥控器使用940nm波长的红外发光二极管作为发射元件,从而最有利于接收。

红外遥控器形成并发送红外光信号包括如下过程:红外遥控器上被按下的按钮对应一个遥控指令,该遥控指令以红外控制码来表示,红外控制码被调制在载波信号上形成调制信号,该调制信号作为电信号送往红外发光二极管对外发送红外光信号。

电子设备接收并处理红外光信号包括如下过程:红外发光二极管从空间接收到红外光信号并转换为电信号,该转换的电信号(对应于调制信号)经过解调去除载波信号得到红外控制码,红外控制码对应的遥控指令被识别,该遥控指令对应的动作被执行。

请参阅图1,这是红外遥控装置所涉及的一些重要信号,介绍如下。

遥控指令通常为一串二进制数字,例如是八位二进制数10011101。

红外控制码是由不同时长的高电平和低电平交替组成的信号。红外控制码通常包括引导码、系统码、数据码、系统码补码、数据码补码、同步码等。其中的系统码、数据码、系统码补码、数据码补码通常用于表示遥控指令。例如NEC红外传输协议定义:红外控制码用持续时间为562.5μs的高电平与持续时间为1687.5μs的低电平的组合表示二进制数字1,用持续时间为562.5μs的高电平与持续时间为562.5μs的低电平的组合表示二进制数字0。

载波信号通常是方波信号,频率可以是20kHz、30kHz、33kHz、36kHz、38kHz、40kHz、45kHz等。载波信号的占空比通常在1/21至1/2之间。典型地,载波信号使用频率为38kHz、占空比为1/10至1/2之间的方波信号。

调制信号是将红外控制码调制在载波信号上形成的,通常采用脉冲调幅(PAM,pulse-amplitude modulation)的信号调制方式。由于红外控制码和载波信号都是方波信号,调制信号是用连续的载波信号来表示红外控制码中的高电平,用低电平来表示红外控制码中的低电平。以最常见的38kHz载波信号为例,每个载波信号的周期是26.3μs,大约21个载波信号可以表示红外控制码中的一个持续时间为562.5μs的高电平。

红外光信号是由发光时间段与不发光时间段交替组成的,其中的发光时间段例如对应于调制信号中的高电平,不发光时间段则对应于调制信号中的低电平。因此红外光信号与调制信号之间呈现完全对应的关系。

以手机为代表的一些电子设备开始具有红外遥控功能,有些电子设备还具有红外学习功能。请参阅图2,这是一种现有的电子设备中的红外实现装置。其中实线表示实现红外遥控功能的实现过程,虚线表示实现红外学习功能的实现过程(可选)。图2所示的电子设备中的红外实现装置包括如下硬件结构。

——处理器:可以是电子设备中的中央处理器(CPU),也可以是电子设备中的图像处理器(GPU)、数字信号处理器(DSP)等协处理器(coprocessor,也称辅助处理器)。在红外遥控时处理器根据用户操作得到遥控指令并将其转换为红外控制码,在红外学习时处理器对学到的红外控制码进行滤波、规整、与遥控指令相关联并保存。

——微控制器(MCU,也称单片机,single-chip microcomputer):在红外遥控时将红外控制码调制到载波上形成调制信号,通常还将该调制信号重复一定次数连续发送给控制电路,在红外学习时对转换的电信号进行模数转换,并从转换的电信号中解调出红外控制码。

所述处理器和微控制器在数据处理上的工作可以按照各自的能力和资源按实际需要调整,这个架构中,关键特征是:处理器将遥控指令转换为红外控制码,对学到的红外控制器与遥控指令相关联并保存。微控制器在红外遥控时负责发送调制信号,在红外学习时负责将转换的电信号由模拟信号转换为数字信号。而调制和解调工作、以及对红外控制码的滤波等工作既可由处理器执行,也可由微控制器执行。

——控制电路:在红外遥控时将调制信号送往红外发光二极管对外发送红外光信号,在红外学习时将红外发光二极管从空间接收的红外光信号转换的电信号传送给微控制器。通常,微控制器设置在一块印刷电路板(PCB)上,控制电路就形成于该印刷电路板中。

——红外发光二极管:受控于控制电路,用于发射和接收红外光信号。发射时将模拟电信号转换为红外光信号,接收时将红外光信号转换为模拟电信号。

上述四个硬件结构中,处理器是借用电子设备的,微控制器、控制电路和红外发光二极管都需要增设在电子设备内部。这不仅增加了电子设备实现红外功能的硬件成本,还占用了电子设备宝贵的机内空间。



技术实现要素:

本申请所要解决的技术问题是提供一种低成本、小体积的电子设备中的红外实现装置。为此,本申请还要提供该装置实现红外功能的方法。

为解决上述技术问题,本申请提供的电子设备中的红外实现装置包括:

——处理器,在红外遥控时,处理器根据用户操作得到遥控指令,并将遥控指令转换为红外控制码,还将红外控制码调制到载波上形成调制信号并连续发送给控制电路。处理器的I/O接口发送调制信号时对其实现数模转换。

——控制电路,在红外遥控时,将调制信号送往红外发光二极管。

——红外发光二极管,在红外遥控时,根据调制信号对外发射红外光信号。

进一步地,所述处理器采用某一I/O接口连续发送数据时,数据由一串比特表示,所述处理器在数据到达该I/O接口之前先将预计在该I/O接口的停止时段内传输的比特位删除,该I/O接口在发送数据时自动地在停止时段内保持最近发送的比特位对应的电平状态、或者保持高电平、或者保持低电平。

本申请提供的电子设备中的红外实现方法为实现红外遥控功能包括如下步骤:

步骤S401:处理器根据用户操作得到遥控指令。

步骤S402:处理器将遥控指令转换为红外控制码。

步骤S403:处理器将红外控制码调制到载波上形成调制信号。

步骤S404:处理器将调制信号连续传送给控制电路。

步骤S405:控制电路将调制信号送往红外发光二极管。;

步骤S406:红外发光二极管根据接收的调制信号,对外发射红外光信号。

进一步地,所述步骤S404中,所述连续传送数据具体包括如下步骤:

步骤S601,将处理器I/O接口的停止时段的时长用该I/O接口的时钟周期的整数倍表示。

步骤S602:在数据通过处理器I/O接口发送之前,在数字形式的数据中删除预计是在处理器I/O接口的停止时段传输的比特位。

步骤S603:在数据通过处理器I/O接口发送时,该I/O接口自动地在停止时段保持最近发送的比特位对应的电平状态、或者保持高电平、或者保持低电平。

或者,步骤S601与步骤S602的顺序互换或同时进行。

本申请取得的技术效果是所提供的红外实现装置在同样实现红外遥控和/或红外学习的效果的前提下,省略了微控制器,从而降低了硬件成本,减少了对电子设备机内空间的占用。

本申请所提供的红外实现方法将被省略的微控制器的功能合理分配给处理器,并针对处理器的I/O接口在传输及采样数据时的特性对连续传输及采样数据的方法进行了改进,以便符合传输调制信号(或采样转换的电信号)的要求。

附图说明

图1是红外遥控装置所涉及的一些重要信号的示意图。

图2是现有的电子设备中的红外实现装置的结构示意图。

图3是本申请提供的电子设备中的红外实现装置的结构示意图。

图4是本申请提供的电子设备中的红外实现方法的实施例一的流程图。

图5是本申请提供的电子设备中的红外实现方法的实施例二的流程图。

图6是本申请利用SPI接口连续发送数据的方法流程图。

图7是本申请利用SPI接口连续接收数据并对数据进行模数转换(数字化采样)的方法流程图。

图8是例一条件下SPI接口发送数据的信号示意图。

图9是例一条件下SPI接口发送数据发生瞬间抖动的信号示意图。

图10是例一条件下SPI接口接收数据的信号示意图。

图11是例一条件下SPI接口接收数据发生瞬间抖动的信号示意图。

图12是例二条件下SPI接口发送数据的信号示意图。

图13是例二条件下SPI接口发送数据发生瞬间抖动的信号示意图。

具体实施方式

如果要对图2所示的电子设备中的红外实现装置进行优化,在硬件结构方面可以考虑将控制电路的职能并入微控制器从而省略控制电路,或者将微控制器的职能并入处理器从而省略微控制器。从成本考虑,省略微控制器的思路更优一些,如图3所示。

请参阅图3,这是本申请提供的电子设备中的红外实现装置。其中实线表示实现红外遥控功能的实现过程,虚线表示实现红外学习功能的实现过程(可选)。图3所示的电子设备中的红外实现装置包括如下硬件结构。

——处理器:可以是电子设备中的中央处理器,也可以是电子设备中的图像处理器、数字信号处理器等协处理器。在红外遥控时,处理器根据用户操作得到遥控指令,并将遥控指令转换为红外控制码,还将红外控制码调制到载波上形成调制信号,通常还将该调制信号重复一定次数并连续发送给控制电路。在红外学习时,处理器从控制电路接收转换的电信号,并对转换的电信号解调即去除载波得到红外控制码和载波特征(例如载波频率、载波信号占空比等),并根据红外控制码关联对应的遥控指令,还保存遥控指令和/或载波特征。

——控制电路:在红外遥控时将接收处理器输出的调制信号,并送往红外发光二极管对外发送红外光信号;在红外学习时对红外发光二极管从空间接收的红外光信号转换的电信号进行传递和放大(或仅传递),将该转换的电信号传送给处理器。通常,控制电路形成于印刷电路板中。

所述处理器内部的各个信号都是以二进制数字的形式保存和处理。在红外遥控时,处理器向控制电路发送调制信号,处理器的I/O接口将二进制数字形式的调制信号输出为高低电平,实现数模转换。在红外学习时,处理器从控制电路接收转换的电信号,处理器的I/O接口将模拟形式的转换的电信号通过数字采样输出为二进制数字,实现模数转换。

——红外发光二极管:受控于控制电路,用于发射和接收红外光信号。发射时将模拟电信号转换为红外光信号,接收时将红外光信号转换为模拟电信号。

本申请提供的电子设备中的红外实现装置由于省略了微控制器,那么原本由微控制器实现的信号调制、连续发送、对发射信号的数模转换、对接收信号的模数转换、信号解调等过程就要改由处理器实现。就处理能力而言,电子设备中的处理器完全可以胜任这些工作,比较困难的是连续发送信号和对接收信号采样从而实现模数转换,需要选择处理器的I/O接口。

请参阅图2,如果具有微控制器,那么处理器向微控制器发送和/或接收的过程中可以临时中断,因此对处理器的I/O接口并没有严格限制。

请参阅图3,一旦省略微控制器,那么处理器向控制电路发送和/或接收(采样)数据时I/O接口最好能够持续地工作,而不会由于处理器来了更高优先级的任务而临时中断这个I/O接口的传输。但是由于调制信号整个时长在100ms左右,且红外接收设备普遍拥有10%左右的误差容忍能力,所以处理器的I/O接口即使中断几十μs,红外接收设备也能正常识别。

处理器的I/O接口分为串行通信(Serial communication)接口和并行通信(parallel communication)接口两类,前者每次只能传输一个比特(bit)的数据,后者每次能够传输多个比特的数据。由于红外实现过程要求处理器的I/O接口逐比特传输,因此只能选用处理器的串行通信I/O接口。

严格地说,处理器的所有I/O接口都不能连续地传输数据。为了发送或接收数据,I/O接口通常设有寄存器(register)、缓存(cache)、缓冲器(buffer)等用于临时存放数据。在发送数据时,I/O接口周期性地从数据缓存区域读取数据,读取时就会停止发送数据。在接收数据时,I/O接口周期性地向数据缓存区域写入数据,写入时也会停止接收数据。如果将I/O接口连续传输数据的时段称为传输时段,停止传输数据的时段称为停止时段,那么处理器的所有I/O接口在传输数据时都是由传输时段和停止时段交替组成的。

综合上面分析,要作为处理器与控制电路之间进行通讯的I/O接口,应该满足下面一些条件。其中有些条件是必须的,另一些条件则是优选的(可以满足也可以不满足)。

必须的条件包括以下三条,满足任何一条即可。其一,要求在不考虑I/O中断的前提下I/O接口的停止时段以固定的周期出现(即传输时段的时长固定),且停止时段的时长保持一致。此时,所选用的处理器I/O接口的停止时段的时长与传输时段的时长之比越小越好,优选该比值在20%以下。其二,要求在不考虑I/O中断的前提下I/O接口的停止时段的时长与传输时段的时长之比足够小,例如该比值小于或等于1%,此时允许停止时段的周期不固定和/或停止时段的时长不固定。其三,要求I/O接口的停止时段的时长足够小,例如小于或等于5μs,此时也允许停止时段的周期不固定和/或停止时段的时长不固定。

优选的条件包括以下两条,满足任何一条即可。其一,要求I/O接口不能中断。其二,允许I/O接口中断,但要求尽量少中断。此时,如果发生中断则中断时长越小越好,优选的中断时长小于或等于50μs,再优选地中断时长小于或等于红外载波信号的周期。

符合上述条件的处理器I/O接口包括SPI(Serial Peripheral Interface,串行外设接口)接口、IIC(Inter-Integrated Circuit,也作I2C)接口、串口(串行接口,serial port)、GPIO(General Purpose Input Output,通用输入输出)接口等,这些接口都可能发生中断。支持DMA(direct memory access,直接内存访问)的SPI接口更佳,因为不允许发生中断。

请参阅图4,这是本申请提供的电子设备中的红外实现方法的实施例一,仅为红外遥控功能的实现方法。所述红外实现方法包括如下步骤:

步骤S401:处理器根据用户操作得到遥控指令。

步骤S402:处理器将遥控指令转换为红外控制码。

步骤S403:处理器将红外控制码调制到载波上形成调制信号。

步骤S404:处理器将调制信号连续发送给控制电路。优选地,处理器还将调制信号重复一定次数后连续传送给控制电路。处理器的I/O接口实现调制信号的数模转换。

步骤S405:控制电路将调制信号送往红外发光二极管。

步骤S406:红外发光二极管根据接收的调制信号,对外发射红外光信号。

请参阅图5,这是本申请提供的电子设备中的红外实现方法的实施例二,仅为红外学习功能的实现方法。所述红外实现方法包括如下步骤:

步骤S501:红外发光二极管接收红外光信号并转换为电信号传送给控制电路。

步骤S502:控制电路将转换的电信号传送给处理器。优选地,控制电路还对转换的电信号进行放大。

步骤S503:处理器连续接收控制电路传送来的转换的电信号。处理器的I/O接口实现转换的电信号的模数转换,例如通过数字化采样。

步骤S504:处理器对转换的电信号进行解调得到红外控制码和载波特征。

步骤S505:处理器将红外控制码关联对应的遥控指令并保存遥控指令和/或载波特征。

如果某个电子设备中的红外实现装置同时具有红外遥控功能和红外学习功能,则在实现红外遥控功能时参照图4所示流程,在实现红外学习功能时参照图5所示流程。

所述步骤S404和步骤S503中,所述连续发送、连续接收是指在数据传输过程中允许被处理器的更高优先级任务中断,但要求尽量少发生这种中断,如能不发生这种中断则更佳。下面将以选用处理器的支持DMA的SPI接口为例,对所述连续发送、连续接收进行具体说明。

SPI接口是一种同步串行通讯接口,用于在一个主设备(master)与一个或多个从设备(slave)之间传输数据。应用在图3所示的硬件结构中,显然是处理器作为主设备,控制电路作为从设备。

SPI接口具有以下三个特性。

其一,主设备控制着SPI接口的时钟频率,通常只能在预置的几档SPI时钟频率中进行选择。例如,某处理器设有SPI接口,可供选择的SPI时钟频率包括281.25kHz、562.5kHz、1.125MHz、2.25MHz、4.5MHz、9MHz、18MHz,显然是由某个晶体振荡器提供的原始时钟频率通过分频或倍频手段得到的这几档SPI时钟频率。

其二,每个SPI时钟周期,SPI接口传输一个比特的数据,连续传输一个字(word)的数据后停止传输以用于读取和/或写入数据。字的长度是指定的,可以是8比特、12比特、16比特、32比特等。传输时段的时长是固定的,可以用SPI时钟周期的整数倍来表示。停止时段的时长也是固定的,可以用SPI时钟周期的倍数来表示,但不一定是整数倍,通常在1至2个SPI时钟周期之间。

其三,当SPI接口在发送数据时,在停止时段中,SPI接口保持为最近传输的一个比特所对应的电平状态。例如,SPI接口对外发送某个字的最后一个比特是二进制数字1对应于高电平,那么在紧跟着的停止时段内也保持高电平,在信号意义上表现为在停止时段内仍发送二进制数字1。当SPI接口在接收数据时,在停止时段中,SPI接口放弃接收数据。例如,SPI接口从外界接收某个字之后,在紧跟着的停止时段内放弃接收数据。

由于SPI接口存在以上三个特性,采用处理器的SPI接口实现所述步骤S404和步骤S503中的连续发送、连续接收就存在着一些需要克服的技术难题,本申请对此也给出了解决方案。

请参阅图6,本申请提供的采用处理器的SPI接口实现连续发送数据的方法具体包括如下步骤。

步骤S601,将SPI接口的停止时段的时长近似地用SPI时钟周期的整数倍表示,可以采用累计误差或者固定误差的表示方法。

步骤S602:在数据通过SPI接口发送之前,将准备发送的数据根据SPI时钟周期用一串二进制数字(即比特)表示,删除预计是在SPI接口的停止时段传输的比特位。

所述步骤S601与步骤S602的顺序可以互换,或者同时进行。

步骤S603:在数据通过SPI接口发送时,SPI接口自动地在停止时段保持最近所发送的比特位对应的电平状态。

请参阅图7,本申请提供的采用处理器的SPI接口实现连续接收数据并对数据进行模数转换(即连续对模拟数据进行数字化采样)的方法具体包括如下步骤。

步骤S701,将SPI接口的停止时段的时长近似地用SPI时钟周期的整数倍表示,可以采用累计误差或者固定误差的表示方法。

步骤S702:在数据通过SPI接口接收时,模拟信号的数据连续传送给SPI接口,SPI接口仅在传输时段内接收数据,而自动地在停止时段内放弃接收数据。

步骤S703:在数据通过SPI接口之后,得到的是一串比特表示的转换的电信号,每个比特位表示的时长就是一个SPI时钟周期。在预计是SPI接口的停止时段的位置补全被SPI接口放弃接收的电平所对应的比特位,补全方式例如是在停止时段补上SPI接口最近所接收的比特位。

所述步骤S701可以与步骤S702同时进行、或者放到步骤S702之后、或者与步骤S703同时进行。

需要特别强调的是,图6所示的连续发送数据方法、图7所示的连续接收数据方法不仅适用于处理器的支持DMA的SPI接口,也适用于处理器的一般SPI接口以及其他I/O接口,只要所用的处理器I/O接口满足必须的三个条件中的任意一个即可,当然能同时满足优选的两个条件中的任意一个更佳。在任何情况下,处理器的I/O接口使用的时钟频率都应为载波频率的两倍以上。

下面以两个例子对图6所示的采用SPI接口连续发送方法、图7所示的采用SPI接口连续接收方法进行说明。

例一:假设载波信号是频率为38kHz、占空比为1/3的方波。SPI时钟频率为562.5kHz,字长是8比特。SPI接口的停止时段的时长是1.8个SPI时钟周期。

请参阅图8,此时载波信号的周期是26.32μs。每个载波信号周期内高电平持续8.77μs,低电平持续17.54μs。SPI时钟周期是1.78μs。

首先,由于停止时段的时长不是SPI时钟周期的整数倍,需要近似地用SPI时钟周期的整数倍来表示各个停止时段的时长。表1给出了一种累计误差的表示方法示例。这种累计误差的表示方式可以描述为:某一个停止时段的时长与之前的累计误差之和,按照四舍五入取整得到采用SPI时钟周期来近似地表示该停止时段的时长的数量。本次累计误差=停止时段的时长+之前的累计误差-本次采用SPI时钟周期的数量。

表1:累计误差的停止时段的表示方法示例(单位均为:SPI时钟周期)

请参阅表1,假设第n个停止时段的时长加上之前的累积误差是1.8个SPI时钟周期,即之前的累积误差是0,那么用2个SPI时钟周期表示第n个停止时段,本次累计误差是-0.2个SPI时钟周期。

第n+1个停止时段的时长加上之前的累计误差后是1.6个SPI时钟周期,那么用2个SPI时钟周期表示第n+1个停止时段,本次累计误差是-0.4个SPI时钟周期。

第n+2个停止时段的时长加上之前的累计误差后是1.4个SPI时钟周期,那么用1个SPI时钟周期表示第n+2个停止时段,本次累计误差是0.4个SPI时钟周期。

第n+3个停止时段的时长加上之前的累计误差后是2.2个SPI时钟周期,那么用2个SPI时钟周期表示,本次累计误差是0.2个SPI时钟周期。

第n+4个停止时段的时长加上之前的累计误差后是2个SPI时钟周期,那么用2个SPI时钟周期表示第n+4个停止时段,本次累计误差是零。

以此类推。

采用累计误差的停止时段表示方法,好处是调制信号(或转换的电信号)的总时长较为稳定。以表1为例,不计算其它误差时,整个信号通过SPI接口发送或接收后增加或缩短的时长在前例中就是±0.4倍的SPI时钟周期。采用累计误差的停止时段表示方法,坏处是调制信号(或转换的电信号)中的载波周期和载波信号占空比会发生微弱的抖动。

用SPI时钟周期的整数倍来表示停止时段,另一种做法是将停止时段直接向上或向下取整为SPI时钟周期的整数倍。本例中,SPI接口的停止时段的时长是1.8个SPI时钟周期,例如统一用2个或1个SPI时钟周期来表示停止时段的时长。这种固定误差的停止时段表示方法,好处是调制信号(或转换的电信号)中的载波周期和载波信号占空比将保持稳定,坏处是整个信号的时长将改变。如果将1.8倍SPI时钟周期的停止时段均用2个SPI时钟周期来表示,不考虑其他误差时,一个108ms的调制信号(或转换的电信号)将变成110ms以上。

实际操作中,累计误差或固定误差的表示方法都可以。考虑到当前市场上的一般红外接收设备的接收特性,对于同样的调制信号,采用累计误差的方法遥控距离要远一些。

在数据通过SPI接口发送之前,根据SPI时钟周期将准备发送的数据用一串比特表示。本例中,一个载波信号内的高电平时长相当于4.93个SPI时钟周期,低电平时长相当于9.87个SPI时钟周期,因此四舍五入近似地分别用5个、10个SPI时钟周期来表示一个载波信号内的高、低电平。SPI接口传输的是二进制数字1或0,例如分别表示载波信号的高、低电平,那么理论上需要15位二进制数字才能表示一个载波信号。这种近似地用SPI时钟周期的整数倍来表示载波信号内的高电平和低电平的方法,也会改变调制信号(或转换的电信号)的总时长。图8中第一个完整的载波信号总共耗时15个SPI时钟周期进行发送,实际传输的载波周期就成为26.67μs,相当于实际传输的载波频率变成了37.50kHz,即产生了载波频率偏差。调制信号是用载波信号来表示的,因此也就用二进制数字表示出了调制信号。

得到用二进制数字(比特)表示的调制信号后,在数据通过SPI接口发送之前,删除预计是在SPI接口的停止时段内传输的比特位。调制信号是由二进制数字表示的,每个二进制数字对应于一个SPI时钟周期。而前面根据累计误差或固定误差的方法,可以确定哪些SPI时钟周期对应于各个SPI接口的停止时段。

在数据通过SPI接口发送时,SPI接口自动地在停止时段保持为最近所发送的比特位对应的电平状态,但是自动保持的电平状态不一定与删除掉的比特位对应的电平状态一致。

图8中发送的载波信号的上升沿U1、U2以及下降沿D1、D2都落在了SPI接口的传输时段内,含传输时段的起始时刻,不含传输时段的结束时刻。所述传输时段的起始时刻就是上一个停止时段的结束时刻。所述传输时段的结束时刻就是紧跟着的下一个停止时段的起始时刻。此时SPI接口在停止时段内自动保持的电平状态与删除掉的比特位对应的电平状态一致。

如果发送的载波信号的高低电平转换恰好发生在SPI接口的停止时段内,含停止时段的起始时刻,不含停止时段的结束时刻,那么由于SPI接口在停止时段内将保持为最近传输的比特位对应的电平状态,此时SPI接口在停止时段内自动保持的电平状态与删除掉的比特位对应的电平状态不一致,这将导致载波频率瞬间抖动以及载波信号占空比瞬间抖动。请参阅图9,此时载波信号的下降沿D1落在了SPI接口的第n个停止时段的起始时刻,载波信号的上升沿U2落在了SPI接口的第n+1个停止时段的起始时刻。此时SPI接口在停止时段内自动保持的电平状态与删除掉的比特位对应的电平状态不一致。为了发送图9中第一个完整的载波信号,从外界来看,此时通过SPI接口先是在7个SPI时钟周期内传输了高电平相当于传输了7位二进制数字1,然后是在10个SPI时钟周期内传输了低电平相当于传输了10位二进制数字0。此时通过SPI接口传输的载波信号总共耗时17个SPI时钟周期,实际传输的载波周期就成为30.22μs,相当于实际传输的载波频率在这一瞬间变成了33.09kHz,即发生了载波频率的瞬间抖动。这个实际传输的载波信号中,占空比也在这一瞬间变成了7/17,即发生了载波信号占空比的瞬间抖动。这种载波频率和/或载波信号占空比的瞬间抖动,并不会影响整个调制信号的时长。

在例一的条件下采用SPI接口连续接收数据并对所接收数据进行模数转换(即连续对模拟数据进行数字化采样),如图10、图11所示。

首先,将SPI接口的停止时段的时长近似地用SPI时钟周期的整数倍表示,可以采用上述累计误差或者固定误差的表示方法。

其次,在数据通过SPI接口接收时,控制电路将模拟形式的转换的电信号连续传送给SPI接口。但是SPI接口仅在传输时段内接收数据,而在停止时段内放弃接收数据。SPI接口在接收数据时,按照每个SPI时钟周期看,如果所接收数据在该SPI时钟周期为高电平就用二进制数字1来表示,如果所接收数据在该SPI时钟周期为低电平就用二进制数字0来表示。

再次,在数据通过SPI接口之后,得到的是一串二进制数字表示的转换的电信号,每个比特位表示的时长就是一个SPI时钟周期。前面根据累计误差或固定误差的方法,可以确定哪些SPI时钟周期对应于各个SPI接口的停止时段。在预计是SPI接口的停止时段的位置补全被SPI接口放弃接收的比特位。补全方式例如是:在预计是SPI接口的停止时段的位置补上SPI接口最近所接收的比特位,但是所补全的比特位不一定与SPI接口放弃接收的电平所对应的比特位一致。补全方式还可以是:总是补上二进制数字1,或者总是补上二进制数字0。

请参阅图10,如果接收的载波信号的高低电平转换都落在了SPI接口的传输时段内,含传输时段的起始时刻,不含传输时段的结束时刻,那么后续补全的比特位与SPI接口在停止时段内放弃接收的电平所对应的比特位一致。

请参阅图11,如果接收的载波信号的高低电平转换恰好发生在SPI接口的停止时段内,含停止时段的起始时刻,不含停止时段的结束时刻,那么后续补全的比特位与SPI接口在停止时段内放弃接收的电平所对应的比特位不一致,这将导致载波频率瞬间抖动以及载波信号占空比瞬间抖动。这部分的分析与图9相同,不再赘述。

例二:现在将SPI时钟频率改为2.25MHz,其他条件与例一相同。

请参阅图12,此时SPI时钟周期改为了444.44ns。由于停止时段的时长不是SPI时钟周期的整数倍,也要近似地用SPI时钟周期的整数倍来表示,可采用累计误差或固定误差的方法,不再赘述。

在数据通过SPI接口发送之前,根据SPI时钟周期将准备发送的数据用一串比特表示。本例中,一个载波信号内的高电平持续时间相当于19.74个SPI时钟周期,低电平持续时间相当于39.47个SPI时钟周期,因此四舍五入近似地分别用20个、39个SPI时钟周期来表示一个载波信号内的高、低电平。调制信号是用载波信号来表示的,因此也就用二进制数字表示出了调制信号。

得到用二进制数字(比特)表示的调制信号后,在数据通过SPI接口发送之前,删除预计是在SPI接口的停止时段内传输的比特位。

在数据通过SPI接口发送时,SPI接口自动地在停止时段保持为最近所发送的比特对应的电平状态,但是自动保持的电平状态不一定与删除掉的比特位对应的电平状态一致。

图12中载波信号的上升沿U1、U2以及下降沿D1都落在了SPI接口的传输时段内,含传输时段的起始时刻,不含传输时段的结束时刻,此时SPI接口在停止时段内自动保持的电平状态与删除掉的比特位对应的电平状态一致,因此未发生载波频率瞬间抖动以及载波信号占空比瞬间抖动。此时通过SPI接口传输的载波信号总共耗时59个SPI时钟周期,实际传输的载波周期就成为26.22μs,相当于实际传输的载波频率变成了38.14kHz,即产生了载波频率偏差。

请参阅图13,此时载波信号的上升沿U1落在了SPI接口的第n个停止时段的起始时刻,下降沿D1落在了SPI接口的第n+2个停止时段的起始时刻,上升沿U2落在了SPI接口的第n+6个停止时段内第2个SPI时钟周期的起始时刻。由于载波信号的高低电平转换恰好发生在SPI接口的停止时段内,含停止时段的起始时刻,不含停止时段的结束时刻,此时SPI接口在停止时段内自动保持的电平状态与删除掉的比特位对应的电平状态不一致,这将导致载波频率瞬间抖动以及载波信号占空比瞬间抖动。为了接收图13中第一个完整的载波信号,从外界来看,此时通过SPI接口先是在19个SPI时钟周期内传输了高电平相当于传输了19位二进制数字1,然后是在39个SPI时钟周期内传输了低电平相当于传输了39位二进制数字0。此时通过SPI接口传输的载波信号总共耗时58个SPI时钟周期,实际传输的载波周期就成为25.78μs,相当于实际传输的载波频率在这一瞬间变成了38.79kHz,即发生了载波频率的瞬间抖动。这个实际传输的载波信号中,占空比也在这一瞬间变成了19/58,即发生了载波信号占空比的瞬间抖动。

在例二的条件下采用SPI接口连续接收数据并对所接收数据进行模数转换(即连续对模拟数据进行数字化采样),与例一相同,不再赘述。

比较以上两个例子可以发现,由于SPI时钟频率只能在预置的几档中选择,很难用整数个SPI时钟周期来表示载波信号,只能近似地四舍五入取整,这使得通过SPI接口传输的调制信号(或转换的电信号)的载波频率发生了固定的偏差。例一中的SPI时钟频率是562.5kHz,载波频率原本为38kHz,实际传输的载波频率变成了37.50kHz,即载波频率的偏差率为-1.32%。例二中的SPI时钟频率是2.25MHz,载波频率原本为38kHz,实际传输的载波频率变成了38.14kHz,即载波频率的偏差率为0.37%。一般而言,SPI时钟频率选取得越高,就可以用越多数量的SPI时钟周期来表示载波信号,载波频率偏差就越小,代价是SPI时钟频率越高则SPI接口需要越大容量的数据缓存区域。

除此以外,由于SPI接口在传输数据时由传输时段和停止时段交替组成,并且停止时段的时长可以是非整数倍的SPI时钟周期,这使得通过SPI接口传输的调制信号(或转换的电信号)的整个时长可能发生变化,载波周期和载波信号占空比也可能发生微弱的抖动。

除此以外,由于SPI接口在发送数据时停止时段内保持为最近传输的一个比特位对应的电平状态,在接收数据时停止时段内放弃接收,这使得通过SPI接口传输的调制信号(或转换的电信号)的载波频率和/或载波信号占空比在特定情况下会发生瞬间抖动。所述特定情况是载波信号的上升沿和/或下降沿遇到了SPI接口的停止时段,含停止时段的起始时刻,不含停止时段的结束时刻。例一中的SPI时钟频率是562.5kHz,载波频率原本为38kHz,载波信号占空比原本为1:3。在图9所示情况的一瞬间载波频率变成了33.09kHz,载波信号占空比变成了7/17,即载波频率的瞬间抖动率为-12.92%,载波信号占空比的瞬间抖动率为23.53%。例二中的SPI时钟频率是2.25MHz,载波频率原本为38kHz,载波信号占空比原本为1:3。在图13所示情况的一瞬间载波频率变成了38.79kHz,载波信号占空比变成了19/58,即载波频率的瞬间抖动率为2.08%,载波信号占空比的瞬间抖动率为-1.72%。一般而言,SPI时钟频率选取得越高,就可以用越多数量的SPI时钟周期来表示载波信号,在特定情况下的载波频率抖动和/或载波信号占空比抖动就越小,代价也是SPI时钟频率越高则SPI接口需要越大容量的数据缓存区域。

通过SPI接口来传输调制信号(或转换的电信号),载波频率偏差是一直发生的,整个信号的时长有可能会发生变化,载波频率和载波信号占空比也是有可能会发生轻微抖动,载波频率瞬间抖动与载波信号占空比瞬间抖动还会在特定情况发生时的一瞬间发生的。如果选取合适的SPI时钟频率,就能使这些偏差和瞬间抖动都在硬件设备和/或软件算法可以接受的范围内,不会影响传输结果的准确性,同时又能尽量降低对SPI接口的数据缓存区域的容量要求。特别是如果能使得红外载波周期为SPI时钟周期的整数倍或接近整数倍,和/或使得SPI接口的停止时段的时长为SPI时钟周期的整数倍或接近整数倍,那么就能使数据传输尽可能地保持准确。

以上是以SPI接口为例,详细分析了采用处理器的SPI接口与控制电路之间如何实现连续传输数据,如何克服一些技术难点。基于相同的原理,也可将SPI接口改为串口、IIC接口、GPIO接口等。串口与SPI接口的主要区别在于:其一,串口可能发生中断。其二,串口在发送数据时,在停止时段内固定为高电平或低电平。那么采用图6和图7所示方法,通过串口发送的数据可能由于中断而分开,还可能会在停止时段内产生毛刺现象。考虑到调制信号通常重复数次连续发射,红外接收设备也有一定的容错能力,根据实验验证,采用串口进行连续数据传输在红外实现方法上是可行的,并不会影响红外遥控效果,但是会使得红外遥控距离缩短。

以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1