RoadTest: Cypress PSoC4 Pioneer kit
Evaluation Type: Evaluation Boards
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?:
What were the biggest problems encountered?: - Have to use jumper wires for UART connection. - No Linux IDE.
I mostly work with microcontrollers and occasionally FPGAs. I already had a PSoC3 board that a Japanese magazine was giving so I had a pretty good idea about what PSoC is. For those of you who are new to the term, PSoC stands for Programmable System-on-Chip, it is like a System-on-Chip as it has analog and digital components and a microcontroller core and all of the parts inside it are programmable. You can do things in the microcontroller like look-up tables, then decide to move them to the digital logic part of it to save some memory and faster response. Before I begin with my review, I have to warn some about it: Although this board comes in Arduino form factor, using it is definitely harder than an Arduino. You actually have to set up the peripherals (or components as Cypress calls them) in a schematic editor like you are doing a circuit schematic, open each peripherals' settings and set them (like ADC channels, sampling rate ...), then you can move onto coding. But more about this later.
The kit contains the development board with the 4200 family PSoC, a USB cable, 6 jumper wires and a quick start guide. There is not much on the quickstart guide, but the link there (http://www.cypress.com/go/CY8CKIT-042) is important. It takes you to the product page where you can get the PSoC Creator (the IDE), the kit datasheet and a program that adds kit examples into the IDE.
Picture 1: The kit.
Picture 2: Kit contents. Brochure on the left, board on the right top, USB and jumper cables on right bottom.
The board comes with 2 PSoC's, one is CY8C4245AXI-483, the 4200 family PSoC that has an ARM Cortex-M0 core, the new series the board is designed around, the other one is CY8C5868LTI-LP039, which is used a a programmer, debugger and handles UART, I2C etc communications. And you can actually program the debugger PSoC, which is a PSoC 5 family device with an ARM Cortex-M3 core, so it can do some processing too. The board also has Arduino compatible I/O headers, a reset button, a user button, an RGB LED and a CapSense slider. With the RGB LED and slider, it has more features than a regular Arduino board. However once you put shields on top of it, you won't be able to access them. I believe the board is a 4-layer design. One problem I've found with it is that the ICSP connector is not populated so for some Arduino shields, you cannot use this board out of the box, you have to solder a 2x3 pin male pin header there.
Picture 3: The board. You can clearly see the I/O connectors and the CapSense slider.
Picture 4: Bottom side of the board. I/O signal names and PSoC pin names are visible.
The main PSoC has an ARM Cortex-M0 core, one 12-bit SAR ADC, 2 Op Amps, 2 Serial Communication Blocks (UART, I2C, SPI), 4 Universal Digital Blocks, 36 GPIO pins, 32 kB Flash memory and 4 kB SRAM. You can route any pin to almost any peripheral, select pins as analog or digital pins, for digital output pins you can enable pullup/pulldown and for digital input pins you can enable interrupts.
PSoC Creator is the name of the IDE for PSoC 3, 4 and 5 family devices. For ARM cores you do not need any external compilers but for PSoC 3, which has an 8051 core, you'll need a licence but that licence is free and the IDE helps you with the whole registration process. So that means installing the IDE is easy. And it comes with an update manager so it automatically checks for new PSoCs or updated components.
However, you have to do couple of things before starting to write your program. First you have to add the components you are using, connect them to the pins or other components in the schematic editor, rename them so that you can use their API easily during programming and configure them (such as period for timers). These components are in a nicely formatted list on the right side. This will be easy for those who did some FPGA work with schematic editors or those who designed circuit boards. Another nice feature here is that you can also add external components to the pins. Those will be there just to explain the circuit better to others, they don't actually get compiled and flashed to the PSoC. Then you have to go to the pin editor and assign pins used in the schematic to the actual pins on the device. This is pretty similar to FPGA's again where you have a separate file for connecting pins to signals. After all this prep work you can go the main.c and start programming. As most of the configuration is done in the schematic and pin editors, you usually don't have to do any setup, you just enable those components by using their respective API calls in the setup part and interact with them using their API calls in the loop part.
Although the IDE is easy to use and helps you a lot by letting you open up the datasheet of a component in the schematic part, there are a few cons. First it does not do any sort of autocomplete if you are used to it. I don't use those types of editors so it is no big deal for me. Second and more important one for me is that this IDE is Windows only. Nearly all programmable devices I use (by Microchip, AVR, Xilinx, TI, STM...) have an official IDE (or an unofficial one) I can use under Linux, so I do most of my development under Linux. So this was the biggest disappointment for me. Hopefully Cypress will develop an IDE for Linux and Mac machines.
There are four easy example projects and two more in the advanced section. The easy ones come with the add-on you install for the kit so there is no schematic work or coding, you just compile and program the PSoC. I can also say that their hardness is arranged from easy to harder and every part of the program (code and schematic) is nicely commented. Also everything you need to try these is on the board itself so no extra parts are needed.
However the advanced examples are not that good: First, you have to use the jumper wires which comes with the kit. I'm kind of OK with that but I really wished that at least the UART pins were connected. Second, there is no code or schematic for these, you have to follow the kit documentation from project creation to programming and testing. I'll go ahead and say that they did not include anything else to teach people how the programming flow of PSoC is. But the worst part was finding errors in both of these project: The part names shown in the schematic and pin editors do not match with the ones in the code. This automatically changes the names of the API calls you have to use. Because of this I gave a 7 for the demo software quality, otherwise it would've been a 9.
For trying out the analog side, I used the USB-UART bridge project in the advanced section as a template. I added a SAR ADC component and used it with only one channel in the single ended mode. To keep it simple I didn't use any interrupts and read the latest ADC result and pushed it to UART inside the loop. It required more code changes than an Arduino project but it was definitely easier than doing it with a regular microcontroller. The zipped version of my project is attached to this review.
Picture 5: The board with the potentiometer attached.
Picture 6: Voltage readings in the terminal, PSoC Creator on the background.
I really like the PSoC architecture as it is easier to configure than a regular microcontroller. Also the components inside it let you do many things such as thermocouple measurement without any other ICs. It is a powerful board that has many capabilities. It's $25 price makes it an ideal kit for students. I'm planning to use PSoCs in my future designs and use this really cheap board to give lessons in my local hackerspace.
I'd like to thank the folks at Element14 for selecting me to write a review about this board.