Video: Getting Your Feet Wet with Programmable System On Chip

 

Ever since I received my PSOC 4 Pioneer kit from Cypress I have wanted to play with this little mixed-signal Programmable System-on-Chip (PSOC) developer board. I love developer boards, providing that they are priced in a way to entice me to not only open my wallet but also make time in a busy schedule. I think my kit was free after winning a swag bag from Adafruit that they themselves obtained at the Open Hardware Summit and gave away on their weekly streamcast. Ultimately it was the invitation to beta test datasheet.net which also was included in that pile of swag that led to my getting involved with Hackaday.

Pioneer 4 Development Kit

PSCO4 Development Board on Hackaday

What is Programmable System On Chip?

So what is a PSOC 4? A quick summary is that it’s based on an ARM Cortex reduced instruction set processor (RISC) and is somewhat capable of supporting shields based on the Arduino footprint, and it also uses a bright red PCB that I have come to associate with a Sparkfun PCB. What doesn’t show is the fact that this programmable system on chip has programmable analog function blocks in addition to programmable digital logic blocks. There is also some supporting input/output circuitry such as a multicolored LED and a capacitive touch sensor directly on the PCB.

This is an intriguing amount of programmability, so much so that Newark/Element 14 highlighted a “100 projects in 100 days” event on it.

Enter the IDE

Over the years I have had to create or install many Integrated Development Environments (IDE) that linked hardware to software. Knowing that you had to, and how to, implement an IDE was part of being an engineer. Nowadays with the Arduino type environment the user has an IDE pretty much as soon as they click on the executable which I find to be one of the best aspects of the genre. It was so quick in fact that I was able to get my teenaged son into writing his first program even before he remembered to do massive eye-rolls and make sounds of utter disdain. He did give up however, just shy of learning how to have the Arduino make sounds of disdain on his behalf.

PSCo4 Cypress Development Kit on Hackaday

Closeup of a Programmable System on Chip Development System

Love Your Developer Board

So here  is why I love cheap developer boards, you have standard hardware that in theory is already working, and demonstration projects are readily available to feed the IDE. Loading untested software code into a project that probably has hardware issues can present a bit of a challenge. Starting with either hardware or software that is already known to be working is a big plus as you don’t necessarily have to troubleshoot the difference between a jump out of bounds of the memory map or a blown address line, or both.

Setting up the IDE consists of downloading and installing PSoC Creator 3.0 from the Cypress website and clicking execute; I usually click “run as administrator” just because I can and it makes me feel superlative as if I have a role to play.

 

PSOC Creator 3.0 Integrated Development Environment as shown by Bil Herd for Hackaday

PSOC Creator 3.0 Integrated Development Environment

As mentioned above, Newark hosted a 100 Projects event and I have decided to try circuit #2 as a way of exercising all of the steps from selection and compiling to download and use. Simply put this example changes the color of the multicolor LED based on where the user touches the capacitive sensor.

Build and Run

Compiling and running the example was accomplished by a rapid-fire succession of mouse clicks, with the only pause being for the “clean and build” step. A quick click on “Debug” and the “Program” completes the process and a quick test showed the color of the LED changing based on where the capsense (capacitive sense) slider gets touched. At this point both analog and digital components have been included and configured based on a one sheet schematic.

Post-build Pinout

Post-build Pinout of PSCO4 on Hackaday

So why do this? What is the significance of having analog compiled along with digital when the user can just utilize an add-on solder-less breadboard? The answerer is that you absolutely could implement the same designs using external analog components, especially since not all circuits can be realized with the PSOC architecture. However if you are into having more than one screwdriver in the box you will appreciate this version of having multiple answers to a problem. You might like the fact that you can re-implement a design by just pulling it from disc and not have to rebuild the solder-less breadboard (or keep the circuit built for two months in case you might need it, which you do 3.45 months later)

You may also appreciate the cleanliness of a design where most of the support circuitry is tucked up in the chip itself, not to mention real life issues with noise and reliability.

Or you might like it because it is kind of cool to compile analog.

In my case I think it’s kind of cool.

Comments

  1. arachnidster says:

    Nice post! A couple of things worth noting:
    – The PSoC 4 MCUs are on special for the next few months for $1 each!
    – The PSoC 5 is substantially more powerful, particularly when it comes to analog, than the PSoC 4.
    – PSoC creator is Windows only :(

  2. pmeslin says:

    Another thing to add:
    – The PSoC 1, while much less capable, is available in breadboard-friendly DIP package.

    Currently working (albeit slowly) on an addressable RS232/RS485 ‘router’ of sorts for an underwater camera system. The biggest PSoC1s can handle 4 simultaneous UARTs so it simplifies things quite a bit.

  3. wwvdv2002 says:

    Love the touch sensor with the ESD warning sticker right next to it :D

  4. CaptainClank says:

    Check out jon moeller’s Freesoc. it was Kickstarted.

    • Jim Shealy says:

      It’s a pretty cool device, I’m using it for my coffee brewing robot arm. It was frustrating to transition to from arduino, but it’s a really nice package once you figure out it out!

  5. Trui says:

    Programmable analog sounds impressive, but it appears you only get 2 opamps, an ADC, and an analog mux.

  6. sqelch says:

    Awesome video Bill. Looks like a fun piece of kit.

  7. Kris says:

    Also, the barebone dev kit for the PSoC4 is only $4.
    It uses a USB-to-UART chip for programming the PSoC4 instead of the PSoC5 that’s on the pioneer kit. The USB chip can also do I2C and SPI, so I see it as a $4 I2C bridge with a PSoC4 thrown in for free!

  8. Alan Hawse says:

    Bill,

    I run the Software division at Cypress and am responsible for Creator.
    Id love to chat with you about your experience.

    If you are willing drop me a note.

  9. pcf11 says:

    It looks like a system on a board to me.

  10. Leonard says:

    Nice article. Until now I didn’t know about Cypress, and now I do.
    It’s not that I would immediately obtain one and start to try to program it, but it’s good to know what’s out there. Thanks for sharing.

    • Bil Herd says:

      We used to rock Cypress memory back when I was doing very wide DSP based machine vision. Sometimes you just need a well behaved 8ns RAM. We always knew that if we failed to get everything just right we could use dual-port RAM, to solve the problem but at a cost of the other engineers throwing things at you as they walked by.

  11. Bil Herd says:

    I will check out FreeSOC. Thanks for the lead!

  12. TechMike says:

    How much did Cypress for this article? Scam, if you ask me.

  13. Rob says:

    The IDE looks great. Downloading it now. I will get some of the cheep $4 boards.

    • rasz_pl says:

      cheap boards by cheap cypress, tehy used to do free samples, now they even charge for shipping + they are sending me to my local distributor that does direct $ => Euro x2 conversion before thinking about selling anything to me.

  14. Jake says:

    I just want to know where I can find that orange block diagram template in the first picture.

  15. Now that I’ve read your Programmable Logic II article, I’m wondering about the ability to program the PSoC 4 in verilog – from reading the datasheets it seems it is possible, but I can’t figure out if the UDBs are able to be programmed through verilog or if they require using the PSoc creator.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,656 other followers