This post is part of my Roadtest Review of Cypress PSoC 62S2 Wi-Fi & BT5.0 Pioneer Dev Kit - Review. My review is splitted into multiple reviews and tutorials. Main page of review contains brief description of every chapter. Some projects are implemented in multiple variants. Main page of review contains brief description about every chapter, project and variants and contains some reccomendations for reading.
Table of Contents
- Intruction, Table of Contents, Overview of Table of Contets
- Review of Development Board (this article)
- Review of Microcontroller
- Review of Wi-FI and BT Module
- Review of Onboard Peripherals
- Review of Onboard Programmer and Debugger
- Review of Development Software
- Review of Documentation
- Project 1 - Serial Interfaces
- Project 2 - Simple Cloud Application
- Project 3 - FRAM
- Project 4 - CapSense and Bluetooth
- Project 5 - Dual Core Application
- Project 6 - Profiler
- Summary and Score
Review of Development Board
Overview of the board
At the beginning I will describe what the Cypress PSoC 62S2 Wi-Fi BT Pioneer kit really is because as the name says it is little bit complicated. The board is often referenced as CY8CKIT-062S2-43012. This is most important name. You will search at all documentation to this specific board under that name and all codes/examples/libraries refer this board using this name. The name of board respects onboard modules, chips and features which it offers. Because there are lot of things that you can do with this board, this resulted into very long name. I will refer whole board as “development board” because their official name is very long. If you search for the schematics of the board you will find them under name “CYW9-BASE-01”. At the first page of schematics is written that board is modification of that generic design. This is probably reason why multiple pioneers kit looks very similar – Cypress made one reference design and then specific pioneers like roadtested CY8CKIT-062S2-43012 derives from it with some modification like exchanging WiFi + BT module with another one. The following picture shows whole development board and later I will show what modules and chips we can found on that board and what are they used for.
Board has soldered another board – module onto it. Following image shows marked module. I will refer this module as “Main module”. Module is named CY8CMOD-062S2-43012. Please note that this name is very similar with name of the board itself. It differs only in exchanged MOD and KIT in the first part of name. I did not found any official webpage for this module and it looks like that there are no possibility to buy them alone for soldering to custom designed board. I consider it as disadvantage because module looks very well designed, it is small when considered his features and how much pins it exposes. Maybe cypress will bring it to the market later.
The module contains two “big” ships (and some passive electronics). The black one is PSoC 6 MCU. I will refer it is as “main MCU” and it is Cypress PSoC 6 MCU. It is CY8C624ABZI-S2D44. It is reviewed in detail in chapter “Review of microcontroller”. Following image shows him. Also note that name of this chip is referred in the second part of name of module and board.
The second chip – the white one is Wi-FI and BT module. Following picture shows the module. It is Type 1LV from murata. While this may at the first look implicate that this chip does not came from Cypress, but this is true only partially. The main core of this chip (inside them) is chipset from Cypress, and it is CYW43012. This chip is reviewed in chapter “Review of Wi-FI and BT module”. Name of chipset of this chip makes the third part of board and module name.
Three black chips remain. The rectangular chip placed at left is another PSoC from cypress. It is PSoC 5LP with full name CY8C5868LTI-LP039CY8C5868LTI-LP039. This chip is not programmable form the user side. It is programmer and allows you to program and debug main MCU. This onboard programmer is named KitProg3 and is reviewed in detail in chapter “Review of programmer and debugger”. Following picture shows up KitProg3 programmer MCU.
The bigger of center chip is SPI Flash with full name S25FL512SAIF01. It is from Spansion which is now part of Cypress. Following picture shows them.
And the last one is CY15B104QSN (this name came from datasheet, package of chip itself contains text “CY152B3”). It is FRAM. It is shown on the following picture. Technical details (including details for the previously mentioned FLASH) are in chapter “Project 3 – FRAM”.
Other parts are easily resolvable. There are buttons, LEDs, pin headers for expansion, touch buttons at the right bottom corner, potentiometer, jumpers, power jack, USB connectors and lot of passive electronics. At the bottom there are lot of passive electronics, voltage translators, probably some protecting circuity, soldering jumpers, some pads for unsoldered components, micro SD card slot and rubber stands.
The board itself looks very high quality. Cypress placed lot of useful labels onto it but some of them are from the bottom what you usually don’t see. But they are here and can be helpful at least at beginning phase of development where you are configuring ports. While board is not smallest board available on market it is easy to hold it in hand. All corners are round and edges are not sharp.
Powering options
While there are powering jack requiring 12V rated for 1A the board can be fully powered using programmer’s micro USB from computer. I am not sure why there are 1A “requirement” because no onboard component is so hungry at all, but I think that 0.5A is sufficient. Also remember that board is designed to evaluate low power IoT system. The interesting part is that board contains circuit that can disconnect components form the power supply form the software using KitProg3 programmer. There is button for that in Cypress Programmer (utility is described in more details in chapter “Review of development software”). This is interesting feature which is not very common and may be useful for debugging resets, reset sources or some other stuff. This is reason why power led is present on the board. If you think that it lights all the time you are not correct. When you disconnect components from power supply using software it will turn off while KitProg programmer is still working. In addition, programmer checks voltage of main MCU and in case of voltage drop it prints information about it to the debugger console (present in IDE).
Main MCU (and some other peripherals) can be powered using two voltage sources and you can change that using jumper. Available options are 3.3V which is default and 1.8V.
According to schematics there are some protections. Developers of the board went into huge details with it. For example, micro USB connector is connected over protection circuit that protect main MCU from being burned by 5V from some mobile phone charger with micro USB output. I am not sure if anyone have really considered connecting any USB charger to that port but probably there are some users who will get saved by this protection. I have not tested it :-)
Unsoldered components
There are few unsoldered jumpers and components with lot of purposes (in fact the most of users still don’t want to use them). Unsoldered pin headers expose ports from MCU or other components that includes some special features like external wakeup from sleep mode which most users still do not use. I consider unsoldered component as disadvantage of board, but it is not a significant issue. Unsoldered pins feature only few pins and are used maybe for debugging or testing in factory. For example, there are exposed pin of SPI FLASH which is marked as DNU (Do not use). In schematics, Wire connected to this pin is named “FLASH_INT_L” so there is probalby some undocumented secrecy about it. If you want to discover more about that secrecy you must still solder one 0 ohm resistor to get access to this port. Additional unsoldered component is header for ETM trace. If you want use ETM trace (it is interface for exporting information about executed instruction directly from ARM cores. Some development environments can read that using additional debugger) you must (according to manual) desolder some resistors, solder another resistors and finally solder the missing connector. So, In fact it also make sense that it is unsoldered (because it requires additional work to make it working) but I still consider it as disadvantage. The third unsoldered component is I2C EEPROM. It is mentioned in schematics and you can solder it yourself if you want but because of very small footprint It is not easy.
Expansion header
Board contains expansion header compatible with Arduino format so if you have any Arduino Shield (HAT), you can use it. Normal Arduino UNO connector contains 20 GPIO pins. Some Arduinos have this connector extended with additional 2 I2C wires which are also present on development board. Because main MCU offers 104 GPIOs it is very limiting exporting only 20 of them to the board. Developers of board realized that and they extended Arduino connector with additional pins in way to retain compatibility with Arduino connectors. There are additional 2 analog ports (by term “analog port” I mean GPIO port that can be used by ADC) so you can use full 8 (in fact it is 7, because A6 is shared with potentiometer) analog ports instead of only 6. Connector featuring analog ports also have second row of pins so there are additional 8 digital GPIOs and opposite connector has additional 2 pins that can except standard GPIOs act as second I2C (there are multiple devices on this exposed bus, except main MCU there are also Programmer that has USB-I2C Bridge and unsoldered I2C EEPROM). This “upgrades” that developers have made resulted that you have 32 GPIOs available on connector. There are also some GPIO pins available thru unsoldered connectors. As I mentioned before They are exposed because they contain connection to some interesting signal of some peripheral of main MCU and advanced users who want to use that peripheral may use it using this connector. I analyzed if ports of all peripherals are available over at least one pin which is present on expansion connector and I found two that two are not. First ones are lpcomp.dsi_comp wires which are not available on any pin at all. It is output of low power analog comparator (one per each comparator). That pin it is also routed inside MCU so it is still accessible from software and can be exported to any GPIO using small hacks of interconnecting with other peripherals or software processing (detailed information about interconnecting peripherals of MCU are in chapter “Review of microcontroller”). Second one is cpuss.clk_fm_pump. I have not found any further information what it is exactly. You probably do not need it. It is connected over 2.2nF capacitor to ground. I guess that this is “Analog Pump Clock” referred in first paragraph of Clock Trees chapter (chapter 20.5) in TRM (Technical Reference Manual, more details about TRM are provided in chapter „Review of documentation “). Paragraph says that this is described in this chapter, but it is not (or I did not find it, I searched for words “pump” and “analog” and no other occurrences was found in this chapter). Except that two minor features All others including all 4 slave selects for SPI, advanced features of UART like RTS and CTS, wires for audio subsystem (I2S and PDM to PCM “converter”) and much more are fully available thru at least one pin of expansion port (some components are available in multiple pieces, for example you can use 3 SPIs at the same time), connector (SDHC) or there are peripherals connected to it (for example FRAM, SPI and SWD for debugging). State that almost all peripherals are available to use after reduction from 104 ports to 32 I consider as good work from board designers. The last thing I must mention that port numbering scheme of exposed GPIOs is very friendly to remember. At right top port there are pins from P5_0 to P5_7 (more details about port numbering system of MCU is in chapter “Review of microcontroller”), and bottom right connector expose P10_0 to P10_7 and P9_0 to P9_7 on extended row of pins. You need to remember only 5, 9 and 10, the second number can be easily determined. On lot of other development boards on the market port numbering looks very randomly and you need documentation to determine where the specified ports are located.
Onboard labels
Except pinout labels and component names at silkscreen, there are cypress logo, logo of (maybe PCB’s manufacturer) PLOTECH and information that board is revision 08. There is some location with text “QR code” but there are no QR code present. I found labels useful multiple times when I was creating testing projects.
LEDs
There are four single-color leds and one RGB led. Power led I have already mentioned. Second non-user-controllable Led is led indicating status of KitProg3 programmer (details about this led are in chapter “Review of programmer and debugger”). Remaining two and one RGB leds are user controllable from main MCU. I like that user-controllable leds have higher brightness than power and KitProg3 leds so you will always pay attention to only leds controller by your application and will not be confused by other leds. The brightness of green led of RGB led is so high. If you enable all channels (red, green, and blue) the color will not be white, but it will be light green. Brightness of red and blue is correct. Sadly, the LEDs does not work correctly when target voltage is selected to 1.8V. In that case red led works, orange lights only little, green and blue channels of RGB does not lit at all and red channel lit with very reduced brightness.
Other components
All user interactive components (buttons, capacitive widgets, and potentiometer) are at the border of board, so you do not need to worry about accidently touching the PCB. They are easily accessible.
Board contains 7 capacitive buttons (2 buttons + 5 buttons formed into slider). Details about that is in chapter “Review of onboard peripherals” and “Project 4 – CapSense and Bluetooth”.
Mechanical features
Board contains rubber stands so it is stable, does not wobble and bottom side of board do not touch your desk directly.
Micro USB connectors are attached to board with additional soldered wire which improves their mechanical properties. This is also not so common in comparison with other development boards.
Packaging and default software
By default, the board come with preprogramed example which blinks with one led, prints “Hello World” and links to examples at GitHub over UART. You can enable/disable of blinking led using enter. It is the same example as presented on GitHub.
Board is packaged in beautiful solid box. Box has written links to documentation, quick starts and community forum onto it from the back side. Box is padded with antistatic foam so the board itself is not packed in antistatic bag. Except board there are 6 wires, 1-meter-long Micro USB cable and printed quick start guide featuring pinouts of expansion ports and description of preinstalled demo software.
Price
Very interesting part of board is it’s price. At Cypress Website it is rated as $112.5, at Newark it is $125 and in my nearest local Farnell branch it is 3111 Czech Koruna (converted to USD it is approx. $142.39 at the time of writing). I think this is good prices for the board featuring one of the most advanced MCU in family, WiFi + BT chip, two memories including very expensive FRAM and capacitive buttons which increase of cost of PCB manufacturing. It is very hard to compare because different vendors provide different boards with different peripherals. I have look at the lowest cost category of development boards from Cypress and found that Cypress sells some boards with price as low as $10 efficiently beating smallest STM32 Nucleo bords (also very cheap). CY8CKIT-147 is very similar to these nucleo boards, features PSoC4 MCU, also has onboard debugger and it is rated $10 at Cypress site. At newark it is also exactly $10 and in my nearest Farnell I can bought it for 263 Czech Crowns which is the same price I can bought NUCLEO-F031K6NUCLEO-F031K6 for and it is equivalent of 3 days public transport ticket in our capital. I think that Cypress like other vendors pushes price as low as possible to make their chips more available and possibly increase the number of users using their chips in batch production later. Personally, I recommend buying it under $150 so I think the official price is fine.