Mastering Microcontroller with Embedded Driver Development

Mastering Microcontroller with Embedded Driver Development
Mastering Microcontroller with Embedded Driver Development

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 17.5 Hours | 3.04 GB
eLearning | Skill level: All Levels

Learn from Scratch Microcontroller & Peripheral Driver Development for GPIO, I2C, SPI, USART using Embedded C Programming

This Course Demystifies the internal working of the Microcontroller and its Peripherals.

Coding for the Peripherals STEP-BY-STEP and Developing software drivers completely from scratch by extracting maximum information from Datasheets, Reference manuals, specs, etc

Protocol Decoding Using logic analyzers, Debugging, Testing along with Hints and Tips.

What Will I Learn?

  • 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
+ Table of Contents

Overview of the Course
1 What is this course all about
2 Source Code
3 IDE setup for Embedded Code Development

Understanding MCU Peripheral Clock Control
4 Understanding MCU Peripheral Clock control
5 Exercise EnablingDisabling Peripheral Clock
6 Exercise-Making HSE as System Clock
7 Exercise-Making HSE as System Clock Contd.

Understanding MCU Vector table
8 Understanding MCU Vector Table Part-1
9 Understanding MCU Vector Table Part-2

Understanding MCU interrupt Design , NVIC, Interrupt handling
10 Understanding MCU interrupt Design , NVIC, Interrupt handling Part 1
11 Understanding MCU interrupt Design , NVIC, Interrupt handling Part 2
12 Understanding MCU interrupt Design , NVIC, Interrupt handling Part 3
13 Understanding MCU interrupt Design , NVIC, Interrupt handling Part 4

Understanding MCU Specific Header file
14 Understanding MCU Specific header file Part 1
15 Understanding MCU Specific header file Part 2

GPIO Must know concepts
16 GPIO pin and GPIO port
17 GPIO behind the scene
18 GPIO input mode with high impedance state
19 GPIO input mode with pull-updown state
20 GPIO output mode with open drain state
21 GPIO output mode with push pull state
22 Optimizing IO power consumption

GPIO Programming structure and Registers
23 GPIO programming structure
24 GPIO alternate function register(used to set alternate functionality for a pin )
25 Find Out IO Alt Functionality
26 Exploring GPIO PORT and pins of STM32F4xx Discovery board
27 GPIO Mode register(used to set mode for a pin)
28 GPIO port output type register(used to specify op type)
29 GPIO port output speed register (how quick transition)
30 GPIO port pull-uppull-down register(used to activatedeactivate pull-ups)
31 GPIO port input data register (used to read from pin)
32 GPIO port output data register(used to write to pin)
33 Enabling and disabling GPIO peripheral clock

GPIO Driver Development Getting started
34 Overview of the driver development task
35 Driver API Requirements
36 Creating Driver Template Project Eclipse
37 Creating Driver Template Project KEIL

GPIO Driver Development Driver header file
38 Implementing Driver Header file

GPIO Driver Development Implementing Init API
39 Code to configure the mode
40 Code to configure GPIO speed and output type
41 Code to configure GPIO pull-uppull down
42 Configuring alternate function
43 Embedded Coding Skill

GPIO Driver Development Implementing ReadWrite APIs
44 Implementing GPIO Read API
45 Implementing GPIO Write API

Development board used in our courses
46 Note for the students
47 About MCU Development board
48 STM32 Nucleo-64 development board
49 Discovery kit with STM32F407VG MCU
50 STM32F4 Discovery and Nucleo Board Details
51 ST-Link Driver Installation
52 ST-LINK, ST-LINKV2, ST-LINKV2-1 USB driver signed for Windows7, Windows8, Windows10
53 ST Link Firmware Upgrade
54 ST-LINK, ST-LINKV2, ST-LINKV2-1 firmware upgrade

GPIO driver Code testingWriting Sample APP
55 Write init function to configure LED
56 Code implementation to turn onofftoggle LED
57 Testing the sample Application on development board
58 Testing LED behaviour on logic analyser software

GPIO Interrupt Handling
59 Exploring How peripherals interrupts the processor via NVIC
60 GPIO irq numbers
61 Vector table and IRQ handlers
62 Adding interrupt handling apis to our driver
63 Implementing APIs to Configure and Enable External Interrupts
64 Clearing external interrupt (otherwise NVIC will keep getting kicked )
65 Test interrupt APIs we developed by using button
66 Find out IRQ number
67 Interrupt Pending Bit

SPI Essentials (All about SPI)
68 Introduction to SPI
69 Understanding SPI protocol
70 SPI behind the scene

What is phase , polarity and SPI modes
71 Significance of Polarity and Phase
72 Different SPI Modes with Timing diagram
73 Uni-Directional and Bi-Directional SPI

SPI Functional Block and Clock
74 Exploring SPI functional block(How SPI Engine works in MCU )
75 SPI Peripheral clock and Serial clock
76 Find out SPI Max Speed

SPI Important Registers
77 Exploring SPI Control Registers(CR)
78 Exploring SPI Data Registers(DR)
79 Exploring SPI Status Registers(SR)

