Watch Demo

Rs. 849  Rs. 749

Learn Microcontroller Programming and Embedded Systems Driver Development

Master Microcontroller Programming & Peripheral Driver Development for GPIO, I2C, SPI, USART, using C Programming. Learn from scratch along with hands on coding.

Lifetime access
2 learners
Why should you take this course?

Whenever an individual comes across terminologies like GPIOs, SPI, I2C, USART, CLK, PLL, AHB, APB, NVIC, IRQs, ISRs in the embedded systems domain, they feel very uncomfortable. Consequently, they carry the notion that these concepts are way too advanced and difficult to learn. In this course, the learner is taken through every procedure, one step at a time. One would learn how to code some of the peripherals entirely from scratch followed by debugging sessions.

At the end of this course, one can expect to feel confident in handling any MCU. Moreover, exposure to all the practical details of programming the peripherals is assured. Note that this is a generic course and it is not tied to one particular microcontroller. The knowledge gained from this course can be leveraged on any microcontroller. 

Read more
Course Objectives

By the end of this course you will be able to:

  • Learn the correct way to tackle micro-controller programming
  • Understand complete driver development steps right from scratch for GPIO, SPI, I2C, and USART
  • Explore microcontroller datasheets, reference manuals, and start-up codes to get things done
  • Understand behind the scene working details of SPI, I2C, GPIOs, USART, etc.
  • Learn to enable/configure clocks/peripheral clocks and baud rates of various serial protocols
Read more
Who is this course for?
  • Professionals interested in exploring microcontrollers and embedded systems
  • Hobbyists and students who want to start their career in the embedded system world
  • This course is for everyone who is looking for courses containing information on 'embedded system datasheets'. 

Course Plan

1. Overview of the Course
1 video
Overview of the course 05:57

How to download course resources?
2. GPIO Must know concepts
7 videos
GPIO input mode with pull-up/down state 01:16

GPIO output mode with open drain state 05:53

GPIO output mode with push pull state 02:47

Optimizing I/O power consumption 03:11
3. GPIO Programming structure and Registers
10 videos
GPIO programming structure 02:45

Exploring GPIO PORT and pins of STM32F4xx Discovery board 00:57

GPIO Mode register (used to set mode for a pin) 03:08

GPIO port output type register (used to specify o/p type) 01:22

GPIO port output speed register (how quick transition?) 02:39

GPIO port pull-up/pull-down register (used to activate/deactivate pull-ups) 01:36

GPIO port input data register (used to read from pin) 01:00

GPIO port output data register (used to write to pin) 00:52

Enabling and disabling GPIO peripheral clock 02:42

GPIO alternate function register (used to set alternate functionality for a pin ) 03:45
4. GPIO Driver Development: Lab Setup
5 videos
Hardware/Software Requirements

Intalling KEIL MDK 5 IDE 02:17

Installing software packs 02:06

Creating your first KEIL project 03:50

Debugging project using KEIL µVison-4 IDE 04:00

Understaning the discovery board 01:52
5. GPIO Driver Development: Getting started
2 videos
Overview of the driver development task 01:34

Driver API requirements 01:47
6. GPIO Driver Development: Explore MCU specific header file
3 videos
Exploring MCU specific header file 03:21
7. GPIO Driver Development : Driver header file
1 video
Implementing driver header file 05:49
8. GPIO Driver Development: Implementing Init API
4 videos
Code to configure the mode 02:35

Code to configure GPIO speed and output type 01:27

Code to configure GPIO pull-up/pull down 01:17

Configuring alternate function 02:28
9. GPIO Driver Development: Implementing Read/Write APIs
2 videos
Implementing GPIO read API 01:14

Implementing GPIO write API 00:58
10. GPIO driver Code testing:Writing Sample APP
4 videos
Write init function to configure LED 03:58

Code implementation to turn on/off/toggle LED 01:41

Testing the sample application on development board 01:16

Testing LED behaviour on logic analyser software 02:06
11. GPIO Interrupt Handling
7 videos
Exploring how peripherals interrupts the processor via NVIC 08:08

GPIO irq numbers 04:36

Vector table and IRQ handlers 02:01

Adding interrupt handling apis to our driver 01:58

Implementing APIs to configure and enable external interrupts 04:48

Clearing external interrupt (otherwise NVIC will keep getting kicked ) 01:11

Test interrupt APIs we developed by using button 03:14
12. SPI Essentials (All about SPI)
3 videos
Introduction to SPI 00:59

Understanding SPI protocol 07:29

