新闻中心

EEPW首页>嵌入式系统>设计应用> 拥有USB的PSoC应用于风扇控制

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

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

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

  最后考虑的是4个模拟块和5个数字块的资源使用。这似乎超出了可用资源的范畴。资源不仅是可配置的;而且还是动态可重构的。由于转速计和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或

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


上一页 1 2 3 4 下一页

关键词:USBPSoC风扇控制

评论


相关推荐

技术专区

关闭