如何利用PSoC设计红外线通信测控系统
扫描二维码
随时随地手机看文章
摘 要: 在分析研究红外线发射器和接收器原理的基础上,以可编程片上系统PSoC芯片为核心部件,利用PSoC集成开发环境Creator内嵌的固件元件,进行了红外线通信测控系统的软件和硬件设计。PSoC是一款以ARM和CPLD两大功能部件组成的混合处理器。在Creator环境下,固件元件类似于面向对象程序设计的控件,使硬件设计软件化,与硬件相关的源程序编译器自动生成。采用PSoC设计的红外线发送与接收电路具有硬件设计简单、软件设计图形化、可以充分利用PSoC提供的固件元件的优点。PSoC非常适合在通信和测控中应用。
关键词: Creator;PSoC;红外线通信;元件;固件
红外线通信由于结构简单、成本低,在家用电器、仪器仪表、工业控制中得到了广泛的应用。实现红外线通信的方案很多,但主要是由专有集成电路和单片机实现两种。由专用集成电路实现的红外线通信主要是各种遥控器,但是它难以和单片机接口,应用的灵活性差。单片机实现的红外线发射器与接收器能方便地与其他电路模块连接组成应用系统,在各种测量和控制系统中有大量应用。本文介绍一种由特殊的单片机,即可编程片上系统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]。