当前位置:文档之家› 用红外通信原理的设计与实现 红外通信协议 含电路图

用红外通信原理的设计与实现 红外通信协议 含电路图

用红外通信原理的设计与实现红外通信协议含电路图

1 引言

在电子消费领域当中,红外产品的使用较为普遍,它多用于简单的近距离控制,如家电,玩具,各种抄表系统。本文以Freescale 8位高性能、低功耗单片机MC9S08GT60为载体,详细介绍红外通信的硬件和软件设计过程及通信协议的使用。

HCS08系列的MCU是Freescale半导体公司最新推出的8位单片机,具有多种低功耗模式,更高的工作频率,并集成了片上调试器,而且资源丰富,因此采用了该系列的MC9S08GT60作为载体详细讨论了一个简单实用的红外通信开发系统。

红外通信过程主要由红外发射和红外接收两个过程,首先将数字信号送给红外发射电路,经该电路的调制转变成红外光信号在空中传输,然后红外接收电路收到该红外光信号,经过该电路的解调,将此红外光信号还原成可被单片机处理的信号,由单片机内部处理得到原来的数据编码。

2 红外通信协议

协议的目的是给收发双方一个约定,使其能够进行同步,并正确的收发数据。本设计使用了类同步协议。当红外接收器未收到信号时,不产生定时操作,否则,首先接收起始位‘0’,并触发中断,启动定时器接收数据,然后判断是否为起始位,如果是,则继续接收数据,否则将定时器复位,重新检测起始位,在接收第二个停止位时,会触发一次中断来检测第一次接收的停止位是否正确,如果不正确,则复位定时器,重新接收,否则已经正确接收该数据段。

3 红外通信的原理分析

红外通信在空中传输的是载波信号,当有载波通过时,接收端输出数字信号‘0’,反之,输出数字信号‘1’。因此在发射电路发送的功能指令码,一般采用多位二进制串行码。本文中,红外通信数据采用脉冲编码,就是将每位数据信号用一个脉冲来表示,脉宽为526 μs,两个这样的脉冲周期表示‘1’,一个这样的脉冲周期表示‘0’。这样的脉冲信号都调制在频率为38 kHz的载波上再发送出去,调制后在空中传输的信号就是具有一定时间间隔的载波信号,其占空比由数据编码决定。在红外接收端,数据处理的过程正好相反,在接收红外光信号之后,会经过整形、放大、滤波、调制等一系列处理,然后在其输出端输出一系列的单片机能够处理的数据信号。

4 红外通信硬件设计原理

4.1 发送电路的硬件设计

HCS08GT60单片机内部有两个TPM模块,每个模块有两个通道,可以用任意一个通道的PWM功能,输出38 kHz的载波信号,本文编程设计根据实验条件的要求采用了TPM1通道1中心脉宽输出功能产生

38 kHz红外载波信号。而PTA7口作为普通的输入输出口,产生一定脉宽的方波信号,作为数据编码信号输入。硬件原理图如图1所示。

原理图中,电气节点CODE跟PTA7口相连,产生数据编码;电气节点CLK跟TPM1通道1相连,产生38 kHz红外载波信号。三极管基极串接的电阻和R5起到限流保护的作用,三极管本身则具有信号放大的功能,另外两个三极管级联将编码调制在38 kHz的载波上通过红外发射器发射出去。当编码为‘1’时,Q1,Q2截止,红外发射器上无电流通过,发射低电平信号,当编码为‘0’时,Q1,Q2导通,此时载波信号通过Q2放大在发射器上体现出38 kHz的载波信号。因此在PTA7端口输入不同的数据编码,通过该发送电路,在发射器上会出现具有一定间隔的38 kHz载波信号,经发射器将该载波信号转化成光信号发射出去。载波脉冲调制信号的时序图如图2所示。

4.2 接收电路的硬件设计

红外接收电路中使用了HS0038A接收器,HS0038A的内部逻辑框图如图3所示。

