×
接口总线驱动 > 总线 > 详情

拥有USB的PSoC应用于风扇控制

发布时间:2020-05-22 发布时间:
|
    PSoC 是一种对于标准的"全数字式"微控制器设计、纯粹的模拟设计以及介乎此二者之间的所有设计而言具有同等的高适用性的器件,是一种具有极端灵活且完全可编程的混合信号SOC 的基本原理的全新一代器件。PSoC系列单片机是在一个专有的MCU(Microprogrammed Control Unit)内核周围集成了可配置的模拟和数字外围器件阵列PSoC块,利用芯片内部的可编程互联阵列,有效地配置芯片上的模拟和数字块资源,达到可编程片上系统的目的。赛普拉斯的PSoC(TM)混合信号阵列是可编程的片上系统(SOC),其集成了微控制器以及嵌入式系统中通常围绕微控制器周围的模拟及数字组件。采用一个微控制器,一个PSoC器件最多可集成100种外设功能,从而帮助客户节约设计时间和板上面积,降低了功耗,系统成本也可降低5美分到10美元不等。方便易用的开发工具使设计人员能够准确选择所需的外设功能,包括放大器、ADC、DAC、滤波器及比较器等模拟功能以及定时器、计数器、PWM、SPI和UART等数字功能。

  灵活的PSoC资源令设计人员可以在设计、确认、生产过程中现场进行基于固件的改动,从而防止产品过时。PSoC独一无二的灵活性大大缩短了设计周期,从而可以实现临上市前的最新性能改进。所有的PSoC器件都是可动态重配置的,使得设计人员能够随意在运行过程中改变内部资源形式,使用较少的元件完成既定任务。

  赛普拉斯(CYPRESS)半导体公司日前宣布推出业界首款同时集成非易失性静态随机访问存储器(nvSRAM)与可编程片上系统的器件PSoC NV。该全新的PSoC NV产品系列将赛普拉斯旗舰PSoC架构的高度设计灵活性与nvSRAM的永久耐用性集于一身。PSoC NV器件集成了可由片上微控制器控制的可配置模拟和数字线路,更加便于设计修改,又可节约元件数。这款安全存储数据记录器件的目标市场包括计算、网络、电信、汽车和工业市场等。

  在选择微控制器(将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机)的过程中,一个重要的特征是其与周围环境的全面连接能力。基于微控制器的系统必须具有一个至传感器的简易型廉价接口以及通信接口等等。赛普拉斯公司的可编程系统级芯片(PSoC)架构提供了适合各种应用且灵活性和经济性极佳的解决方案。

   

  本文将着重介绍CY8C24794 PSoC芯片。如上述示意图1所示,即为CY8C24794 PSoC芯片。它具有四个主要部分:PSoC内核、数字系统、模拟系统和包括一个全速USB端口的系统资源。这种架构使得用户能够创建与各应用的要求相吻合的定制外设配置。USB接口再加上可配置模拟和数字外设,使得CY8C24794在与其外部环境的连接中拥有了最佳的通用性。

  PSoC内核包括:

  ·一个8位、4MIPS CPU

  ·16kbytes程序快速擦写ROM

  ·1Kbytes数据RAM

  ·精度达±0.25%的内部24MHz振荡器(在USB应用中)

  ·睡眠和看门狗定时器

  ·低速32kHz振荡器

  ·通用型输入/输出引脚IO(GPIO)允许把任何引脚用作数字输入或输出,并将大多数引脚用作模拟输入或输出。每个引脚均可被用作一个数字或模拟中断。

    [page]

    如上述示意图2所示,即为PSoC的数字系统。它由4个数字PSoC块组成,每个块都是一个8位资源,既可单独使用,也可与其他块相组合以形成外设。

  PSoC可能的外设包括:

  ·PWM(脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。)(8位~32位)

  ·具有不工作区的PWM(8位~24位)

  ·计数器(8位~32位)

  ·具有可选奇偶性的8位UART(Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上)

  ·SPI(高速同步串行口,是一种标准的四线同步双向串行总线)主控器和从动器

  ·循环冗余校验器/发生器(8位~32位)

  ·伪随机序列发生器(8位~32位)

  以上这些数字块可以通过一系列通用总线与任何相连。同时,这些总线还为进行信号多路复用和逻辑运算创造了条件。

      

  如上述示意图3所示,即为PSoC模拟系统。它包括6个可配置块,每个块由一个运算放大器电路组成,从而实现了复杂模拟信号流的生成。模拟外设具有非常高的灵活性,并可通过客户化设计来支持特定的应用要求。

  下面例举了一些更加常用的PSoC模拟部件:

  ·滤波器(双极点和四极点带通、低通和陷波滤波器)

  ·放大器(多达2个,具有至48倍的可选增益)

  ·仪表放大器(1个,具有至93倍的可选增益)

  ·比较器(多个2个,具有16种可选门限)

  ·DAC(数模转换器)(多达2个,具有6位~10位分辨率)

  ·SAR型ADC(多达2个,具有6位分辨率)

  当PSoC的模拟块与数字块组合时,用户还能够生成额外的部件,它包括:

  ·增量型ADC(多达2个,具有6位~14位分辨率)

  ·增量-累加(ΔΣ)型ADC(1个,在62.5ksps采样速率条件下具有8位分辨率)

  附加的系统资源可提供适用于完整系统设计的更多功能。这些资源包括:

  ·具有5个可配置端点和256bytes RAM的全速USB(12Mbps),只需要2个外部串联电阻器。

  ·硬件I2C通过两根电缆提供了100kHz和400kHz通信。支持从模式、主模式和多主模式。

  ·数字时钟分频器提供了三种适合不同应用的可定制时钟频率。可通过布线使时钟与数字和模拟系统相连。

  ·两个乘法累加单元(MAC)提供了具有16位结果的快速带符号8位乘法和32位累加运算功能,旨在帮助进行通用数学和数字信号处理。

  ·抽取器提供了一个针对数字信号处理应用(包括ΔΣ型ADC的形成)的定制硬件滤波器。

  ·低电压检测(LVD)中断能够指示电压电平的下降,而先进的POR(上电复位)电路则免除了增设一个系统监控器的需要。

  ·内部1.3V基准提供了一个用于模拟系统(包括ADC和DAC)的绝对基准。

  ·通用型模拟多路复用器系统。

    

  图4:CY8C24794 I/O模拟多路复用器总线/系统连接