SPI Driver Development Getting started
80 Overview
81 Driver API Requirements
82 Exploring different SPI Peripherals and pin packs of the MCU

SPI Driver Development Writing Driver header file
83 SPI Register Bit Definitions Macros(Converting register details in to Macros)
84 SPI Data structures
85 Driver exposed APIs to handle SPI

SPI Driver Development Implementing init API
86 Writing init function and helper functions
87 Configuring mode, phase and polarity
88 Configuring datasize, baudrate and direction
89 Configuring NSS(Slave select pin )
90 EnablingDisabling SPI Peripheral

SPI Driver Development Implementing TXRX API
91 Implementing TX API for master
92 Implementing RX API for master
93 Implementing TX API for slave
94 Implementing RX API for slave

Eclipse Setup For ARM Cortex M based MCUs
95 Note for the students
96 Understanding CMSIS
97 Downloading CMSIS
98 Integrating MCU Peripheral Library( Device HAL)
99 Integrating MCU Peripheral Library( Device HAL) Contd
100 Download & Debugging Code using GDB and OpenOCD
101 Download & Debugging Code using GDB and OpenOCD contd.
102 Section-Summary
103 Download Eclipse for CC++ Developers
104 Download Cross-Toolchain for ARM Cortex Processor
105 Installing GNU ARM Eclipse Plugins
106 Installing Windows Build Tools(only for Windows users)
107 Download and Install OpenOCD
108 Eclipse Project Creation for ARM Cortex Proc. Based MCU
109 Understanding Eclipse Project Directory structure.

SPI MasterSlave Communication
110 How does SPI master TXRX data
111 How does SPI slave TXRX data

SPI Driver Development Implementing TX ISR
112 Understanding SPI TXRX IRQ numbers
113 Setting up TXERXNE interrupt
114 Writing SPI irq handler
115 Handling spi Tx interrupt
116 Quiz about Debugging SPI Interrupt

SPI Driver Development Implementing RX ISR
117 Handling RX done interrupt in ISR

Writing SPI sample application Getting Started
118 Understanding the Requirements
119 Understanding connection diagram

Writing SPI sample application Master Code
120 Initialization
121 Defining various IRQ handlers
122 Master write Sequences (send CMD, get ACK, send data)
123 Master Receive Sequences(Send CMD, get ACK, get data)

Writing SPI sample application Slave Code Implementation
124 Initialization
125 Slave Handling ReadWrite command from master

Testing , Decoding and Debugging Tips
126 Initial testing on hardware
127 Capture SPI transcation on Logic analyzer
128 Decoding SPI transcation Using logic analyzer
129 Common problems in SPI and Debugging Tips

I2C Essentials
130 Intro to I2C protocol
131 I2C Hardware Setup
132 Quiz SPI and I2C

I2C protocol in Detail
133 Basics
134 Address phase
135 Start Condition
137 Stop Condition
138 Master ReadWrite Data Phase
139 Repeated start (start with out a stop )
140 Clock Stretching

I2C Operating Modes
141 I2C in fast mode and standard mode
142 I2C duty cycle

KEIL-MDK-5 Setup For ARM Cortex M based MCUs
143 Note for the students
144 KEIL-MDK-5 Installation
145 KEIL-MDK-5 Installation Contd.
146 KEIL-MDK-5 Pack Installation
147 Locating Pack Installation files
148 Creating a KEIL Project
149 Understaning The Discovery Board
150 User Manual
151 HardwareSoftware Requirements

I2C Addressing mode
152 bit addressing
153 bit addressing

I2C Functional block diagram and Clocks
154 Exploring I2C functional block in the MCU
155 I2C peripheral clock and serial line clock(Fpclk and SCL)

I2C Interrupts
156 I2C IRQs and Interrupt Mapping
157 Exploring I2C IRQ numbers

I2C Peripheral Registers
158 Exploring I2C Control Registers(CR)
159 Exploring I2C Own Address Registers(OAR)
160 Exploring I2C Data Register(DR)
161 Exploring I2C Status Registers(SR)
162 Exploring I2C Clock Control Register(CCR)

I2C MasterSlave Communication
163 How I2C Master TX data
164 How I2C Master RX data
165 How I2C Slave TX data
166 Quiz about I2C Master TX
167 Quiz about I2C Master RX

I2C Driver Development Getting started
168 Overview
169 Understanding the Requirements
170 Exploring different I2C Peripherals and pins of the MCU

I2C Driver Development Driver header file
171 I2C Register Bit Definitions Macros
172 I2C Data structures
173 I2C Driver Exposed APIs

I2C Driver Development Init Function
174 Init API and Helper Functions
175 Code Implementation to EnableDisable I2C peripheral
176 Configure clock stretching , own address , auto ACKing
177 Configure I2C mode, addressing mode and duty cycle
178 Code to Initialize I2C Serial Clock
179 Code to Generate StartStop condition
180 EnablingDisabling Buff, Event, and Error interrupts
181 Other Helper Functions