由此可看出该接收器内部实现了红外接收、放大、滤波及解调功能,当收到红外载波光信号时,红外接收器输出低电平,反之红外接收器输出高电平,从而可以将时断时续的红外光信号调制成连续的方波信号,经单片机内部处理可以将其转换成原来的数据。

硬件原理图如图4所示。

由于HS0038A内置滤波并且采用环氧塑封,可以作为红外滤波器,因此电路中不需要另外增加滤波器,并且HS0038A具备较强的抗干扰能力。

红外接收器输出引脚RevData连接在TPM2通道0,使用了TPM的输入捕捉功能,在上升沿时发生输入捕捉,比较两次捕捉发生时通道寄存器TPM2C0V的值,可以得到一个周期脉冲的宽度,根据发射数据的时序图,就可知道不同的脉冲宽度对应的数据是什么,由此就可将原数据还原出来。

5 红外通信的软件设计

5.1 38 kHz红外载波设计

MC9S08GT60使用了外部4 MHz的晶振频率,通过配置ICG1=0x78,ICG2=0x30,将总线频率控制为20 MHz。MC9S08GF60内部有定时/脉冲输出模块,将TPM1的状态控制寄存器的位CPWMS置1,则TPM1工作在中心脉宽输出模式;将TPM1通道0的状态控制寄存器的ELS0B:ELS0A设置为10,控制发生输出比较时将脉冲信号置高或置低。为使TPM1C1输出38 kHz频率的载波信号,就要对20 M Hz的总线频率进行526分频,即526个20 MHz的方波周期产生一个38 kHz的方波周期,因为是中心脉宽输出模式,输出脉冲宽度是通道值寄存器TPM1C1V中值的2倍,输出脉冲周期是通道预置寄存器T PM1M0D中值的2倍,因此令TPM1C1V=131,TPM1M0D=263,启动定时器后,定时器1的计数器TP

M1CNTL在自增1计数时,当该值跟通道值寄存器TPM1C1V中值匹配时,将脉冲输出信号拉低,定时器1的计数器TPMlCNTL在计数值开始进行自减1操作时,当下降到跟通道寄存器TPMlClV时,将脉冲输出信号拉高。中心脉宽输出的时序图如图5所示。从此通道输出的方波频率通过示波器查看为37.9 kHz 或38 kHz。

5.2 数据编码的设计

MC9S08GT60单片机有36个端口,大部分端口都具有双重功能,本文使用端口PTA7,配置该端口的方向寄存器PTADD_PTADD7为1,即PTA7为输出,根据脉冲编码的规则,进行不同的延时操作,使该端口输出一定宽度的数据脉冲,通过示波器查看该端口,可看到稳定的脉冲序列。

5.3 接收端信号的输入捕捉设计

将TPM2的状态控制寄存器的位CPWMS置0,则TPM2可以工作在输入捕捉模式、输出比较模式、边沿脉冲输出模式;为使TPM2通道0工作在输入捕捉方式,需要进一步设置TPM2通道0状态控制寄存器,将TPM2C0SC的模式选择位MS0B:MS0A设置为00,选择了输入捕捉方式,此外,要设置捕捉发生在什么条件下,那么需要设置TPM2COSC中的极性选择位ELS0B:ELS0A,使其为01,目的是在该引脚出现上升沿时发生捕捉。在发生捕捉时,通道值寄存器会将定时寄存器的值进行锁存,因此比较两次输入捕捉时,通道值寄存器的内容,根据编码规则,可知道该值对应的编码是‘1’或‘0’。此外通道值寄存器是16位的,如果希望通过串口调试窗口查看比较结果,因为串口接收数据缓冲寄存器是8位的,那么可以将其分解为两个8位的数据通过串口发送。

以下是输入捕捉的中断子程序:

程序功能描述:将捕捉的数据发往串口查看,这样不管用什么发射器,都可以通过观察串口数据得到识别码,完成不同的功能。

相关主题