So hello guys, welcome to series of Microcontroller tutorials. As Microcontrollers are big thing happening across the globe, but to learn about microcontrollers becomes quite challenging as most of the content on web is theoretical based and quite unorganized. Or the content is only roaming around 2-3 microcontrollers (Arduino, ESP or PIC), even though there are number of Microcontrollers of different vendors. Also, framework of Arduino and Arduino IDE hides most of the things that are going inside the microcontrollers.
If you guys want to start with microcontroller coding and looking for chronological order then you have come to right place.
- How to start with Microcontrollers? – gettobyte
- Hardware Development Kit In Mcrocontrollers – gettobyte
- Software Development Kit In Microcontrollers – gettobyte
Would recommend viewers to read these 3 blogs in order, so as to get understanding on how to get started with any Microcontroller and in what order.
In the last blog we get to know a lot about microcontrollers and how to start with them.
One of the essential and important things to know before starting with microcontrollers is Hardware Development Kit. So let’s start with it.
Objective of this blog
Objective of this blog, will be to understand:
- What is Hardware Development Kit in Embedded (SDK).
- Different components in Hardware Development Kit in Embedded.
- Why there is need of Hardware Development Kit in Embedded.
What is Hardware Development Kit
Hardware Development Kit in embedded is collection of hardware tools to assist developers to design and prototype the products/projects easily on microcontroller and semiconductor chips.
These hardware tools majorly include:
- Microcontroller/SoC
- Development Boards/Evalution Boards
- Debuggers/Programmers
- Breakout Boards
- Hardware Debugging Tools.
Microcontroller/SoC
In the last blog, all we talk about is microcontrollers, so refer to this blog to know what microcontrollers are.
Microcontroller and SoC word would be used quite inerchangibly throughout this blog and in subsequent blogs too. Difference between SoC and MCU is that. (SoC): SoC is a less well-defined term. A SoC is typically an encapsulation of one or more of CPUs, memory, micro-controllers, DSPs, accelerators, and supporting hardware; however, it does not adhere to any standards regarding its containing circuitry. An SoC is intended for applications with requirements that are too complex for a single MCU to handle.
To explore about different microcontrollers best place is semiconductor company websites like and many others:
- NXP® Semiconductors Official Site | NXP Semiconductors
- Analog | Embedded processing | Semiconductor company | TI.com
- Silicon Labs (silabs.com)
- Nordic Semiconductor | Empowering Wireless Innovation – nordicsemi.com
- STMicroelectronics: Our technology starts with you
- and etc
Go to products page of these websites and then navigate to microcontroller-microprocessor section. You will find there are so many microcontrollers which have been categorized in terms of
- Either processor they have (ARM Cortex CPU based, 8 bit CPU based, or some proprietary CPU core)
- Or Microcontroller family name’s (Like LPC series, S32 Series, MSP430 series, Kinetic series, STM32 series)
- Application based( Digital signal processing, IoT protocol’s, peripheral and etc)
- and etc.
Microcontrollers/SoC can’t be used directly, for making projects or learning out the things. Microcontrollers comes in different packaging like BGA, DIP, QFN, QFP, SOP, SQP.
Every package takes up different amount of space. In these packages MCU pins are very small to use and in some packages of MCU, we cant even properly touch individual pins of the MCU (BGA and QFN). Now to connect some sensors/modules to the MCU, we need to connect them to the pins of the MCU. So, there is need of some hardware circuit by which we can expose all these pins of MCU in a way that they can be used for prototyping and developing the embedded application by connecting different sensor/modules. And thus, here comes the story of development boards.
Development /Evalution Boards
Development boards in the field of embedded systems refer to pre-built circuit boards designed to use the microcontrollers/SoC’s.
These boards typically include a microcontroller/SoC or microprocessor, along with essential components required to use the microcontroller like:
- Input/Output interfaces (Header pins, LEDs, Push buttons and etc.),
- Power regulators (For powering the MCU/SoC), and
- Miscellaneous circuit required for microcontroller functioning (oscillator circuit, pull-up/down resistors, decoupling capacitors and etc.)
- Debugging and programming feature.
They provide a convenient platform for developers to test their code, interface with external devices, and evaluate the performance of their embedded system designs.
These development boards are extensively used among the college students, hobbyists for making DIY projects or learn the microcontroller coding by having hands-on over the microcontrollers using these kind of development boards.
These development boards are connected to Host Desktop/Laptop through USB cable via Debugger/Programmer to program/debug the microcontrollers. Thus, these development board provide easy way to use microcontrollers/microprocessor/SoC.
Now for every microcontroller there is a development board for using it. Development boards are designed either by the semiconductor companies itself for their corresponding MCU’s or by the Third-party vendors, like:
Arduino is a development board which has Atmega 328 MCU. Atmega 328 MCU is designed by Microchip Semiconductor company, but Arduino is designed and developed by Third party organization Arduino.
- BluePill is a development board which has STM32F103 MCU. STM32F103 MCU is designed by STMicroelectronics, but Bluepill is designed and developed by third party vendors.
- ElecronicsV1 is development board which has S32K144 Automotive MCU. S32K144 is designed by NXP Semiconductors, but ElecronicsV1 is designed and developed by Gettobyte community.
S32K312 MCU which is Automotive General Purpose MCU designed by NXP Semiconductors, there is development board designed by NXP Semiconductors itself S32K312EVB-Q172.
Another example is NRF52840 SoC for General Purpose IoT applications designed by Nordic Semiconductor, there is development board designed by Nordic Semiconductors itself nRF52840 DK.
- Another example is of STM32WB55 SoC for Low-Power IoT applications designed by STMicroelectronics, there is development board designed by STMicroelectronics itself that is P-NUCLEO-WB55.
- Another example is of MSP430 MCU for General pupose embedded applications designed by Texas Instruments, there is development board designed by Texas Instruments itself that is MSP-EXP430G2ET
- Their is one more SoC of NXP Semiconductors JN5189 IoT SoC. NXP semiconductors design and develop the development board for using it by the name JN5189-DK006 .
- Another Example is of EFR32BG22 SoC for Low Power IoT applications designed by silicon labs, there is development board designed by Silicon labs itself that is EFR32BG22 Thunderboard Kit.
So, you can see in all development boards mentioned above, there are header pins which exposes all or majority of pins of corresponding MCU/SoC, the have either on-board debuggers or support of attaching external debuggers for programming/debugging them and electronic circuits for powering them and miscellaneous circuits.
Debuggers/Programmers
For programming the microcontrollers as mentioned we need some form of debuggers and programmers. Debuggers and programmers are external hardware for microcontrollers. There are industry specified protocols like JTAG and SWD, through which microcontrollers are programmed and debugged. All the ARM cortex based MCU’s support the debugging feature in them via the SWD (Serial Wire Debug). More about debuggers in embedded is told on this blog.
In the debugger/programmer hardware there is a microcontroller which comes factory programmed with some code so as to transfer the code from laptop/desktop to the MCU memory.
For Programming the Microcontrollers, their is mandatory need of some Programmer/Debugger, that one can get to know from the webpage of corresponding microcontroller.
On some Development boards there are on board debuggers either JTAG support, or SWD support or proprietary debug interface of semiconductor company (like OpenSDA from NXP semiconductors, CC Debugger from Texas Instruments, STLINKV2/3 from STMicroelectronics, PICKit from Microchip, DEBUGADPTR1-USB from Silicon Labs and etc.).
Also, there are external debuggers like STLINKV2, OpenSDA Cyclone, Seger universal debugger, PEMicro . Which are used with developments that does not have on-board debug interface.
Breakout Boards
Just like Microcontrollers need some external circuitry to function and use them. Same way for sensor/modules that are used with microcontrollers, need some external circuit too. For sensor/modules these boards are termed as Breakout Boards. Like for
- MFRC522 is RFID Reader/Writer IC, has mentioned breakout board for connecting it to microcontroller easily.
- MPU6050 is Gyroscope sensor IC, but it has its breakout board so that it can be connected to MCU for prototyping and development.
- SSD1306 is OLED Screen Driver IC, has OLED Screen breakout board module like this for connecting it to MCU via I2C/SPI peripheral.
- MAX30100 is oxygen sensor IC, but it has below shown breakout board, which exposes its pin for connecting it to MCU via I2C peripheral.
- HLW8012 is AC power measurement sensor, but it has below mentioned breakout board for connecting it to MCU.
- VL53L0X is Time of flight sensor IC, and it has below shown breakout board for connecting it to MCU .
Cables/Connectors and jumper Wires
For Connecting sensors and modules with microcontrollers, there is need of wires. Those Wires are termed as Jumper Wires. Also, sometimes to make firm and proper connection there is need connectors, to make circuits clean and neat.
To connect Microcontrollers to Host Desktop via programmers/debuggers, their is use of Cables. Multiple type of Cables are used, like USB Type C, mini USB Cables and etc. Depending on the kind of connection given on Development board of MCU.
Miscellenous Hardware
Multimeters, wire cutters, soldering station, logic analyzers, oscilloscopes and breadboards.
Why is their need of Hardware Development Kit
Microcontrollers are Integrated chips; we can’t use the chips directly as microcontroller are electronic chips. So, they need some power source to get on and work. Apart from the power source they also need some extra electronic circuits so as to function properly. Just like we humans need food and water to live, same way kind of microcontroller need constant power source and electronic circuit to work.
Power source that is provided to microcontrollers is of +5 or +3.3 DC voltage. And extra electronic circuit is majorly of oscillator circuit for, some resistors and capacitors for MCU boot-up configurations and miscellaneous. So, these electronic circuitries for power source and miscelleneous is designed on the development boards and
Also as mentioned in last blog, these microcontrollers need to be programmed for their working (Embedded Software/Firmware development). Now we program/write code in our laptops/desktop, this code has to be transferred into the microcontroller. For that thing we need some hardware which transfers the code from our system to the microcontroller memory for execution. This device is called programmer. Along with programmers we often would be using the word debuggers. That is used to debug the program that is written in microcontrollers and see how microcontrollers performs by executing the program line by line. These programmers and debuggers are hardware tools which are necessary for using the microcontrollers, without which we can’t program our microcontrollers. More on programmers and debuggers in below section.
To conclude
Well to start the development or hands on microcontroller, from the hardware end we need below mentioned things:
- Development board of the microcontroller that is going to be used.
- External Debugger that is compatible with the microcontroller that is being used(if their is no -onboard debugger on the development/evalution board of MCU).
- Cables for connecting the debugger/development board to the Laptop/PC.
- Connecting wires for connecting external sensor/module to the host MCU development board
- Breakout boards of different sensor/module so that those can be connected to different peripherals of the MCU by using MCU development board.
Now to get started viewers can start with NXP Semiconductors S32K144 MCU, its breadboard and easy to use development board is designed and developed by Gettobyte. But you have buy the external debugger/programmer for dumping code on it( I am trying to make its external debugger too just like STLINKV2 using OpenSDA interface). Also their are proper firmware development tutorial blogs on S32K144 MCU for starting with it.
To get started with NXP Semiconductors S32K144 MCU, refer these blogs:
More Blogs to read
Author
Kunal Gupta
Author: Kunal Gupta
Author