Course Highlights
  • Understand Right ways of Handling and programming MCU Peripherals
  • Develop Peripheral drivers for your Microcontroller
  • Understand complete Driver Development steps right from scratch for GPIO,SPI,I2C and USART.
  • Learn Writing peripheral driver headers, prototyping APIs and implementation
  • Explore MCU data sheets, Reference manuals, start-up Codes to get things done
  • Learn Right ways of handling/configuring Interrupts for various peripherals
  • Learn about Peripheral IRQs/Vector table/NVIC interfaces and many
  • Learn about Configuration/status/Control registers of various Peripherals
  • Demystifying behind the scene working details of SPI,I2C,GPIOs,USART etc.
  • Explore hidden secretes of MCU bus interfaces, clock sources, MCU clock configurations, etc.
  • Understand right ways of enabling/configuring peripheral clocks/serial clocks/baud rates of various serial protocols
  • Learn about MCUs AHB, APB bus protocols
  • Learn about different MCU clocks like HCLK, PCLK, PLL,etc
  • Learn to capture/decode/analyze traces of serial protocols on Logic analyzer
  • Learn about Quick ways of debugging peripheral issues with case studies
Curriculum

5 Topics
About the instructor
Important Note
What is this course all about ??
Source Code and Slides
Rating and Review

1 Topic
About MCU Development board

1 Topic
Hardware/Software Requirements

5 Topics
Downloading STM32CUBEIDE
Installation-Windows
Installation-Ubuntu
Embedded Target
Documents required

4 Topics
Creating Hello-World project
SWV working principle
Testing Hello-World through SWV
OpenOCD and Semihosting to use printf

10 Topics
Debugging options
Single stepping
Disassembly and Register windows
Breakpoints
Expression and variable windows
Memory browser windows
Call stack and fault analyzers
Data watch-points
SFR windows
Other basic features of IDE

4 Topics
Understanding Memory Map of the MCU: Part 1
Understanding Memory Map of the MCU: Part 2
Understanding Memory Map of the MCU: Part 3
Test your understanding

5 Topics
MCU Bus Interfaces Explanation Part 1: I-Code/D-Code/S-Bus
MCU Bus Interfaces Explanation Part 2: AHB/APB1/APB2
MCU Bus Interfaces Explanation Part 3: Q/A session
Understanding MCU Bus Matrix
Test your understanding

1 Topic
Understanding MCU Clocking System:Part1

7 Topics
Understanding MCU clock sources and HSE
HSI and RCC registers
Peripheral clock configuration
Exercise : HSI measurements
About USB logic analyzer
Code implementation
Exercise : HSE measurements

1 Topic
Understanding MCU Vector Table

3 Topics
Understanding MCU interrupt Design NVIC Interrupt handling: Part 1
Understanding MCU interrupt Design NVIC Interrupt handling: Part 2
Understanding MCU interrupt Design NVIC Interrupt handling: Part 3

2 Topics
Importance of "Volatile" Keyword: Part-1
Importance of "Volatile" Keyword-Part 2

8 Topics
GPIO pin and GPIO port
GPIO behind the scene
GPIO input mode with high impedance state
GPIO input mode with pull-up/down state
GPIO output mode with open drain state
GPIO output mode with push pull state
Optimizing I/O power consumption
Test your understanding

9 Topics
GPIO programming structure
Exploring GPIO PORT and pins of STM32F4xx Discovery board
GPIO Mode register(used to set mode for a pin)
Input configuration of a Microcontroller's GPIO Pin
Output Configuration of a GPIO Pin in Push pull mode
Output Configuration of a GPIO Pin in open drain mode
Input stage of a GPIO pin during output configuration
Alternate functionality Configuration of a GPIO pin
GPIO out put type register explanation

4 Topics
GPIO output speed register and its applicability
GPIO Pull up and Pull down register
GPIO input data register
GPIO output data register and summary of various modes discussed

6 Topics
Alternate functionality settings of a GPIO pin with example : Part 1
Alternate functionality settings of a GPIO pin with example : Part 1
Request for Review
Find Out I/O Alt Functionality
Test your understanding
Test your understanding

1 Topic
Enabling and disabling GPIO peripheral clock

