This is the FreeSoC2 Development Board, SparkFun’s take on the PSoC5LP ARM Cortex. The PSoC (Programmable System on a Chip) brings together features of the programmable devices and microcontroller-type systems on chips into one package. By placing a programmable fabric between the peripherals and the pins, the FreeSoC2 allows any function to be routed to any pin! Moreover, the on-board PSoC includes a number of programmable blocks which allow the user to define arbitrary digital and analog circuits for their specific application.
SparkFun’s FreeSoC2 board has two processors on-board: a CY8C5868LTI-LP039 and a CY8C5888AXI-LP096. The former serves as a debugger/programmer for the latter, which is the target upon which your application code will be installed. Both parts contain a Cortex-M3 processor core, 256kB of flash memory, 64kB of SRAM, and 2kB of EEPROM. The only significant difference between the two are package size and clock speed. The target is in a TQFP-100 package which provides 72 IO pins versus the debugger’s QFN-68 package and 48 IO pins, and the target can operate at 80MHz versus the debugger’s 67MHz limit. Additionally, the FreeSoC2 can support 5V and 3.3V IO voltages.
With a simple upload of new firmware, the Arduino core has been ported to the PSoC5LP, so you can write code for the board in the standard Arduino IDE. The board duplicates the functionality of an Arduino Uno R3’s various hardware peripherals on the pins, so many examples, libraries, and shields will work on this board. However, to get the most out of the device, you will need to use the PSoC Creator IDE (which is free of charge with no code limits from Cypress Semiconductor). Please keep in mind that the PSoC Creator software is Windows-only at this time.
Note: The FreeSoC2 Develpment Board is a collaboration with Jon Moeller. A portion of each sales goes back to him for product support and continued development.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Experienced - You will require a firm understanding of programming, the programming toolchain, and may have to make decisions on programming software or language. You may need to decipher a proprietary or specialized communication protocol. A logic analyzer might be necessary.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
Based on 7 ratings:
4 of 4 found this helpful:
When I first saw this board I was excited and nervous. Excited because I have used PSOC creator and have had the woes and the awesomes. I was first affriad because I like to have a simple board to use that is easy to program to test sensors; like the Arduino. I also like a board that can allow complex design for multiple type sensors in put and outputs. Arduino UNO people lets face we have ran out of pins a lot faster than we would have liked. The feature of be able to use the Arduino IDE takes away the pain that can be the PSOC creator and gives the simple test platform we like about Arduino. The thing I really like is that you can still go back in on the PSOC creator and create more complex designs that are some times required for projects. The UDBs (undefined data blocks) in the PSOC give it more flexible design than any other micro I have ever used. I also love that the IO voltages can be selected to Match 5v or 3p3v. This give the nice camptiblity with the 5v R3 shields along with pins that can use the 3p3v sensors. (IMU, and the like) This make it even easier to develop projects that have multiple voltage levels. If you are thinking about giving it a shot stop and get. This board would have been what many of my friends could have used on some projects that were simple robots that needed both 5v and 3p3v sensors. Thanks Sparkfun for this advancement to hobbiest. PS I am working to port the Robot Control code over to this board!
2 of 2 found this helpful:
https://github.com/jhicks-camgian/freesoc2-freertos.git
Enjoy!
3 of 3 found this helpful:
Once you've gotten your feet wet with the Arduino boards and their fixed hardware functions, this board and the awesome PSoC5LP is a great next step.
Like others here I've made the FreeRTOS demo app run on this board, and I'm continually amazed at just how much horsepower this chip has.
I find myself spending more time using the PSoC Creator software to create hardware designs (because that's the part that is new to me) and I found it to be a fairly capable IDE.
I love this board. It is my current obsession.
3 of 3 found this helpful:
I had this sitting in a box for a couple of weeks before I finally decided I was willing to go through the process of trying to download, install, and license yet another FPGA related toolset. So this last weekend, I downloaded freesoc creator and installed the software.
First, I was very surprised at how easy it was to get the software. I had to do a quick registration on their website and validate my email and that was all that was required. Other competitors (Xilinx) seem to want your first born child before they'd let you get that far. Installation was a breeze.
I then thought, ok, I've got 10 minutes to see how far I can get with a blink led project. Much to my surprise, that really is about how long it took and I didn't even have to write a single line of code. I connected the ilo oscillator (1 KHz) to a divider set to 1000. Connected the output of that to the LED on the board. Programmed it and it worked.
Yesterday I decided to try and see if I could intermix the FPGA stuff with some code on the core. I re-did the blink project using a timer and an interrupt service routine. The main loop counted interrupts until 1 second had passed and then it would toggle the LED. This also was very easy and the included examples/documentation were excellent.
So - I don't often give anything 5 stars, but this product is very deserving. I have some minor concerns over the license agreements which, on a cursory glance, seem a little anti-open-hardware but that may be the result of me reading through it a little too quickly. The included documentation is probably the best I've seen and I don't think you need an internet connection for it either. I'm looking forward to doing more with this board.
I dug a Windows laptop out of the closet so that I could run PSOC Creator, and have been amazed at how much one can do with the combined software, programmable logic, and analog features of PSOC. The quantity and quality of the documentation is also great. I'm glad I invested the time.
I have been working with the FreeSoc for several months. I have 4 boards. If you want to move up the sophistication and flexibility scale from an Arduino, this board is a very good choice.
I use PSoC Creator from Cypress for development. It is very easy to install and use. I did a few simple projects to get started and have now moved on to a major robotics project using FreeRTOS on the FreeSoC2.
There are lots of example projects from Cypress. Also, if you have questions, the PSoC community on Cypress's web site is very very responsive and friendly. Cypress support is very responsive also -- I reported a problem and they actually called me a couple hours later to talk about work arounds.
In my projects, I have often run into the problem of being able to do most of what I need in software but needing just a little hardware here and there. The result was little breadboards, misc shields. etc. The FreeSoC greatly simplifies all this.
The big feature of PSoC and this board is the straightforward way in which you can add a little "hardware" to your projects -- just drag and drop building blocks in PSoC creator. PSoC creator then generates everything you need -- the hardware and the basic interface software to the hardware you just created. The available modules range from simple key debouncing, pretty much every communication interface, USB interfaces, analog components, ...
Bottom line. More sophistication is required than Arduino -- this is real C and real programming. However, if you want to do real projects and especially if you need some interesting interfacing hardware for your projects, check out the FreeSoC2.
a high speed crystal clock would have been nice.. overall happy
Does anyone know which pins are used by the debug USB connection? It looks like it might be P1.0 and P1.1. I made a plug-in board for a project, but I can only program/debug using the debug port when the board is unplugged. I think I might have a low-impedance on one of the pins used by the programmer.
Yes, it's P1.0 and P1.1. However, those pins are only made available on the debugger header, so I wouldn't expect any add-on board you've made to affect them. The only other possibility is the Reset pin, which is on the Arduino header. Is it possible that you're affecting that pin somehow?
Hello, When I upload my code via USB target, it goes via USB-UART in the bootloader of the CY8C5888 right? And can I use the USB Target to send data via usb-uart? Or I have to use the usb debug? There is a bootloader also in the CY8C5868? Hopw do it recognize that I am in debugging mode?
Thank you
You can use the USB target port as a USB-UART to send data, OR you can use the USB debug port to send data as well. If you're using Arduino, there's no debugging mode, just USB-UART upload. If you're using PSOC Creator, the debugger is automatically recognized.
i obtained a pcb of this as a ding & dent purchase, just the bare pcb, but at least i can get the parts to build my own...
Thought I'd give you a heads up to check full connectivity on these. I think these might be in ding and dent because they were manufactured as 2 layer boards and not 4 layer boards. Make sure you have all 4 layers before trying to get parts to make it work :)
I had a question about the freesoc board. It looks like the "target" psoc has it's own bootloader for communicating with the Arduino IDE via the target usb port, is that correct? If so could the debugger psoc be used for other purposes, or is it still tied up in the bootloading process for the target?
Thanks
You're right. The target is bootloading over USB, so you're free to use the debugger for other purposes; it has a bootloader of its own, as well (although not one compatible with AVRDude).
Great!! Thanks for the info.
Hi, can please anyone help me. I've been working on FreeSoC2 board since three months. I have issue with the board like i'm not able to program my device via debugger port. The KitProg (USB-UART) drivers are not getting installed on my device. The debugger LED is breathing (i.e. its varying intensity) when I plug USB port to my system. I think I need KitProg (USB-UART) drivers to fix this up. Please someone help me to fix this up....
Thanks in advance...
I had a similar problem, and believe I somehow got into Mass Storage mode. What I did to fix it was to power the board from the target (not Debugger) micro USB. It wouldn't work when powered from the debugger port. Then I pressed and held the target reset button for 5-10 seconds. When I released the button, and reconnected to the debugger port, the board connected as normal.
I've been enjoying working thru the examples on the Freesoc2 board. While trying to get the USB to i2c bridge working, I believe I found a schematic error. On the debug processor, the p12.0 and p12.1 (pin38 and 39) appear to be reversed. The result is that the target p6.0 needs to be to SCL, and p6.1 needs to be connected to SDA. When I made this change, I was able to get the USB to I2C bridge to work, and was able to access data on the target processor using the Cypress Bridge Control Panel
Has anybody been able to recompile the arduino-bootloader with the PSoC Creator 3.3 using this source repository? Would be nice, if you could share the result, I'm unable to recompile it without errors.
Another nice thing about this board: it is among the very few ARM platforms that is completely 5V-friendly. All the I/O pins are not merely 5V tolerant, they can be configured to output 5V logic levels as well. The PSoC 5LP actually runs at 1.8V, but the voltage regulator is on-chip and it includes level translation for all I/O pins.
The FreeSoC2 is a relative of Cypress's own inexpensive development board for the PSoC 5 LP: http://www.cypress.com/?rid=108038 It uses a larger 100 pin version of the PSoC rather than the 68 pin target device on the Cypress board so it has more I/O, and it comes in a convenient form that is compatible with Arduino shields. Perhaps even more important, it should be available in quantities suitable for maker-sized product runs, whereas the Cypress board may not. (Cypress is selling their board for well under the price of the PSoC chips on it to encourage PSoC development, so they are not likely to welcome orders for hundreds of boards!)
There probably isn't much point in using Arduino-compatible APIs for code that is targeted specifically at the FreeSoc2. But having them lets you use libraries that were developed for other Arduino devices and to develop libraries that can be used on them (only useful if your library doesn't use the PLD or analog building block capabilities of the PSoC).
While I don't see people using this as a simple Arduino replacement, I can see people starting with the Arduino configuration and code and then modifying it. If you need 30 analog pins you can write your Arduino code, open the Arduino configuration, remove the stuff you don't need, add more analog pins and be done. It might take a bit of effort for the Arduino IDE to understand what you mean by A30, but being able to use all the prebuilt libraries for the pins you want is a nice feature. Just my $0.02
Any support for linux tools? Or does this require windows?
At the moment, it's Windows only. Hopefully that will change soon.
I was interested until I saw the "Windows only" part. Bummer.
If you get the CY8CKIT-059, you get almost the same thing for $10 but in a nicely small footprint. Knock off CANbus and a few MHz, the CY8CKIT-049-42xx is $4. Buy two boards is the price savings of a Win 7 license. Lately, I've been starting a design on an Arduino-like board and then for implementation, switching to the smallest form factor I can find.
Powerful alternatives to Arduino are stupidly cheap.
Has anyone here tried to run the tools under Wine?
Define "hopefully" :-). There are probably enough of us out there that can help making a linux or OS X port if you don't have time.
I'll do what I can on my end; I recently saw a message from Cypress about a recent user survey on Creator improvements and the top two, by a landslide, were "non-Windows OS support" and "C++ support", so they know there's interest!
nevermind, I thought you meant YOUR software, not the Cypress code :-(
I've become quite a fan of the PSoC 5LP. If you can't do something in code, you can do it in logic; if that fails you can do it with analog components. Once you get good, you can use all three at the same time. Mastering DataPaths takes a little work, but they are so powerful, it's worth the effort.
I like the fact SparkFun is supporting this technology. They will however have a hard time keeping up with Cypress. http://www.cypress.com/?rID=108038
The Cypress pSoc dev board has the pSoc4 on a socketed board. That part number is CY8CKIT-142. costs about $12. Without the BLE hardware the CY8CKIT-049 board is about $4. (The CY8CKIT board just plugs into the USB port. The Cypress tools rock!
So, I order the 32 KHz crystal (https://www.sparkfun.com/products/540) and the 20 Mhz crystal (https://www.sparkfun.com/products/534) to put on this board. I'm confused about the FreeSoc2 schematics. I should have C18 and C24 (C14 and C12 are DNP). Neither of the caps look like they are there.... C18 and C24 are spec'd at 22pF, but the 32 KHz crystal sold by SparkFun is spec'd at 12.5pF. Could I get an answer on what caps I need (and preferably a link to buy... ). I presume this was tested....
22pf is acceptable. [This part(http://www.digikey.com/product-detail/en/C1608C0G1H220J080AA/445-1273-1-ND/567670)] from Digi-Key will be adequate.
Future versions of the board will have through-hole pads for those parts.
Thanks. I'm assuming all 4 caps.
FYI: I got our Dir of Eng to push a new project based on the PSoC5 and what I demo'd to him using your board, for an industrial X-Ray controller board. Guess I'll have a few months to play PSoC5 and get paid for it. :)
Any plans for a protoshield for this thing?
Perhaps, but unknown at this time pending future sales and engineer availability.
I'd like to make a number of add-ons for it: a full-size protoshield (to supplement the normal Arduino one which works well with the FreeSoC2), per-port protoshields, and an SD card add-on that could connect to one of the 2x10 headers.
I took some time and created a simple to use motor driver project. It works great. Feel free to take it and use it. I plan on adding to it in the future to create a PSOC 5 motor driver board! Complete with in encoder feed back! Have Fun all you awesome PSOCers https://github.com/JordenLuke/Motor_Driver_Test
The PSOC 5LP is a great chip, but has anyone noticed a 0.5V p-p sawtooth signal at 21KHz ( 6V battery powered) or 31 KHz (USB powered) on the 3.3V supply? The 5V supply is quiet. I purchased two boards and see it on both of them.
Okay, this is an ESR issue with the output capacitor on the 3.3V supply.
We'll fix it in future boards; in the meantime, if you remove C8, that will fix the problem.
Here's a picture showing the capacitor that needs to be removed.
Note that the analog subsystem draws from the 5V regulator, so it shouldn't be affected by this issue.
Is removing the capacitor the proper fix, or would replacing it with a better part be a better fix? If the latter, can you suggest a suitable capacitor to install?
Removing the capacitor is the proper fix. I've been trying different caps and once you pull that 470pF cap off, it doesn't really seem to matter what you put on the output.
Wait a sec. Just got an email that said to remove C8. Now I see a picture saying remove "this" capacitor, not "these" capacitors. Should or, or should I not, leave C10 in? I'm confused. :)
C10 can be removed but it's not nearly as important as C8.
Removing C8 worked! Thanks!
Same here. Got the email and whacked the scope on it and can confirm what TDDGuru says. Removed C8 as pictured in SFUptownMaker's comment and confirmed it to be clean afterwards. Thanks for the heads up, SF!!!! Just out of curiosity, what regulator is that for the 3v3 rail?
It's a Micrel MIC5219. We use these things everywhere, but generally we put a 100nF ceramic in parallel with a 10uF tantalum and leave off the 470pF cap on the BYP pin. In this case, the area was a little tight, so I went with the smaller ceramic cap and the 470pF cap to save room. Guess that was a mistake.
Yes, actually. That's very odd. Let me see what I can figure out.
I would have expected the left half of the board to be an Arduino foot print and the right half of the board to the what is remaining, similar to how the Mega came into existence. I believe this would have been best for standoffs, shields, etc.
There are downsides to that. The Arduino standoff positioning collides with headers, for instance.
There aren't many Mega shields- basically, just the protoshield. The Mega pin placement is poorly designed: the ration of data pins to power and ground pins is too low.
In other words, these were carefully considered design elements.
Why do the headers look so poorly soldered on? It looks like someone was in a hurry and didn't line them up properly. This is mostly on the bottom double row headers.
I think what you are seeing are the locking header footprint that we use to keep the headers stable in the selective solder machine. The headers are actually on straight.
This is just my observation on the pictures. I have not ordered one of these.
Is the firmware for the debugger open ?
After a fashion. I'm not sure yet what the terms of the license are, nor where Cypress stores it.
Ideally, it'll soon be on GitHub. If I can't get the official version up on GitHub and managed by Cypress, I'll get the 2.11 version that's on there right now, at least.
Has this been posted anywhere? I'd really like to have it.
awesome thank you!
What Arduino libraries are compatible with this board?
I re-wrote the SPI, Wire, and Servo libraries so they'll work with it.
I know from testing that the WiFi library provided by Arduino works at least well enough to use a couple of the examples, and that our APDS-9960 and MicroOLED libraries work, too.
It all depends on how the library was written. If it was written entirely in "Arduino", it should work. However, if the author used any processor-specific resources, registers, assembly language, or anything like that, it probably won't work.
There are not enough words to express how much I LOVE LOVE LOVE CYPRESS! When I build my home projects I ONLY use Cypress because of the flexibility, dynamic routing and ease of pin assignments, and most easy to use PSOC Creator IDE. Their IDE and GUI is phenominal, powerful, easy, and the way they write all the APIs for you makes designing and prototyping SOOOO much easier and faster! These are serious kick @$$ microcontrollers. If you haven't already used them, then go check out the PSOC 4200 Prototyping Kit (CY8CKIT-049-42xx). Its a very simple all in one proto stick for only $4!
Also, I think that this product here is a bit too much $$. Cypress has also released a small PSOC5LP prototype kit that is only $10... uh, once they restock it.
Anyways, Cypress is awesome!
The Cypress prototype board is priced well under the cost of the chips on it. It's unlikely they will welcome quantity orders for it, such as you might need if you were going to build 100 of something. The two PSoC chips alone on this board would cost over $35 in single quantity and $30 in quantity 100 so the price of the complete board seems fair.
Does this fit in the Arduino Project enclosure PRT-10088? I need case options which allow a room for a shield.
Doubtful. I think, physically it would fit in there, but the holes aren't going to line up with the stand off screw holes, and the ports in the end for cables almost certainly won't be in the right place.
I would love a version of this that works with mbed tools/workflow.
OK - here's a "dumb noobie" question... Why would I choose this dev board? What do I gain with the PLD/FPGA stuff that's being discussed? Could someone provide a real world example? e.g. with this board you can do X which you can't do with board Y.
Or is it simply faster and/or has more I/O?
This line in the description interests me: "However, to get the most out of the device, you will need to use the PSoC Creator IDE "
Thanks.
Fair question. If you plan to use it in the Arduino IDE only, it's got more I/O, more memory, and is faster than most other comparable boards. The Due is faster and has more memory, but it runs at 3.3V which excludes a lot of shields.
Once you move into Creator, though, the possibilities explode. The onboard analog circuitry allows you to do a lot of really great stuff onboard, for instance, things that would normally require a lot of external active circuitry.
Or, for the programmable digital circuitry, you can implement a custom hardware I/O interface. For example, there's a module that allows you to interface NeoPixel-type LED strips without having to bit-bang and cycle-count I/O, which frees up a tremendous amount of processing power.
Thanks that helps.
At some point it would be great to see some tutorials/samples that explore the Creator side of things. This seems to me to be the big win here - an easy to use development system that introduces the hobbyist to PLD technology.
Good luck with this new product!
Cypress has a lot of 'App notes' with project examples on using these ICs. To give you a simple example of something I did with the PSOC4 in the PLD, I interfaced a rotary encoder to the ARM by configuring a filter and up/down counter in the PLD to keep track of the count as well as an interrupt signal to the ARM for roll-over detection. This was very simple, but it off-loaded a lot from the ARM's point of view, since there was no need for 'digital filtering' nor processor interrupts on each pulse. So this was a custom hardware driver. The PSoC5 should be much more capable than the PSoC4 I believe.
I thought the PSoC5 also had on-chip amplifiers you can use for signal processing. This is useful right? No need to wire up external circuity (other than perhaps resistors for gain control or filtering).
Couldn't you just use the TCPWM in quadrature decoder mode?
Not sure, since I did it in verilog (hence the poster's question about using the PLD).Point being, it's custom.
Asking "why" is IMHO, among the more enlightened questions. I kind of shook my head when I saw this product on cypress.com and came here. $49 is a big wad of money. I just replied above and remarked about the amazing options for embedded development for small $. I'd think a likely next step from Arduino is ChipKIT's Uno32 and uC32. Microchip's mpeide is familiar to Arduino ide users and their boards have TONS of RAM, extra uarts, and run at 80MHz.
Next step up are when we open our minds to alternatives to Arduino IDE. After mpeide, I believe Cypress's windows tools are the next friendly, then NXP's toolchain, and I haven't been able to make Ti's Launchpad toolchain work yet (gave up after a couple hours).
Cypress' PSoC data blocks are a game changer. I'm an EE with embedded experience and this new dimension is mind blowing to me. And starting at $4? I bought 4 just because.
Its not clear, will arduino mega shields fit? It doesnt appear so, but damn the mega prototype shield is so useful.
Nope, sorry.
That was a conscious choice on my part. The downside of the mega is that the data:power pin ratio is really poor. The extra I/O headers on the FreeSoC2 all provide two extra grounds and two extra VCC pins for each port, and if sales of this go well, we'll start releasing extra boards that can be hung off those 2x6 headers.
$49.95? Shouldn't it bee...'Free'? ;0)
Haven't had time to read everything yet, but would it be possible to port the Arduino language (just a variation on C/C++, I know, but I find it easier to use for 'sketching') to the GCC compiler right in PSoC Creator?
I essentially did that, as well.
If you visit the Arduino support repository, you'll find a project called "Uno_blocks". That project has a sketch.cpp file included in it, and if you write Arduino code in there (in the setup() and loop() functions), you'll find it works just like Arduino.
The only real difference is that the Arduino IDE creates function prototypes for you, and Creator won't do that, so if you write new functions you have to remember to create the prototypes as well. All your old friends are there, though- Serial.write, digitalRead and digitalWrite, etc.
Cool. I'll have to try that out with the Cypress boards I already have, unless the FreeSoC2 has special firmware that permits it that stock Cypress boards do not.
Nope. Just download that repo and dig out the workspace and you're set.
This sounds a lot like an FPGA to me, but the description doesn't say FPGA anywhere. How is this different?
Yes, the PSoC combines an ARM processor, a programmable/configurable Analog front end, some programmable logic (more like a PLD than a full blown FPGA), as well as a programmable 8-bit datapath. The native development environment includes has Verilog synthesizer buried in it, if you really need it, but most of the time, you are expected to simply instantiate a soft block from their list of existing blocks that combines PLD , datapath and analog resources.
In any case, the Arduino part simply sounds like they ported the Arduino libraries to the board. The Arduino environment already supports an ARM processor.
I would encourage those who use this board to move away from Arduino APIs. Cypress (if you use their IDE) has already developed useful APIs to use all of their peripherals. And yes, this is not an FPGA but the re-configurable 'fabric' is field-programmable (the ARM takes care of setting everything up by writing to the PLD's configuration registers). Their IDE assists in the configuration of these registers through higher-level menus and other API-like features.
I also created the necessary hardware configuration for the processor to emulate an Arduino. Obviously, if a library or piece of code uses assembly or AVR register access directly, it's going to break on this, but code that relies only on standard C/C++ constructs (or constructs defined within the Arduino "standard") should compile and run without fuss.