ARM Cortex M Microcontroller DMA Programming Demystified

ARM Cortex M Microcontroller DMA Programming Demystified

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 80 lectures (9h 46m) | 3.86 GB

Direct Memory Access Demystified with STM32 Peripherals (ADC, SRAM,UART,M2M,M2P,P2M) and Embedded C code Exercises

The course aims to demystify the Microcontroller DMA controller internals and its programming with various peripherals. Suitable for beginners to intermediate students in the field of Embedded Systems and programming. Please go through the description below to understand the course offering.

Key things you learn,

1) The Multi AHB bus matrix and ARM Cortex M Bus interfaces

2) MCU Master and Slave communication over bus matrix

3) DMA internals: channel mapping / streams/ fifo /Master ports / Arbiter/etc

4) DMA different transfer modes: M2P, P2M,M2M

5) DMA with peripherals like ADC, GPIO, UART_RX/TX and many other peripherals will be updated in this course.

6) DMA programming from scratch. Helps you to troubleshoot DMA issues on other microcontroller or processor platforms. You can speculate and debug problems more quickly when you learn the hard way.

7) And lots of other videos about circular mode/burst transfer /RTOS etc. will be added shortly.

Hardware used:

1) STM32F446RE Nucleo64 board

you can also use other STM32 boards such as the discovery board, evaluation board, or any other board.

Software used:

1) KEIL MDK V5 (free version, for windows)

2) Openstm32 system workbench ( windows/linux/mac) (free)

3) CubeMx software from ST (free)

The installation procedure is covered in the course

This course is all about understanding the Direct Memory Access Controller of the Micro-controller and how to use it in the embedded applications.

The course uses ARM Cortex M based STM32 Micro-controller for all theory discussion and code exercises. The course discusses generic details of the DMA which you can leverage to other Micro-controllers but you have made changes to the code in order to run on your target if it’s not an ST’s 32-bit Micro-controller.

The course will help you to raise your confidence in handling your MCU’s DMA controller and connecting dots by going through the various levels of discussion.

I really tried to simplify the subject with clean/generic explanations and exercises.

We will discuss why DMA is required and how it benefits ARM to offload data transfer work with exercises.

We will learn different types of DMA transfers like M2M, P2M, and M2P (M: Memory P: Peripheral) and various DMA configurations. Please go through “What will I learn?” section above.

For the beginners/intermediate students, the course will indeed add huge advantage and helps to use DMA successfully in Embedded applications.

What you’ll learn

  • Please watch free preview videos you will learn something today without even enrolling for this course
  • Fundamentals of Direct Memory Access in a Microcontroller
  • The Microcontroller Architecture and Bus interfaces
  • Bus matrix of the ARM cortex M based MCU
  • Concurrent data access from ARM and DMA
  • DMA control configurations like burst size, FIFO, Alignment
  • DMA Controller internals and Bus interfaces
  • DMA Controller channels,Streams,priority
  • Memory to Memory data transfer using DMA and Exercises
  • Peripheral to Memory and Memory to Peripheral DMA and Programming exercises
  • Peripheral DMA configurations
  • DMA controller interrupts and interrupts handling
  • Debugging
Table of Contents

DMA Getting Started and Multi AHB Architecture
1 About the instructor
2 Course Overview
3 FAQ
4 Source Code
5 Important Note
6 DMA Introduction Master Slave Communication
7 Understanding MCU Block Diagram
8 Understanding Multi AHB Bus Matrix
9 Concurrent Data Transfer using ARM and DMA
10 Concurrent Data Transfer using ARM and DMA
11 Concurrent Data Transfer using ARM and DMA

Development board used in our courses
12 Note for the students
13 About MCU Development board
14 STM32F4 Discovery and Nucleo Board Details
15 ST
16 ST Link Firmware Upgrade

KEILMDK5 Setup For ARM Cortex M based MCUs
17 Note for the students
18 KEIL
19 KEIL
20 KEIL
21 Locating Pack Installation files
22 Creating a KEIL Project
23 Exercise LED Toggling App using Board BSP APIs
24 Exercise LED Toggling App using Board BSP APIs
25 Exercise Adding button support using board BSP APIsNucleo

Installing Open STM32 System Workbench
26 Downloading OpenSTM32 System
27 Installing OpenSTM32 System

STM32Cube Mx Installation and Code Generation
28 Note for the students
29 STM32CubeMX Installation
30 Creating Projects using STM32CubeMX Part
31 Creating Projects using STM32CubeMX
32 Creating Projects using STM32CubeMX
33 Creating Projects using STM32CubeMX

DMA Exercises GPIO Polling and Interrupt
34 DMA Programming Generic Steps to follow
35 Toggling of LED using DMAPolling mode
36 Toggling of LED using DMAPolling mode
37 Toggling of LED using DMAPolling mode
38 Toggling of LED using DMAPolling mode
39 Toggling of LED using DMA Interrupt Mode
40 Toggling of LED using DMA Interrupt Mode

DMA Exercises UART to SRAM
41 UART to SRAM Data Transfer using DMA Interrupt Mode Big Picture
42 UART to SRAM Data Transfer using DMA Interrupt Mode Implementation
43 UART to SRAM Data Transfer using DMA Interrupt Mode Contd

DMA Functional Block Diagram Whats inside the DMA controller
44 Master and Slave Ports of DMA
45 DMA Streams
46 DMA Channel Mapping
47 DMA Channel Mapping Case Study1 P2M
48 DMA Channel Mapping Case Study2 M2M M2P

DMA Exercises ADC to SRAM
49 DMA Exercise ADC to SRAM Big Picture
50 ADC and DMA Configuration Settings
51 ADC and DMA Understanding Code
52 ADC and DMA Understanding Code

DMA Arbiter and Stream Priority
53 DMA Arbiter and Stream Priority

DMA Transfer Modes and FIFO mode
54 P2M Data Transfer
55 M2P Data Transfer
56 DMA Exercise SRAM to UART2TX Part
57 DMA Exercise SRAM to UART2TX Part

DMA Programming from scratch Register level programming
58 Introduction
59 M2P Data Transfer Project creation
60 Button Init steps to Receive an interrupt
61 Coding for Button init Part
62 Coding for Button init Part
63 Coding for Button init Part
64 Implementing Button interrupt handler
65 Discussing steps to configure the UART Peripheral
66 UART PINMUX configuration settings
67 code to bring out UART TX RX functionality on gpio pins
68 Setting up Baudrate and Configuring UART parameters
69 Testing UART communication
70 Brainstorming DMA Initialization Steps
71 Identifying the DMA stream
72 Configuring DMA Stream direction and data width
73 Configuring Channel Selection
74 Testing with UART TX DMA request
75 DMA stream interruptIRQ discussion Part1
76 DMA stream interruptIRQ discussion Part2
77 Coding DMA stream IRQ handler Part1
78 Coding DMA stream IRQ handler Part2
79 Note for the students

BONUS LECTURE
80 BONUS LECTURE

Homepage