5 Topics
GPIO driver development overview
MCU Specific header file and its contents
New project creation and creating MCU specific headerfile
Include path settings
Important note on IDE usage

6 Topics
Writing base address C macros for MCU's embedded memories : Part 1
Writing base address C macros for MCU's embedded memories : Part 2
Defining base addresses of different bus domains
Defining base addresses of AHB1 Peripherals
Defining base addresses of APB1 and APB2 Peripherals
Defining base addresses conclusion

3 Topics
Address of peripheral registers
Structuring peripheral registers
Peripheral definition macros

2 Topics
Writing peripheral clock enable and disable C Macros
Project include settings and build

5 Topics
Creating GPIO driver header and source file
Defining GPIO handle and configuration structure
Driver API requirements and adding API prototypes
Driver API input parameters and return types
Driver empty API implementation and documentation

1 Topic
Implementation of GPIO peripheral clock control API

5 Topics
Writing user configurable macros
Implementation of GPIO init API
Implementation of GPIO init API contd.
Configuring Alternate function registers
GPIO de-init API implementation

3 Topics
Implementation of GPIO input port read and input pin read APIs
Implementation of GPIO output port write and output pin write APIs
Implementation of GPIO pin toggle API

6 Topics
Exercise : LED toggling with PUSH PULL configuration
Exercise : LED toggling with OPEN DRAIN configuration
Exercise : Handling on board LED and Button
Exercise : Connecting external button and circuit explanation
Exercise : Testing button interface
Exercise : Button interrupt introduction

7 Topics
GPIO pin Interrupt configuration coding : Part 1
GPIO pin Interrupt configuration coding : Part 2
GPIO pin Interrupt configuration coding : Part 3
GPIO pin Interrupt configuration coding : Part 4
GPIO pin Interrupt configuration coding : Part 5
GPIO pin Interrupt configuration coding : Part 6
GPIO pin Interrupt configuration coding : Part 7

3 Topics
Exercise : External button interrupt implementation
Exercise : Debugging the application : Part 1
Exercise : Debugging the application : Part 2

3 Topics
STM32 Pin specifications
Pin current characteristics
Logic levels

5 Topics
Introduction to SPI Bus
SPI comparison with other protocols
Importance of SPI slave select pin
SPI Minimum bus configuration
SPI behind the scene data communication principle

2 Topics
SPI bus configuration discussion : full duplex half duplex and simplex
SPI functional block diagram explanation

2 Topics
NSS settings in STM32 master and slave modes
STM32 SPI hardware and software slave managements

2 Topics
SPI CPOL and CPHA discussion
SPI CPOL and CPHA waveform example

2 Topics
SPI peripherals of your Microcontroller
SPI Serial clock frequency

3 Topics
SPI API requirements and configuration items
updating MCU specific header file with SPI related details
SPI adding API prototypes to driver header file

1 Topic
Implementation of SPI peripheral clock control API

3 Topics
SPI user configuration options writing and register bit definition macros
Implementation of SPI init API : Part 1
Implementation of SPI init API : Part 2

4 Topics
Implementation of SPI send data API : Part 1
Implementation of SPI send data API : Part 2
Implementation of SPI send data API : Part 3
Implementation of SPI send data API : Part 4

6 Topics
Exercise to test SPI Send Data API
Finding out microcontroller pins to communicate over SPI2
Exercise : Code implementation : Part 1
Exercise : Code implementation : Part 2
Exercise : Code implementation : Part 3
Exercise : Testing

5 Topics
Exercise : Communicating with Arduino slave
Exercise : Coding Part 1
Exercise : Coding Part 2
Exercise : Coding Part 3
Exercise : Testing

2 Topics
Implementation of SPI data receive API : Part 1
Implementation of SPI data receive API : Part 2

4 Topics
Exercise : SPI command and response based communication
Exercise : Coding Part 1
Exercise : Coding Part 2
Exercise : Coding Part 3

1 Topic
SPI peripheral interrupting the processor

3 Topics
SPI interrupt mode API implementation and changes to handle structure
SPI send data with interrupt API implementation
SPI receive data with interrupt implementation

5 Topics
SPI : Handling of interrupts
SPI IRQ handler implementation : Part 1
SPI IRQ handler implementation : Part 2
SPI IRQ handler implementation : Part 3
Exercise