I2C Driver Developemnt Writing TXRX API
182 Implementing TX API for MASTER
183 Implementing RX API for MASTER
184 Implementing TX API for SLAVE
185 Implementing RX API for SLAVE

I2C Event Interrupt handling for master
186 Implementing event interrupt handler
187 Handling of TXE event for master
188 Handling of TX BTF event for master

LEDButton Exercises using BSPs
189 Exercise LED Toggling App using Board BSP APIs
190 Exercise LED Toggling App using Board BSP APIs-Nucleo
191 Exercise Adding button support using board BSP APIs(Nucleo)

I2C Event Interrupt handling for slave
192 Handling of slave Address Match Event
193 Handling of STOP detection event Interrupt
194 Handling of TXE event Interrupt
195 Handling of TX BTF event Interrupt
196 Handling of RXNE and BTF event interrupt

I2C Error Interrupt Handling
197 Writing Error interrupt handler
198 Handling of Different I2C Errors

Writing I2C sample application Getting ready
199 Understanding the Requirements
200 Understanding connection diagram

Writing I2C sample Application Master Code
201 I2C Initialization
202 Implementing I2C IRQ Handlers
203 Implementing master write Sequences(cmd,length,data)
204 Implementing master read Sequences(cmd,length,data)
205 Slave Handling ReadWrite Command from master

Testing and Protocol Decoding using logic analyzer (lets get the trace )
206 Initial testing on hardware
207 Decoding and Analyzing I2C transaction using logic analyzer
208 Common Problems in I2C and Debugging Tips

UART Essentials
209 Intro UART vs USART
210 Understanding UART pins
211 UART frame formats
212 Baud Rate
213 Synchronization bits
214 UART Parity

UART functional block and Peripheral Clock
215 Exploring UART functional block
216 UART peripheral clock

UART Communication
217 UART Transmitter
218 Uart Receiver
219 UART Start bit Detection

UART Interrupts
220 Exploring UART Interrupt Mapping

UART Registers
221 Exploring UART Control Registers
222 Exploring UART Data Registers
223 Exploring UART Status Registers
224 UART Baudrate Calculation
225 Find out MAX baudrate of UART

Embedded Code Debugging Tools n Tips
226 Embedded Code Debugging Part-1
227 Embedded Code Debugging Part-2 Break points
228 Embedded Code Debugging Part-3 Step InStep OverStep Out
229 Embedded Code Debugging Part-4 DisableKill all Bkpts.
230 Embedded Code Debugging Part-5 Call Stack Usage
231 Embedded Code Debugging Part-6 Watch Windows
232 Embedded Code Debugging Part-7 Memory Windows
233 Exercise-Copying data from Flash to RAM

UART Driver Development Getting Started
234 Overview
235 Understanding the Requirements
236 Exploring Different UART Peripherals and pins of the MCU

UART Driver Development Driver Header File
237 UART Register Bit Definitions Macros
238 Data Structures used and Driver exposed APIs

UART Driver Development Writing init Function
239 Writing inti function and helper functions
240 Configuring Word length, Stop Bits
241 Configuring Baudrate, oversampling and Interrupts

UART Driver Development Writing TXRX function
242 Writing TX function
243 Writing RX Function

UART Driver Development Interrupt Handling
244 Implementing UART IRQ Handler
245 Handling TXE interrupt
246 Handling of TX Complete Interrupt
247 Handling RXNE Interrupt

UART sample application Getting ready
248 Understanding the Requirements
249 Understanding connection diagram
250 Exploring uart sniffer software for pc

UART sample application Implementation
251 UART Initializations and Txing
252 Receiving commands from PC

Running and Testing
253 Testing on hardware

Creating printf library for your board
254 Introduction
255 Implementing UART print apis
256 Creating static library in KEIL and testing

MCU Clocks Configurations and Measurements
257 Exploring System , AHB, APB clocks of the MCU
258 Clocking MCU by using External Crystal Oscillator(HSE)
259 Measuring HSE,HSI, PLL and System Clock(Routing Clocks to GPIOs)
260 Clocking MCU by Internal PLL (Running MCU at Full Speed)
261 Quiz about using HSE
262 Bonus Lecture

Understanding MCU Memory Map
263 Understanding Memory Map of the MCU Part 1
264 Understanding Memory Map of the MCU Part 2
265 Understanding Memory Map of the MCU Part 3

MCU Bus Interfaces
266 MCU Bus Interfaces Explanation Part 1 I-CodeD-CodeS-Bus
267 MCU Bus Interfaces Explanation Part 2 AHBAPB1APB2
268 MCU Bus Interfaces Explanation Part 3 QA session
269 Understanding MCU Bus Matrix

Understanding MCU Clocks and Details
270 Understanding MCU Clocking SystemPart1
271 Understanding MCU Clocking System Part2
272 Exercise-Using HSI Clock and Clock MeasurementPart 1
273 Exercise-Using HSI Clock and Clock Measurement Part 2

Download from DepFile

Download from Turbobit

Download from DepositFiles

Download from Rapidgator