[page]

    当选择一个控制器时,设计师必须了解需要多少个模拟输入。对于只需要6个输入的系统,8个输入是否足够?需求会不会进一步提高?一个特殊的控制器系列能够处理多少个模拟输入?CY8C24794通过允许将其多达6个I/O端口与一个模拟多路复用器相连的方法(从而可将48个引脚用于模拟信号)解决了该问题。上述示意图4就对此问题进行了详细的分析。

  一个I/O模拟多路复用器(复用器是一种综合系统,通常包含一定数目的数据输入,n个地址输入(以二进制形式选择一种数据输入))实际是两根总线,如果需要的话,可在内部进行连接。它实质上就是一个大型交叉开关,允许将 任何引脚连接至一个模拟控制系统的模拟阵列。每个引脚都具有一个开关,当被选择时则与一根模拟总线相连。如果模拟阵列和数字块被配置成一个ADC,则将能够检测多达48个输入信号的电压。

  与模拟多路复用器总线相连的还有一个电流源。该电流DAC是可选的,并具有两个调节范围,即:0μA~20μA或0μA~400μA。如欲读出一个电阻值,则只需以下四个步骤即可:

  (1) 将电阻连接至一个引脚

  (2) 把该引脚连接至模拟总线

  (3) 启动电流

  (4) 利用同样连接至该总线的ADC来测量负载电压(该电压是电阻与电流的乘积)

  为了获得超高准确度,一种方法是牺牲一个引脚来换取一个基准电阻器。将该电阻器连接至总线,并测量其两端的负载电压。然后,断开该电阻器、连接所需的电阻器并测量其负载电压。这两个电压读数之比就等于两个电阻器的阻值之比。电流准确度中的任何误差都将下降。此时,测量的准确度完全取决于基准电阻器的准确度。

  加至模拟多路复用器上的一个放电开关可被用来测量电容。当受到的激励时,与电阻器将产生一个DC(直流)负载电压

  不同,生成的是一个。该斜坡速率与激励电流成正比,而与测量电容成反比。为了方便该转换速率的测量,模拟部分被配置成一个采样比较器。电容器(由两片接近并相互绝缘的导体制成的电极组成的储存电荷和电能的器件)被连接至总线,从而产生一个转换信号。当该信号达到比较器的调整点时,放电开关进入工作状态,导致电容器放电回零。开关随后释放,该循环继续进行。这个过程被称为弛张振荡。显然,这种循环的频率与施加的电流成正比,而与电容成反比。比较器输出被馈至数字部分,这里已经配置了一个频率计数器或周期定时器。电容可从测量数字信号推导出来。

  有多种换能器可将信号转换成电容,比如显微机械加工加速器。电容的一项重要应用是测量手指的存在与否。该技术可被用于电容性触摸开关的移植,这种触摸开关正在逐渐取代消费类电子产品(比如:MP3播放器、笔记本电脑和移动电话)中的按钮和开关。电容性触摸开关提供了一种独特的用户体验,而且不易受到潮湿以及其他环境因素的损坏。

  风扇控制应用

  风扇模块概述:大型电信、网络系统经常使用高性能处理器,从而在一个简单的机架上实现更多功能。例如,一个曾经支持12条ADSL的线卡现在可以支持64条,之前能够耗散24W (每条ADSL为2W)功率的电路板现在必须耗散128W的功率。用强劲的冷空气气流降低相关热阻,以达到散热要求。大多数电信系统包含很多风扇。为保证在一个风扇出现故障的情况下系统仍能正常工作,系统经常放置超过理论所需数目的风扇(N+1结构)。这样,一个系统可能会用到6至8个风扇。每个风扇都有自己的电源,使风扇可以很容易地替换而不需要关闭整个系统。

  PSoC器件的常见应用之一便是风扇控制。PSoC架构的超群集成度使得实际风扇控制应用的元件数量减少了25个以上。

    

  如上述方框示意图5即为一种速度受控型风扇的实例。我们将对其进行研究PSoC器件对其带来的作用。

  我们对所需的温度进行测量,并将测量值用于定义期望的风扇速度(调整点)。最初,对于20℃以下的温度,该参数为2000RPM;对于70℃以及更高的温度,该参数则为7000RPM,并且随着这些极限值之间的温度呈线性变化。这些是初始值;它们必须能够由主机通过I2C接口来改变。输送至风扇的功率由一个脉宽调制器(PWM)来控制。其频率应接近1kHz。一个转速计被连接至风扇,用于测量其速度。控制算法求得期望速度与测量速度之差(误差),并用它来确定PWM的合适占空比。与温度一样,这些控制参数的设定值也必须能够通过I2C主机来改变。

  

  如上述示意图6所示,PWM(脉冲调制器)是利用一个数字块来实现的。所做的一项改进是采用了另一个数字块来生成一个具有50.2%(128/255)占空比的伪随机脉冲流。当把该信号连接至PWM启动引脚时,PWM的工作频率将是一个连续启动的PWM的50.2%。

  这种PWM实现方案的好处是输出频率现在拥有了一个±3%的高频抖动,这样可以显着地降低了峰值谐波EMI辐射。

  脉冲宽度的改变将在软件的控制之下进行。

  转速计电路由两个数字块(被配置为一个16位定时器)和一个连续模拟块(被配置为一个比较器)组成,用于调节风扇的转速计信号。

  风扇速度是通过测量两个脉冲之间的时间长度来确定的。比较器与列比较器总线0相连,后者又与定时器的捕获信号相连。风扇的标称转速为2000rpm~7000rpm。选定的风扇具有4个极点,因此标称范围将具有133Hz(2000×4/60)和467Hz的标称频率。当采用一个用于实现定时器同步的2MHz系统时钟时,可以测量长达328mS或31Hz的脉冲宽度。

 

  上述示意图为一个将被用来测量温度,被选产品型号为muRata NTH5G16P33B103J07TH的温度-电阻关系。

    [page]