SPI behind the scene 02:25
13. What is phase , polarity and SPI modes ?
3 videos
Significance of polarity and phase 04:59

Different SPI modes with timing diagram 03:22

Uni-directional and Bi-directional SPI 04:05
14. SPI: Functional Block and Clock
2 videos
Exploring SPI functional block (how SPI engine works in MCU?) 03:07

SPI peripheral clock and serial clock 05:37
15. SPI Important Registers
3 videos
Exploring SPI Control Registers(CR) 04:45

Exploring SPI Data Registers(DR) 01:44

Exploring SPI Status Registers(SR) 01:20
16. SPI Driver Development: Getting started
3 videos
Overview 01:34

Driver API requirements 01:12

Exploring different SPI peripherals and pin packs of the MCU 01:03
17. SPI Driver Development : Writing Driver header file
3 videos
SPI register bit definitions macros(converting register details in to macros) 02:42

SPI data structures 06:01

Driver exposed APIs to handle SPI 03:18
18. SPI Driver Development: Implementing init API
5 videos
Writing init function and helper functions 00:53

Configuring mode, phase and polarity 01:27

Configuring datasize, baudrate and direction 01:25

Configuring NSS(Slave select pin ) 03:51

Enabling/Disabling SPI peripheral 01:00
19. SPI Driver Development: Implementing TX/RX API
4 videos
Implementing TX API for master 02:58

Implementing RX API for master 01:48

Implementing TX API for slave 02:33

Implementing RX API for slave 00:56
20. SPI Master/Slave Communication
2 videos
How does SPI master TX/RX data ? 07:33

How does SPI slave TX/RX data ? 04:00
21. SPI Driver Development: Implementing TX ISR
4 videos
Understanding SPI TX/RX IRQ numbers 04:11

Setting up TXE/RXNE interrupt 01:10

Writing SPI IRQ handler 02:22

Handling SPI Tx interrupt 02:46
22. SPI Driver Development: Implementing RX ISR
1 video
Handling RX done interrupt in ISR 01:04
23. Writing SPI sample application: Getting Started
2 videos
Understanding the requirements 02:20

Understanding connection diagram 01:26
24. Writing SPI sample application : Master Code
4 videos
Initialization 10:12

Defining various IRQ handlers 02:10

Master write sequences (send CMD, get ACK, send data) 03:41

Master receive sequences(Send CMD, get ACK, get data) 01:30
25. Writing SPI sample application : Slave Code Implementation
2 videos
Initialization 00:50

Slave handling read/write command from master 03:48
26. Testing , Decoding and Debugging Tips
4 videos
Initial testing on hardware 02:33

Capture SPI transcation on logic analyzer 03:31

Decoding SPI transcation using logic analyzer 03:44

Common problems in SPI and debugging Tips 06:14
27. I2C Essentials
2 videos
Intro to I2C protocol 05:36

I2C hardware setup 02:17
28. I2C protocol in Detail
8 videos
Basics 02:14

Address phase 00:59

Start condition 01:03

ACK/NACK 01:08

Stop condition 00:38

Master read/write data phase 02:35

Repeated start (start with out a stop ) 04:20

Clock stretching 03:31
29. I2C Operating Modes
2 videos
I2C in fast mode and standard mode 01:44

I2C duty cycle 04:00
30. I2C Addressing mode
2 videos
7 bit addressing 01:35

10 bit addressing 01:32
31. I2C Functional block diagram and Clocks
2 videos
Exploring I2C functional block in the MCU 02:40

I2C peripheral clock and serial line clock(Fpclk and SCL) 04:37
32. I2C Interrupts
2 videos
I2C IRQs and interrupt mapping 05:29

Exploring I2C IRQ numbers 02:08
33. I2C Peripheral : Registers
5 videos
Exploring I2C control registers(CR) 05:16

Exploring I2C own address registers(OAR) 01:09

Exploring I2C data register(DR) 01:48

Exploring I2C status registers(SR) 04:49

Exploring I2C clock control register(CCR) 02:44
34. I2C Master/Slave Communication
3 videos
How I2C Master TX data? 04:58

How I2C Master RX data? 11:09

How I2C Slave TX data? 01:36
35. I2C Driver Development: Getting started
3 videos
Overview 01:27

Understanding the requirements 00:51

Exploring different I2C peripherals and pins of the MCU 01:27
36. I2C Driver Development: Driver header file
3 videos
I2C Register bit definitions macros 02:42

I2C Data structures 06:05

