RoadTest: Cypress PSoC® 5LP Prototyping Kit
Evaluation Type: Independent Products
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?: I currently have a sensor design based around an Atmel 8VR 8 Bit processor and some external analogue circuitry.
What were the biggest problems encountered?: A trimmer potentiometer for the analogue demo would have been nice, and soldering on some pins! Not really a deal breaker!
I initially applied for the trial of the PSoC 5LP Prototyping kit as I was working on an optical sensor that used a mixture of analogue filtering, amplification and an Atmel AVR 8 bit processor. This works as a solution, requires a few IC's and a scattering of passive components. I've seen the PSoC processors before quite a few years ago but at the time, as usual, time was of the essence and the 'safe' known route was followed. I've also been wanting to get into using ARM processors for a while now, and the chance of possibly getting the entire system into one IC will reduce both parts and manufacturing costs and also allow me to shrink the physical footprint of the design. So here goes:
The prototyping kit comes in a very thin, minimalist package which I rather like.
It's not great for ongoing storage of the kit if you like to put things back neatly, but for something your just going to throw away, this keeps the waste down to a minimum. On the rear of the package is a quick start guide and as part of that a link to get at the software. Don't worry about losing the web link or the quick start guide if you throw away the packaging as the web link is printed on the rear of the PCB and the guide along with the demo software and schematics are on the web page.
The PCB Contains two processors, one being the target and the other being a fully fledged kitprog programmer. The programmer and the target can be separated if necessary to allow the kitprog to be used as a stand alone programmer for other devices. The edges of the PCB are flanked with two rows of holes for adding pin headers, these are spaced to fit standard breadboard / prototyping boards.
The board will plug straight into a USB port on your computer this worked fine for me on the laptop. Not so great on the desktop where there are too many devices all hogging space and the ports were too close together. Luckily I have a USB extension lead. I imagine a lot of engineers will have a collection of cables in a drawer or cupboard and adding to that collection is not high on my priorities.
One thing to bear in mind when poking about is that you USB port can supply a surprising amount of power if you accidentally forget a resistor or connect a wire to it wrong... Ahem...
Downloading and installing the software was easy and I tried this on Windows XP and Windows 8.1. Both times I did a full install and then let the update manager perform all the updates. This automatically checks and will periodically offer updates, I've always installed them. However at work, in a production environment, updating libraries and compilers can cause issues, When it comes to the system blocks it does ask before updating, so as long as I'm given the option I'm happy. In fact it looks like when adding a block it looks like you can select from previous versions.
On one occasion after a software update I had this message pop up in PSoC creator after connecting the board.
Log file for this session is located at: C:\Users\DW\AppData\Local\Temp\PSoC Creator-000.log
KitProg version Expecting 2.12, but found 2.11. Please use PSoC Programmer GUI to upgrade firmware.4
A quick look in the programmer yielded this. After selecting the device it automatically connected and in the actions window gave instructions about where to find the update. Pretty easy really!
One thing I would point out is that when the programmer is open and connected to the target, PSoC creator can't connect to it to download your code. It pops up with the following window, which handily suggests to check for other software, such as the programmer.
Programming Environment / IDE:
And so on to PSoC creator itself. It opens to show news in the middle, To the right there is relevant documentation, resources, and developer community.
To the left there is a wealth of information, from recent projects to data sheets, the various PSoC families, and examples for the various kits. I started having a look at the various documentation and training files that are available to get my head around the IDE and how the system works. The documentation is very through, and there is a lot of it. As a noob I went through some of the documentation and several of the training videos which are a great way of seeing how the IDE works. The videos I watched were on a different board but you get the idea of how to get going.
Then I selected the Blinking LED project,
Opening the project automatically has a check for component updates, You can chose to leave the components as they are, or update to the latest version. If you are just tweaking a design and don't want to update any blocks in case it causes any issues you can. I like this. I might want to just tweak an existing program, and being forced to update could potentially cause other issues!
|Once open, the project is split into the Top design, which is a schematic showing the various peripherals that have been added and how they are connected, external peripherals can be added in the schematic so as to show what devices you have connected to various peripherals.|
|There is a pin out screen where the i/o can be assigned.|
|And finally a tiny program!|
This is where I start to feel guilty. You see, I have a flashing "hello world" led and yet there's no code. It's all been graphical apart from one line that starts the PWM block. Of course this actually means I can get something up and running very quickly without having to set a single register. Also since it's a configurable digital block separate to the processor, the processor is now doing no work! I use PWM's on my other projects all the time, both hardware and software but I've not had an easy set up like this before. I guess I'm dragging by backside up to date! Of course Looking to the left int he workspace window you can see there are loads of files describing the connections, for example, looking at PWM_1.c shows all the setup that actually goes into making the PWM run. Once the PWM is set up and running though it runs as a peripheral and there is no processor load required.
I spent a fair bit of time playing with the PWM settings and generally messing around and basically by this point I'm happy with the graphical peripheral setup, assigning pins, and seeing a bit of code!
ADC and UART:
Next up, I had a look at the Analogue project. I experimented a bit more and the IDE seems to be fully featured, with a built in debugger that allows for break points and monitoring of variables. Having this all on board and accessible in an easy way is great for those experimenting and tracing faults.
The notes in the schematic page had all the information required to set up the port and it just worked. Well, It did, after I added a potentiometer poking wires into the holes on the PCB to make a simple potential divider circuit. Since it was part of the demo software it would have been nice to have had a trimmer pre-soldered to the board with perhaps some solder bridges to allow the pot to be taken out of circuit.
In XP I was fine as Hyper terminal was there, However on the machine running 8.1 I had to install a terminal emulator. I went for tera term as I've used it before. Tera Term Open Source Project
This time there was a little more code... Which I ended up playing with. Mainly to edit the output so that I could have a go of a piece of bundled software the Bridge Control Panel...
Bridge Control Panel:
One thing that lets the analogue demo down it that there should be a way to have the data formatted for the bridge control panel. This is a bundled piece of software that could give the analogue demo the wow factor. As it is it took me ages to figure out what was going on and how to get it to produce data.
In fact was nearly at the point of giving up when I got something, and that something was good enough for me.
First I edited main.c to start sending continuous data on start up as I couldn't find a way of getting bridge to send commands to the UART, I believe it can only receive commands and is described as being unidirectional.
Then I commented out the original formatted string and the command to transmit the buffer and replaced them with a set of single character commands so I knew what it was doing.
|In control panel I enabled a variable Var8 as an integer, I also set a scroll value so that the X axis doesn't keep scaling indefinitely.|
I then wrote the command below in the editor window.
rx8 [h=43] @1var8 @0var8 [T=65 0D 0A]
Each character of the incoming data needs to be accounted for. As the data is an integer then Var8 needs to be loaded in a character at a time and as you can specify the high and low byte of the integer you can chose the endianness to suit your application.
As long as the command appears in black you are ready to go. Problems are indicated by red or blue text.
You need to click on the com port to connect if not already connected, and then click repeat in the bottom left of the editor window to sample the data repeatedly.
When running you should be seeing data in the lower part of the editor window.
One thing I found useful is being able to add a x into the string. The x gets the data and still shows it in the output window. Useful for looking at the data and working out what's going on.
Click on the chart tab to get a plot of the data. This is me twiddling my potentiometer.
To me the bridge is a good tool and I'm sure I'll make use of it. Adding a terminal emulator and being able to convert ascii data would be nice I would have been able to leave the output in human readable format.
More documentation and examples would be brilliant, as well as a way to send commands back over the UART would really make my day. I'm hoping to see more from this in future updates. If anyone knows of an application that can do similar put it in the comments.
Before I get to the end I want to highlight another omission, or at least I didn't find it. In the PSoC 5LP Prototyping kit guide it mentions that the headers on the KitProg part of the board can be used as a low speed logic analyzer or scope. Great I thought I can add a wire link or two, and monitor what's going on. At the time of writing though I haven't found the information on this.
I originally wanted to trial this as a way of minimizing, and maybe cost reducing a project. I ended up wit a way of also speeding up my development time. Especially since for my particular application I needed analogue, serial, PWM among other things, and it just happened that these are covered in the demos. My sensor project works quite well and I can now progress to adding more features without actually adding any other hardware, unfortunately I can't detail it here as It's for a customer. For a quick turn around project this is fantastic and I'm thinking I will be using the PSoc in other projects.
Incorporating the bridge software into the demo and adding features, adding a pot onto the board for the analogue demo, and getting the low speed logic analyzer and scope functionality to stand out would have been the icing on the cake!
Big thanks to Christian DeFeo and all the Team at Element 14 for letting me have a go at this awesome demo board!