1 Topic
Common problems in SPI and Debugging Tips

2 Topics
I2C introduction and differences with SPI
I2C SDA and SCL signals

1 Topic
I2C standard and fast mode

5 Topics
I2C Protocol explanation
I2C START and STOP conditions
I2C ACK and NACK
I2C Data validity
Quiz SPI and I2C

2 Topics
Example of master writing to slave
Understanding repeated START condition

1 Topic
I2C functional block diagram

5 Topics
I2C driver API requirements
I2C handle and configuration structure
I2C user configurable macros
I2C API prototypes
Steps for I2C init implementation

2 Topics
I2C serial clock settings with explanation
Clock Stretching

3 Topics
Implementation of I2C init API : Part 1
Implementation of I2C init API : Part 2
Implementation of I2C init API : Part 3

6 Topics
I2C transfer sequence diagram for master sending data
Implementation of I2C master sending data API : Part 1
Implementation of I2C master sending data API : Part 2
Implementation of I2C master sending data API : Part 3
Implementation of I2C master sending data API : Part 4
Implementation of I2C master sending data API : Part 5

2 Topics
I2C pull up resistance rise time and bus capacitance discussion
I2C rise time calculation

4 Topics
Exercise : Introduction
Exercise : Coding Part 1
Exercise : Coding Part 2
Exercise : Testing

4 Topics
I2C transfer sequence diagram for master receiving data
Assignment : I2C master receive data API implementation
Implementation of I2C master receive data API : Part 1
Implementation of I2C master receive data API : Part 2

5 Topics
Exercise : Reading data from the I2C slave
Exercise : Coding Part 1
Exercise : Coding Part 2
Exercise : Coding Part 3
Exercise : Testing repeated start

4 Topics
I2C IRQ and interrupt discussion
I2C errors and importance of BUSY flag
I2C handle structure modification
I2C adding interrupt related macros and interrupt APIs

2 Topics
Assignment : I2C interrupt APIs implementation
Implementation of I2C interrupt based APIs

9 Topics
I2C IRQ handler implementation Part 1
I2C IRQ handler implementation Part 2
I2C IRQ handler implementation Part 3
I2C IRQ handler implementation Part 4
I2C IRQ handler implementation Part 5
I2C IRQ handler implementation Part 6
I2C IRQ handler implementation Part 7
I2C IRQ handler implementation Part 8
I2C error IRQ handler implementation

2 Topics
Exercise : Testing I2C interrupt APIs part 1
Exercise : Testing I2C interrupt APIs part 2

3 Topics
I2C slave programming discussion
I2C transfer sequence diagram for slave transmitter
I2C slave support in driver

4 Topics
Exercise : I2C slave programming
Exercise : Coding Part 1
Exercise : Testing
Exercise : Modifying I2C transactions

1 Topic
Common Problems in I2C and Debugging Tips

6 Topics
Intro UART vs USART
Understanding UART pins
UART frame formats
Baud Rate
Synchronization bits
UART Parity

2 Topics
Exploring UART functional block
UART peripheral clock

3 Topics
UART Transmitter
Uart Receiver
UART Start bit Detection

6 Topics
USART driver development confiugrable items
USART driver APIs prototypes
Configuration options and USART registers
USART Driver API : USART Init
USART Driver API : Tx and Rx assignment
USART Driver API : Send data

4 Topics
USART oversampling
USART Baud rate calculation Part-2
USART Baud rate calculation Part-2
USART baudrate coding

2 Topics
Exercise : USART send data to arduino
communicating with PC over UART

3 Topics
USART interrupt discussion
Exercise
USART IRQ handler implementation : Assignment

15 Topics
Real time clock on LCD
DS1307 RTC registers
RTC code implementation
RTC coding for set time and date
RTC coding for get time and date
BCD and Binary manipulation functions
Writing RTC application
RTC and Systick
LCD connections
Significance of LCD pins
LCD initialization
LCD initialization flowchart
Sending command and data to LCD
Creating LCD command code
Testing

1 Topic
BONUS LECTURE

  Write a Review

Mastering Microcontroller and Embedded Driver Development

Go to Paid Course