I2C Driver exposed APIs 01:46
37. I2C Driver Development : Init Function
8 videos
Init API and helper functions 00:57

Code implementation to enable/disable I2C peripheral 00:40

Configure clock stretching , own address , auto ACKing 01:46

Configure I2C mode, addressing mode and duty cycle 01:51

Code to initialize I2C serial clock 02:53

Code to generate start/stop condition 01:17

Enabling/Disabling buff, event, and error interrupts 01:10

Other helper functions 01:30
38. I2C Driver Developemnt : Writing TX/RX API
4 videos
Implementing TX API for MASTER 03:04

Implementing RX API for MASTER 02:10

Implementing TX API for SLAVE 01:20

Implementing RX API for SLAVE 01:04
39. I2C Event Interrupt handling for master
3 videos
Implementing event interrupt handler 01:49

Handling of TXE event for master 01:09

Handling of TX BTF event for master 01:28
40. I2C Event Interrupt handling for slave
5 videos
Handling of slave address match event 01:11

Handling of STOP detection event interrupt 01:29

Handling of TXE event interrupt 02:06

Handling of TX BTF event interrupt 00:37

Handling of RXNE and BTF event interrupt 01:27
41. I2C Error Interrupt Handling
2 videos
Writing error interrupt handler 02:13

Handling of different I2C Errors 02:08
42. Writing I2C sample application : Getting ready
2 videos
Understanding the requirements 02:25

Understanding connection diagram 00:40
43. Writing I2C sample Application : Master Code
5 videos
I2C initialization 08:38

Implementing I2C IRQ handlers 01:56

Implementing master write sequences(cmd,length,data) 02:11

Implementing master read sequences(cmd,length,data) 01:33

Slave handling read/write command from master 02:06
44. Testing and Protocol Decoding using logic analyzer (lets get the trace )
3 videos
Initial testing on hardware 02:14

Decoding and analyzing I2C transaction using logic analyzer 07:15

Common problems in I2C and debugging tips 03:50
45. UART Essentials
6 videos
Intro UART vs USART 03:14

Understanding UART pins 02:34

UART frame formats 01:46

Baud rate 02:18

Synchronization bits 01:29

UART parity 03:53
46. UART functional block and Peripheral Clock
2 videos
Exploring UART functional block 02:26

UART peripheral clock 01:53
47. UART Communication
2 videos
UART transmitter 03:17

Uart receiver 04:29
48. UART Interrupts
1 video
Exploring UART interrupt mapping 03:25
49. UART : Registers
4 videos
Exploring UART control registers 04:12

Exploring UART data registers 01:51

Exploring UART status registers 04:02

UART baudrate calculation 06:05
50. UART Driver Development : Getting Started
3 videos
Overview 01:23

Understanding the requirements 01:03

Exploring different UART peripherals and pins of the MCU 01:33
51. UART Driver Development : Driver Header File
2 videos
UART register bit definitions macros 01:26

Data structures used and driver exposed APIs 04:14
52. UART Driver Development: Writing init Function
3 videos
Writing init function and helper functions 03:34

Configuring word length, stop bits 01:21

Configuring baudrate, oversampling and interrupts 05:02
53. UART Driver Development: Writing TX/RX function
2 videos
Writing TX function 02:23

Writing RX function 02:00
54. UART Driver Development: Interrupt Handling
4 videos
Implementing UART IRQ handler 06:00

Handling TXE interrupt 02:01

Handling of TX complete interrupt 01:53

Handling RXNE interrupt 03:05
55. UART sample application : Getting ready
3 videos
Understanding the requirements 01:49

Understanding connection diagram 02:12

Exploring uart sniffer software for pc 02:09
56. UART sample application : Implementation
2 videos
UART initializations and Txing 03:55

Receiving commands from PC 01:44
57. Running and Testing
1 video
Testing on hardware 02:00
58. Creating printf library for your board
3 videos
Introduction 01:02

Implementing UART print apis 04:17

Creating static library in KEIL and testing 04:48
59. MCU Clocks: Configurations and Measurements
4 videos
Exploring System , AHB, APB clocks of the MCU 09:03

Clocking MCU by using external crystal oscillator(HSE) 03:23

Measuring HSE,HSI, PLL and system clock(Routing Clocks to GPIOs) 09:05

Clocking MCU by internal PLL (Running MCU at Full Speed) 06:39

Meet the Author

FastBit Embedded Brain Academy
Embedded/Firmware Engineering
The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.
More from FastBit Embedded Brain Academy


You may also like