1 系统组成结构
SoC(System on Chip)是将整个电子系统集成在同一芯片上的片上系统,或称为系统级芯片。2000年,Cypress公司推出了完全基于通用IP核,由可编程选择来构成产品的SoC。这种可编程选择的SoC取名为PSoC,它是由多种数字和模拟器件、微处理器、处理器外围单元、外围接口电路构成的,在周围集成的模拟和数字外围器件阵列都是动态可配置,而且利用芯片内部的可编程互联阵列,还可以有效地配置片上模拟和数字资源,从而构成可编程片上系统。该装置主要由PSoC CY8C29466芯片并扩展以简单的外围接口电路构成。可通过PSoC芯片的开发工具PSoC Designer4.3软件来测量未知方波的频率(0~200kHz)、输出可调频率和占空比的方波(0~500kHz)、进行UART通信并显示相应的数据(00H~FFH)等功能。
本装置的特点是将测量频率、PWM输出和UART通信集成到了一起,而且测量频率的范围比较大,且输出的PWM精度高,最重要的是可在硬件上节省一部份外围设备,因而缩减了印刷板的空间和功耗。
1.1 未知方波信号频率的测量
该功能可用来监测外部的事件和输入信号。当外部事件发生或信号发生变化时,将在指定的输入捕捉引脚上发生一个指定的沿跳变(上升沿),定时器捕捉到该特定的沿跳变后,捕获事件将会把计数器当前的数值传输到数据寄存器中,这样,捕获值就可以直接从数据读出。然后,通过记录输入信号的跳变沿,就可用该软件算出输入信号的周期。
在其他的单片机上测量方波信号的频率也可运用定时器的输入捕捉功能,由于定时器都是固化好的。且一般为8~16位,而PSoC芯片内置8~32位的定时器和计数器,并且时钟最高可达24MHz,故可任意调用以达到较高的测量范围。
若定时器的系统时钟SYSCLOCK为24 MHz,分频之后为FCLOCK=SYSCLOCK/368.3,而周期寄存器的值PERIOD为65536.0;那么,采样的数值将为:FSAMPLE=FCLOCK/PERIOD。这样,当定时器有溢出时,频率fFreqValue的计算公式如下:
f=(NFlow×65535+NTick)FSAMPLE;
而定时器没有溢出时的计算公式为:
f=NTickFCLOCK/NCount;
式中,NFlow是定时器溢出的次数,NTick是定时器当前计数值,NCount是计数器当前计数值。
整个系统选用的是数字模块中的16位定时器和24位计数器,以及模拟模块中的比较器。定时器的捕捉使能端与比较器相连,计数器的主要作用是为定时器提供一个采样频率。比较器的作用是将一个模拟量电压信号与一个参考电压相比较,并在二者幅度相等的附近输出一个电压的跃变信号,然后再相应输出高电平或低电平。比较器的应用既节省了外围设备,又提高了测量的准确性,同时也给测量带来了很大的方便。
1.2 输出可调频率和占空比的方波
脉宽调制波(PWM)的输出是利用定时器的比较功能。通过更改比较寄存器(CompareValue)值在0到周期(Period)寄存器填充值之间变化,定时器就可以输出一定占空比的方波。当比较条件满足后,定时器输出高电平;而在Period寄存器自动装入预置数的后一个周期,定时器将输出低电平。所以,定时器输出波形的占空比可用下式表示:
Duty=n/(N+1)
式中,Duty为输出波形的占空比,n为比较寄存器的填充值,N为周期寄存器的填充值。
在计算定时时间时,可设置定时器应用程序接口以修改计数器Period值,其输出周期值与填充周期的值之间的关系如下式所示:
T=t(N+1) 式中,t为定时器计一次数所需要的时间,N为周期寄存器的填充值,N加1是因为计数器是计数到0结束而不是到1结束。因此,如果要实现可调占空比和周期的输出,其硬件电路只需要两个电位计即可,而在软件编程中只要将采集到的A/D数据寄存器的值经过计算之后再赋给定时器预置周期寄存器和对应通道的输出比较寄存器中,并通过计算得出相应的频率和占空比,就可通过调节电位计输出不同周期和占空比的方波。
要实现可调频率和占空比并不难,但要达到一定的范围和精度,使用一般单片机就比较困难了。由于CY8C29466型PSoC芯片的定时器为8~32位,A/D转换器为6~14位可调,所以,本装置选择了12位ADCINC和24位计数器,并选择调节精度较高的电位计,因为这样可以输出较高范围和精度的PWM波形。
在与汽车电子有关的教学和实验中,PWM波的应用范围很广,电动机控制中也广泛使用PWM,此外,在发动机电子控制中,喷油器喷射油量的控制一般也是由PWM控制的。
1.3 UART通信和相应数据的显示
通过UART (Universal Asynchronous Receiver/Transmitter)可实现串行通信中的异步数据传输,它是一个全双工异步收发器,采用RS232通信协议,可通过两根电缆同时接收和发送数据。PSoC中的UART用户模块是PSoC数字模块,该模块接收和发送的字符为一个数据,数据包括4部分:起始位、数据位、奇偶校验位、停止位。另外,UART数据模块也支持可编程时钟、发送和接收中断以及轮询操作。UART数字模块也可提供应用程序接口(API)程序,以给编程带来方便。它可由一个串行接收器和一个串行发送器组成,分别为RX UART和TX UART。
(1)通用异步接收器RX-UART
异步接收器需要有关通信类型的数字PSoC模块,它有自己的RX缓冲区寄存器、RX移位寄存器以及RX控制寄存器。可以使用UART用户模块固件中的API程序来对RX控制寄存器进行初始化和配置。本装置的RX初始化包括UART无奇偶校验、满足RX寄存器条件的中断使能。
当检测到RX输入起始位到来时,RX模块中的除8时钟开始启动,然后开始对输人的数据位进行异步接收。而在下一个8位时钟的上升沿到来时,输入的数据将被接收并送到RX移位寄存器中。当在下一个时钟的上升沿接收到停止位以后,RX控制寄存器中的RX寄存器满的这一位被置位,同时接受中断使能,并在中断中记录异步通信所接收到的值,然后在LCD中显示。
(2)通用异步发送器TX-UART
异步发送器也需要一个通信类型的数字PSoC模块。它有自己的TX缓冲区寄存器、TX移位寄存器以及TX控制寄存器。可以使用UART用户模块固件API程序来对TX控制寄存器进行初始化和配置。本装置的TX初始化包括UART无奇偶校验、RX寄存器不产生中断(轮询操作发送数据)。
当TX控制寄存器的使能位被置位时,TX模块中的除8时钟开始启动,此时在键盘中将会得到一个数据。把此数据送往LCD显示,再把此数据字节通过API函数写入到TX缓冲区寄存器中,然后清除TX控制寄存器的TX缓冲区空状态位,再在下一个时钟的上升沿到来时将缓冲区的数据发送到移位寄存器,然后将TX控制寄存器的TXBuffer Empty状态位置位,即可完成数据发送。 |