tag 标签: 赛普拉斯半导体公司

相关博文
  • 热度 21
    2013-12-26 11:40
    4299 次阅读|
    2 个评论
      最近在学习PSoC ,功能更强大            有好些天没有写博客了,国庆长假没有回老家,一直呆在实验室,好好享受即将毕业最后呆在实验室的时光。想念EDNChina 的朋友们。         最近在学习PSoC , 单芯片实现MCU+模拟+数字逻辑功能,性价比更高,功能更强大,外设非常丰富!!         先上个图吧,资料+PSoC视频,有时间的时候上传上来吧!!         各位看官先一睹板子图为快吧!!                       资料还是蛮多的,有时间的时候都上传上来吧!!     //2013.10.3 //深圳 //准备回去洗洗睡了 //晚安
  • 热度 16
    2013-12-26 11:38
    899 次阅读|
    0 个评论
      How to create a  new  PSoC project  ?   ADCINC   There are a large number of ADCs available. When choosing an ADC for your own application, consult the  ADC Selection Guide  (there is a link to it at the beginning of each of the ADC data sheets). This project will use the ADNCINC. Double click to expand the  ADCs  folder.  Double click to expand the  ADCINC  folder. Right click the  Single Stage Modulator  and select  Place . In the  Properties   Window , change the name of the user module to VR_ADC. Select  Unsigned  for the Data Format. For Resolution, select 8 Bit. For  Data Clock , select  VC1 . For  PosInput , select  ACB00 . This should have connect the output of the  VR_PGA  GAIN block to the PosInput of the  VR_ADC .  Check the diagram to make sure that there is a line connecting them.  If you are using a chip that has a different configuration of analog blocks than the CY8C29466-24PXI used in the example, choose the block that contains the  VR_PGA  GAIN block in place of  ACB00 . Set the NegInput to  ACB00  and the NegInput Gain to Disconnected. This sets the  ADC  to use a single ended input. For  PWM  Output, select None. Timer8 The 8-bit timer is used to flash the LED periodically.  It uses the interrupt generated by the timer to toggle the LED. Place a  Timer8  user module and rename it LEDFlashTimer. Set the  Clock  to  VC3 . Set  Capture  to  LOW . Set  TerminalCountOut  to  Row_0_Output_2.   You will route the Terminal Count output to a pin so you can get some practice routing resources in PSoC Designer.  You will connect to pin to an LED and set the Drive mode on the pin so that it will flash the LED for a single click cycle every time the timer reaches terminal count. Set  CompareOut  to  None Set the  Period  to  250 .   The flash rate of the LED will be 1/4 second (24 Mhz / 3 (VC1) / 16 (VC2) / 250 (VC3 Divider) / 250 (Period)). The timer will hit terminal count 8 times per second and each of these terminal counts toggles the LED.  The other example project uses the SleepTimer user module rather than the Timer8.  The SleepTimer is configurable down to 1 Hz without using the clock dividers.  The Timer8 was used in the example to show routing of a user module output to a pin. The same technique can be used o route the output of one user module to the input of another. Set the  CompareValue  to  0 Set the  CompareType  to  Less Than Set the  InterruptType  to  Terminal Count Set the  ClockSync  to  Sync to SysClk.   Step 4: Connect the User Modules Each user module has inputs and outputs that can be routed to other user modules and to pins. The output of the  VR_PGA  user module was routed to the  VR_ADC  user module in the parameter selection, so to practice routing, you will route the output of the LEDFlashTimer TerminalCountOut to a pin so we can use the signal to flash a LED when the counter reaches terminal count. The main LED from the project will be attached to P0  (port 0, bit 0), and the potentiometer input is on P0 , so you will route this signal to P0 . You ’ ve already routed the  TerminalCountOut  to row 0 output 2 in the LEDFlashTimer properties. Locate the  RO0  (Row_0_Output_2) line in the interconnect view.  It is the blue horizontal line that your LEDFlashTimer is attached to. Click the digital interconnect box on the right end of the Row_0_Output_2 line. In the Digital Interconnect dialog, click the top triangle (Row_0_Output_2_Drive_0) and select  GlobalOutEven_2 . Click  Close . In the Pinout Window (View  Pinout) click to expand  P0 . Change the  Name  to  LED2 . Set the  Select  to  GlobalOutEven_2 . Set the  Drive  to  Strong . Click to expand  P0  (the other pin that will have an LED attached) Change the  Name  to  LED1 Set the  Drive  to  Strong . Click to expand  P0  and verify that it is named  VR_IN  and ensure that  Select  is set to accept  AnalogInput  . In the Interconnect view, there is now a line from the  TerminalCountOut  of the  LEDFlashTimer  to RO0 , then to GlobalOutEven_2, and finally to Port_0_2. You have successfully routed the terminal count of your timer user module to a pin and configured the pins for the inputs and outputs attached to them. Step 5: Write Firmware The first step in writing the firmware is generating the application. Generating the application creates all of the source files, library files, and headers that are needed to begin writing the firmware. The APIs generated for each of the user modules you have selected are detailed in the user module data sheets associated with each of the user modules. From the Build menu, select  Generate/Build Project . In the Application Explorer, double click to expand your project folder.  
  • 热度 18
    2013-12-26 11:38
    1028 次阅读|
    0 个评论
    How to create a  new  PSoC project  ?   Under the Source Files folder, double click  main.c .     Copy and paste the following code into main.c. Replace the entire contents of main.c with this text. //---------------------------------------------------------------------------- // C main line //---------------------------------------------------------------------------- #include         // part specific constants and macros // PSoC API definitions for all User Modules #include "PSoCAPI.h"     #pragma interrupt_handler LEDFlashTimer_ISR_C // Write the interrupt handler for the Flash Timer in C. #define LED1_PORT PRT0DR //Constant definition for the data port (Port 0) where the LED (LED1) resides. #define LED1_ON 0x01 //Constant definition to OR with the LED1_PORT to turn on the LED (LED1). #define LED1_OFF 0xFE //Constant definition to AND with the LED1_PORT to turn off the LED (LED1). unsigned char ucVR_ADCResult; //This global variable holds the converted output of the potentiometer (VR). void main(void) {     M8C_EnableGInt; //Enables the Global Interrupt LEDFlashTimer_Start(); //Start the Timer UM VR_PGA_Start(VR_PGA_HIGHPOWER); //Performs all required initialization for the PGA User Module and sets the power level for the PGA to high power (VR_PGA_HIGHPOWER). VR_ADC_Start(VR_ADC_HIGHPOWER); //Performs all required initialization for the VR_ADC User Module and sets the power level to high power. VR_ADC_GetSamples(0); //Sets the VR_ADC to run continuously by providing a 0 in the paramater list.     while(1) //infinite loop. { if (VR_ADC_fIsDataAvailable() != 0) //This function checks the availability of sampled data.  The function returns a non-zero value if data has been converted and is ready to read.         {          ucVR_ADCResult = VR_ADC_bClearFlagGetData(); //This function clears the data ready flag and gets converted data as an unsigned char and stores it in the variable ucVR_ADCResult.   This function also checks to see that data-flag is still reset.   If not the data is retrieved again.  This makes sure that the ADC interrupt routine did not update the answer while it was being collected. if (ucVR_ADCResult = 85 ) // Test to see if the potentiometer is less than 1/3 of the way up its 8-bit scale. { LEDFlashTimer_DisableInt(); //Disabling the Interrupt for the Timer stops the blinking LED1_PORT = LED1_OFF; // Turns the LED Off } //end (ucVR_ADCResult = 85)   else if (ucVR_ADCResult = 170) // Test to see if the potentiometer is less than 2/3 of the way up its 8-bit scale. { LEDFlashTimer_EnableInt(); //Flashes the LED } // end (ucVR_ADCResult = 170) else // Don't need to test the top third. { LEDFlashTimer_DisableInt(); //Disabling the Interrupt for the   Timer stops the blinking LED1_PORT |= LED1_ON; //Turn on LED1 by setting Bit 0 of Port 0 to high. } // end else } // end (VR_ADC_fIsDataAvailable() != 0) } } void LEDFlashTimer_ISR_C() {    //Read Port0 and XOR it with 0x01 to change the status from On to Off and vice-versa.     PRT0DR ^= 0x01; } The code is fully commented, so you may want to look through the program logic. All three user modules are started and the ADC begins sampling before the program goes into an infinite loop that samples the ADC and performs some simple logic on the results. After the main program is an interrupt service routine written in C.   Save  main.c . Open the lib folder and then the Library Source Files folder. Open the interrupt routine for the LEDFlashTimer user module,  LedFlashTimerINT.asm .   Insert the following line after the @PSoC_UserCode_BODY@ banner. ljmp  _LEDFlashTimer_ISR_C     ; jump to the ISR written in C in mainc.c Save and close the LEDFlashTimerINT.asm  file.   From the Build menu, select  Generate/Build Project .   //深圳 //2013.10.10  
  • 热度 12
    2013-10-2 16:51
    1399 次阅读|
    0 个评论
          赛普拉斯PSoC 4可编程片上系统有望替代整个专有MCU     日前,赛普拉斯半导体公司宣布推出PSoC 4可编程片上系统架构,它将赛普拉斯一流的PSoC模拟和数字架构以及业界领先的CapSense电容式触摸技术同ARM的低功耗Cortex-M0内核完美相结合。这款真正可扩展的低成本架构可提供PSoC标志性的高灵活性、模拟性能和高集成度,而且能提供数十种免费的PSoC组件(Components),也就是在赛普拉斯PSoC Creator集成设计环境中用图标代表的“虚拟芯片”。全新PSoC 4器件系列将对专有的8位和16位微控制器(MCU)以及其它32位器件发起挑战。赛普拉斯计划在2013年上半年宣布推出新的PSoC 4系列产品。     PSoC 4架构在抗噪性方面拥有巨大的领先优势,可有效加强赛普拉斯已获专利的业界领先的CapSense电容式触摸传感技术。除了电容式传感以外,PSoC 4还可面向FOC(磁场定向控制)电机控制、温度传感、安全访问、便携式医疗和众多其它应用领域。     赛普拉斯可编程系统业务部负责PSoC市场营销的高级总监John Weil指出:“PSoC 4能帮助设计工程师充分发挥业界标准的低成本ARM解决方案、丰富的ARM软件以及将8位和16位MCU应用移植到32位解决方案等整体趋势带来的优势。这是业界唯一一款完全可扩展、可无限重配置、具有同类最佳模拟集成度的Cortex-M级MCU。它能替代整个专有MCU和模拟解决方案产品系列,有望占据大量市场份额。”     半导体市场研究公司Objective Analysis的首席分析师Tom Starnes指出:“赛普拉斯PSoC产品在高度可定制的逻辑和模拟电路上采用深受欢迎的Cortex-M0处理器内核,可为具有独特I/O要求的应用提供极具吸引力的组合,其能确保提供更高性能的处理器或者广泛采用的ARM架构。PSoC 4架构采用高度优化的Cortex-M0处理器,这种调整可以更方便从8位和16位或专有MCU架构上进行移植。”      PSoC 4架构可实现同类最佳的功耗(仅为150 nA)同时可保持SRAM存储器、可编程逻辑工作,可从中断唤醒。在停止模式(stop mode)下,其保持唤醒功能时耗电仅为20 nA。它拥有任何Cortex-M0器件最宽的工作电压范围,能支持介于1.71V到5.5V之间的全部模拟和数字工作电压。此外,该架构还支持集成高性能定制信号链,并能提供可配置模拟和灵活的路由功能。 PSoC 4采用PSoC Creator集成设计环境。IDE易于使用的图形界面能帮助设计人员在同一PSoC器件中拖放预先具有自身特性、可随时投产的模拟和数字IP模块,也就是PSoC组件,从而创建出特性丰富、高度差异化的可定制最终产品。赛普拉斯的平台解决方案,包括PSoC 4、PSoC Creator和PSoC组件等,不仅可简化并加速设计工作,减少物料清单成本,还可带来出色的系统价值。