如欲测量热敏电阻(由具有很高电阻温度系数的固体半导体材料构成的热敏类型的温度检测元件)的阻值,则把一个热敏电阻和一个10k基准电阻器连接至可以使用模拟多路复用器MUX1的引脚。连续时间模拟块被配置为一个缓冲器,其输入与模拟MUX总线1相连。该列中剩余的两个块和一个数字块被配置为一个14位ADC,如上述示意图7所示。

  该ADC的设定输入范围为0V~2.6V.电流DAC被接通,并针对一个200μA电流进行了设置。即使在20℃的温度条件下,负载电压也为2.4V.对于ADC的输入范围而言这是合适的。

  最后考虑的是4个模拟块和5个数字块的资源使用。这似乎超出了可用资源的范畴。PSoC资源不仅是可配置的;而且还是动态可重构的。由于转速计和ADC永远不会同时使用,因此它们可以共享数字资源。配置一个ADC并加以使用。然后配置一个转速计并使用。

  在该应用中,4个数字块实际上起到了5个数字块的作用,也就是说数字块资源的利用率达到了125%。

  I2C从属用户模块具有极佳的易用性。对于本例而言,端口5的靠下的7个引脚被用来设定地址。该用户模块只需要一个至其即将使用的RAM空间的指针。

  就本例来说,下列变量将被存储于I2C存储空间中。

  struct I2C_Space{/Memory Common to I2C

  char cTem

  p;

  char cTempLowerLimit;

  int  iFanLowerRPM;

  char cTempUpperLimit;

  int  iFanUpperRPM;

  int  iControlWeightFactor;

  int  iTachRPM;

  } MyI2C_Space;

  以下是使I2C接口正常运作所需的全部代码:

  EzI2Cslave_SetAddr((PRT5DR & 0x7f0));/Port 5 controls I2C address

  EzI2Cslave_SetRamBuffer( 11, 11,(BYTE *) &MyI2C_Space );

  EzI2Cslave_Start(void)

  这些功能调用负责设定I2C地址、定义为I2C用户模块和程序的其余部分所共有的存储空间、并启动该外设。

  下面的代码列表示出了用于该风扇应用的控制环路:

  while(1){

  while(bSleepTimerTick !=0);

  bSleepTimerTick = 0;

  LoadConfig_ADC();

  MyI2C_Space.cTemp = cGetTemp();

  UnloadConfig_ADC();

  LoadConfig_Tach();

  MyI2C_Space.iTachRPM = iReadTach();

  UnloadConfig_Tach();

  UpdatePWM();

  }

  请注意,ADC和转速计始终处于被配置和重构的状态之下。

  图8:风扇控制示意图

  上述示意图8出了完整的风扇控制设计方案(所有的元件都被连接到了其适当的引脚)。

  该设计可以很容易地进行修改,以增设更多的自动调温器。只需将每个自动调温器连接至其自己的引脚并读出其电阻即可。该通信接口以往采用的是I2C,只需采用适当的用户模块便可轻而易举地改为SPI、UART或USB。

  采用可编程系统级芯片的赛普拉斯CY8C24794微控制器为实现与各种传感器和外围设备的连接奠定了基础。其动态可重构性有利于实现极高的片上资源利用率。对于我来说,它是理想的嵌入式系统控制器选择。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
串口通信属性及事件解析