基于PSoC的红外线通信测控系统
2012-08-20于小亿
韩 旭,于小亿
(兰州大学 信息科学与工程学院,甘肃 兰州730000)
红外线通信由于结构简单、成本低,在家用电器、仪器仪表、工业控制中得到了广泛的应用。实现红外线通信的方案很多,但主要是由专有集成电路和单片机实现两种。由专用集成电路实现的红外线通信主要是各种遥控器,但是它难以和单片机接口,应用的灵活性差。单片机实现的红外线发射器与接收器能方便地与其他电路模块连接组成应用系统,在各种测量和控制系统中有大量应用。本文介绍一种由特殊的单片机,即可编程片上系统PSoC组成的红外线通信测控系统的应用实例。PSoC5是由Cypress公司生产的ARM Cortex-M3和CPLD两大部分组成的芯片。它以固件元件的模式提供了许多模拟和数字功能单元,在集成开发环境Creator的支持下,这些功能单元和元件在画板上放置、连接、引脚定义并进行属性配置形成设计原理图,这个原理图的功能由CPLD实现并与ARM微处理器连接。Creator的编译器将各个元件生成其对应的C语言文件,开发者只需在C语言框架程序中修改或编写中断、DMA和main程序即可完成软件设计。这种图形化编程方法不需要开发者了解PSoC芯片的底层硬件结构,编写的代码非常少,降低了开发的技术难度[1]。本设计所采用的PSoC实施方案对其他嵌入式设计也具有一定的指导作用。
1 红外线通信测控系统构成
红外线通信测控系统的结构如图1所示。发送电路的电阻 R1为 510 Ω,R2为 10 Ω,晶体管 T1为 9013。 主机可以是任何带有串行接口的计算机或嵌入式装置,通过串行接口将数据传送到PSoC或接收PSoC的数据。在发送端,PSoC将直接连接模拟量和数字量,串口接收的数据通过红外线发射电路发送出去。在接收端,一体化接收头输出的信号送到PSoC,PSoC接收到一帧完整的信息后,处理后通过串行接口送到主机,也可以直接输出模拟量和数字量,并在LCD显示出来[2]。
2 红外线通信测控系统固件元件原理图设计
红外线通信测控系统发送和接收端电路都使用了多个固件元件,受篇幅限制,结合发射和接收电路的原理叙述,只对与发射和接收密切相关的几个元件做详细介绍,了解和掌握PSoC元件的属性设计及使用方法。
2.1 红外线通信测控系统发射电路
红外线通信测控系统的发送端固件元件原理图如图2所示。外部的传感模拟信号由引脚Pin_4输入,经程控增益放大器PGA放大后,送入模数转换器ADC转换成数字量,转换结束产生isr_2中断,在中断子程序中将结果读入ARM处理器。外部连接的开关量通过引脚Pin_2和 Pin_3接入状态寄存器Status_Reg,外部主机的控制数据经串行接口UART被ARM处理器接收。将上述数据组装成发送的4 B 32 bit帧信息,第1字节高4位是设备码,低4位是命令码,第2字节是发送的开关量,第3和4字节是16 bit模拟量。红外线通信测控系统发送端涉及的元件有多个,篇幅所限,只介绍与通信相关的几个元件。
首先介绍脉冲宽度调制元件PWM[3],要使用的元件必须进行属性配置,PWM的输入时钟由时钟元件Clock_1提供,频率设置为1 MHz。PWM的属性配置如图3所示。由通用数字块UDB实现PWM元件,分辨率为16 bit,因为红外线通信传送的是频率为38 kHz的调制脉冲波,所以 PWM的周期为 26 μs,为了使输出波形占空比为 1:1,PWM的比较值设置为 13 μs,比较类型设置为Less。当然,在实际使用中可以将占空比调整为1:3、1:4等以达到增加发射距离和省电的目的。这样,PWM元件启动后,就能在PWM端输出连续的方波。定时器Timer的属性配置如图4所示,模块由PSoC内部的UDB实现,分辨率为 24 bit,因为红外线通信的数据 0由 560 μs高电平和 560 μs低电平组成,数据 1由 560 μs高电平和1 680 μs低电平组成,所以设置定时器周期为 560 μs,并且在定时器终端计数TC时产生中断。
进行红外线通信的数据发送,首先发送启动码,启动码由9 ms的高电平和4.5 ms的低电平组成,接着发送由0或1组成的32 bit数据码。PWM和Timer启动后,当有数据传输时,将Control_Reg_2和Control_Reg_1寄存器置1,Pin_1端输出38 kHz方波。当 Timer产生 16次 isr_1中断(9 ms时间到),将 Control_Reg_1置0,Pin_1端无脉冲输出,当Timer产生8次isr_1中断(4.5 ms时间到),启动码发送完毕。接着发送32 bit数据, 先发送560 μs的高电平, 将Control_Reg_1置1,Pin_1端输出38 kHz方波。当 Timer产生1 次 isr_1 中断(560 μs时间到),将 Control_Reg_1 置 0,Pin_1端无脉冲输出,直到Timer产生1次(如果数据是0)或 3次(如果数据是 1)isr_1中断,直至将 32 bit数据发送完毕[4-5]。
2.2 红外线通信测控系统接收电路
红外线通信测控系统的接收端固件元件原理图如图5所示。将寄存器Control_Reg_1置1,红外线接收头输出的信号通过Pin_1引脚接到定时器Timer的捕获端capture,在 Timer的属性配置中,下降沿捕获,捕获产生中断,设置分辨率为32 bit,周期为4 294.967 s。当捕获发生后,将前次与本次捕获值相减,如果接近13.5 ms,就找到了本次数据传输的启动码,继而接收32 bit数据码。如果两次捕获值的差接近1.12 ms,接收的这位是0,如果两次捕获值的差接近2.24 ms,接收的这位就是1。接收到32 bit数据在LCD显示出来,根据第1字节低4位功能码,确定是进行本地控制还是经过串行接口UART传输给上位机。如果是本地控制,则将接收的第2字节输出到控制寄存器Control_Reg_2,第3字节输出到数模转换器VDAC8_1[6]。
3 红外线通信测控系统应用程序设计
在Creator开发环境支持下,编译器自动生成了固件元件的C语言源代码。但是,中断子程序和main子程序仅提供了程序框架,子程序内容需要开发者根据固件元件原理图所要完成的任务来编写。在工作空间浏览区找到元件的源程序,打开后在编辑区找到中断子程序框架,在里面嵌入应用的源代码即可。在main主函数中需要对使用的元件进行初始化和启动(有的元件不需要),根据应用程序流程调用元件的子程序和函数。红外线通信测控系统的发送与接收主程序流程图如图6和图7所示。
利用PSoC强大的图形化集成开发环境Creator提供的固件元件实现红外线通信测控系统,通过简单的软件设计实现硬件电路是一种值得重视和推广的嵌入式系统开发方法。该设计能可靠地将发送端数据送到接收端,实现控制功能或与其他设备的通信。
[1]叶朝辉,华成英.可编程片上系统(PSoC)原理及实训[M].北京:清华大学出版社,2008.
[2]余成波,谢东坡.网络化测控技术与实现[M].北京:高等教育出版社,2009.
[3]Cypress MicroSystems,Inc.CY8C55FamilyDatasheet[EB/OL].(2011-01-05)[2011-04-02].http://www.cypress.com/?rID=37581.
[4]钱敏,曹云鹏,章敏,等.基于FPGA/HDL的红外遥控接收信号解码器设计[J].通信技术,2009,42(8):219-224.
[5]张仁俭.基于89C2051单片机的红外遥控装置及应用[J].航天制造技术,2005(3):21-23.
[6]韩喜春,高旭东,张春艳.基于PSoC的通用计数器设计[J].黑龙江工程学院学报,2011,25(3):48-52.