Cypress Semiconductor delivers provides a number of software development tools for its PSoC line of processors. These tools tend to a be a little more sophisticated than conventional IDEs because of the configurability of the PSoC peripheral hardware. The tools take this support into account providing developers with the ability to select and configure this hardware. In this article I provide a hand-ons tour of two of the tools: PSoC Creator and PSoC Designer.
These tools work with and come with most of Cypress Semiconductor's hardware development kits. The software was actually tested using the $49 PSoC FirstTouch Starter Kits for the PSoC-3 (CY8CKIT-003) and the PSoC 5 (CY8CKIT-014) as well as the $249 PSoC Development Kit (CY8CKIT-001). The operation of the software was identical for all of these platforms so I don't make a distinction between them.
PSoC Creator is a rapid prototyping environment that can be utilized by developers may not embedded development experience. It takes advantage of the configurability of the PSoC hardware to deliver a wide range of predefined, configurable devices that can be wired together using the graphical development environment thereby creating an application that is ready to be deployed and tested on a PSoC platform.
PSoC Designer is a more conventional IDE that brings a graphical, schematic design environment for hardware configuration as well as a software development tool for assembler and C/C++ application development. Developers can use one or both aspects of the tool depending upon their design requirements. The hardware and software sides work together so the interface details for a selected hardware configuration incorporate the respective header definitions for the software.
PSoC Creator (Fig. 1) integrated development environment (IDE) is a project-based, rapid prototyping tool designed to take advantage of the configurable peripherals of the PSoC line. It provides a graphical schematic mechanism for configuring PSoC peripherals including wiring components together. For example, combining timers and PWMs into a timing chain is a matter of dragging and dropping the components onto the workspace and then using the wiring tool to connect them together. Likewise, the I/O pins that might be used would be added and wired in the same fashion.
The application code is programmed in C or assembler and runs on the respective processor core. The C compiler used by the IDEdepends upon the type of device that is targeted. Keil provides the C compiler for the 8051-based PSoC 3 and CodeSourcery for the ARM Cortex-M3-based PSoC 5. The latter provides their G++ Lite Edition. The IDE provides intelligent, color coded, source code editing and debugging support. The system provides the typical source code debugger with breakpoints.
I started with the usually Hello World application provided in a ZIP file and annotated in the online help. The application really blinks an LED but it is a start. It highlights the coding side of an application and how to do basic integration with the hardware. The tutorial expands on more system features including introduction of basic components.
Getting past the basics was relatively easy. A general understanding of hardware and PSoC is handy. Developing a more sophisticated hardware framework was easy as well when selecting from the standard palette of components. This is likely all that most developers will require so it is possible to up and running in a day.
Moving into custom component design was a more interesting chore and not one that every developer needs to attack. The advantage is the component can be reused. It is a way that a more advanced developer can provide a hardware and software solution to other developers that simply need to know about the component and how to configure it. The component itself hides the underlying complexity.
The Component Author's Guide provided a detailed creation and configuration process. It actually takes more time to figure this out than using PSoC Creator for general system configuration and debugging. This aspect starts delving into C# and Verilog programming and simulation. C# code is used for customizers. These are part of the user interface a developer sees when configuring a component and the support code generated by the system for the hardware definition and the software support. The approach is very powerful but it can be complex.
Overall I found the IDE easy to use from the source code editing and debugging side of things. The nice part of the system is the ability to utilize a component and have its API incorporated as part of the application. This approach allows an application framework to be created as hardware components are added to the application.
A couple notes before moving onto PSoC Designer. It pays to install Adobe Acrobat Reader. My install didn't do that and I started with a new Windows system. A number of the documentation files are PDF files. The rest are a mix of HTML and Windows help files.
PSoC Designer (Fig. 2) is a more sophisticated tool than PSoC Creator. It is also took longer to learn. Depending upon the complexity of the application PSoC Creator is likely to be a better choice for many designers. On the other hand, PSoC Designer will provide complete control over the PSoC system and provide access to services that PSoC Creator will not. It is true that custom components could be created for PSoC Creator but in general if these are not going to be reused then the complexity of creating a custom component may not be warranted. PSoC Designer is distinct from PSoC Creator although C code could be moved between systems.
PSoC Designer is actually very similar to PSoC Creator in that projects contain both system definitions and application source code. Likewise the build system takes both into accout and projects can target a specific PSoC chip or development platform. PSoC Designer's list is more extensive. Unfortunately the user interface between the two development platforms is very different. For example, panning across a schematic uses scroll bars in PSoC Creator and Alt-drag in PSoC Designer.
PSoC Designer also handles two types of projects: chip and system. The chip projects are similar to the PSoC Creator projects but with a closer relationship between pins, processor and digital and analog blocks. The interface includes a chip editor, pin editor and interconnect editor. Most of the chip level sample workspaces deal with the CapSense touch sensing support.
Most of the other sample workspaces utilize the system project. System projects expand the design to include components outside the chip from LEDs to brushless DC (BLDC) motors. Component menus are divided into inputs, output, valuators and interfaces. This system approach provides a system schematic and bill of materials (BOM). This can be invaluable for most designs but may be overkill for prototypes where PSoC Creator might be a better fit.
PSoC Designer has a number of nice utilities that can often be placed in popup windows like the Device Resource Meter. This provides a running total of resources such as analog and digital blocks in use versus those available via the currently selected chip.
Like, PSoC Creator, PSoC Designer is a software IDE as well with build support and debugging support.
So, the bottom line is that PSoC Creator will be a great choice if you plan on selecting from the standard set of peripherals. PSoC Designer is better if you plan on very custom peripherals or you need a systems level approach.
On thing I didn't get into was the boot loader option available to PSoC developers. This is well documented and rather flexible. It essentially provides run time application reprogramming. Check it out if you plan on doing field updates.