SIOC 實驗 6 : DMA

52
WU-YANG Technology Co., Ltd. SIOC 實實 6 DMA 實實實 / 實實實 MIAT 實實實

description

SIOC 實驗 6 : DMA. 黃彥翔 / 陳慶瀚 MIAT 實驗室. 實驗目的. 控制 DMA 自動搬一記憶體或周邊之資料,並透過 VCP 傳送到超級終端機顯示操作過程。 實作重點 DMA 的控制 Polling Interrupt. SIOC DMA 簡介. DMA(Direct Memory Access) ,無須 CPU 可直接控制記憶體,透過 DMA ,能使 CPU 的效率大為提高。 最多有兩個 DMA 控制器, DMA1 有 7 個通道,每個通道專門用來管理來自一個或多個外部的請求,還有一個仲裁器來協調各個 DMA 請求的優先權。. - PowerPoint PPT Presentation

Transcript of SIOC 實驗 6 : DMA

Page 1: SIOC  實驗 6 : DMA

WU-YANG Technology Co., Ltd.

SIOC 實驗 6 : DMA

黃彥翔 /陳慶瀚MIAT實驗室

Page 2: SIOC  實驗 6 : DMA

2

實驗目的 控制 DMA自動搬一記憶體或周邊之資料,並透過 VCP傳送到超級終端機顯示操作過程。

實作重點 DMA的控制

Polling Interrupt

Page 3: SIOC  實驗 6 : DMA

SIOC DMA 簡介

DMA(Direct Memory Access),無須 CPU可直接控制記憶體,透過 DMA,能使 CPU的效率大為提高。

最多有兩個 DMA控制器, DMA1 有 7 個通道,每個通道專門用來管理來自一個或多個外部的請求,還有一個仲裁器來協調各個 DMA請求的優先權。

3

Page 4: SIOC  實驗 6 : DMA

WU-YANG Technology Co., Ltd.

DMA Registers

Page 5: SIOC  實驗 6 : DMA

DMA Channel Mapping

5

Page 6: SIOC  實驗 6 : DMA

DMA Request Mapping

6

Page 7: SIOC  實驗 6 : DMA

DMA Interrupt Status Register

7

Page 8: SIOC  實驗 6 : DMA

DMA Interrupt Status Register Cont.,

8

Page 9: SIOC  實驗 6 : DMA

DMA Interrupt Flag Clear Register

9

Page 10: SIOC  實驗 6 : DMA

DMA Channel x Configuration Register

10

Page 11: SIOC  實驗 6 : DMA

DMA Channel x Configuration Register Cont.,

11

Page 12: SIOC  實驗 6 : DMA

DMA Channel x Configuration Register Cont.,

12

Page 13: SIOC  實驗 6 : DMA

DMA Channel x Number of Data Register

13

Page 14: SIOC  實驗 6 : DMA

DMA Channel x Peripheral Address Register

14

Page 15: SIOC  實驗 6 : DMA

DMA Channel x Memory Address Register

15

Page 16: SIOC  實驗 6 : DMA

DMA Register Mapping

16

Page 17: SIOC  實驗 6 : DMA

DMA Register Mapping Cont.,

17

Page 18: SIOC  實驗 6 : DMA

DMA Register Mapping Cont.,

18

Page 19: SIOC  實驗 6 : DMA

DMA Register Mapping Cont.,

19

Page 20: SIOC  實驗 6 : DMA

WU-YANG Technology Co., Ltd.

DMA Standard Driver Library

Page 21: SIOC  實驗 6 : DMA

DMA Standard Driver Library List

21

Page 22: SIOC  實驗 6 : DMA

DMA DeInit Function

22

Page 23: SIOC  實驗 6 : DMA

DMA Init Function

23

Page 24: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

24

Page 25: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

25

Page 26: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

26

Page 27: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

27

Page 28: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

28

Page 29: SIOC  實驗 6 : DMA

DMA Init Function Cont.,

29

Page 30: SIOC  實驗 6 : DMA

DMA Command Function

30

Page 31: SIOC  實驗 6 : DMA

DMA Interrupt Function

31

Page 32: SIOC  實驗 6 : DMA

DMA Interrupt Function Cont.,

32

Page 33: SIOC  實驗 6 : DMA

DMA Get CurrDataCounter Function

33

Page 34: SIOC  實驗 6 : DMA

DMA Get Flag Status Function

34

Page 35: SIOC  實驗 6 : DMA

DMA Get Flag Status Function Cont.,

35

Page 36: SIOC  實驗 6 : DMA

DMA Get Flag Status Function Cont.,

36

Page 37: SIOC  實驗 6 : DMA

DMA Get Flag Status Function Cont.,

37

Page 38: SIOC  實驗 6 : DMA

DMA Get Flag Status Function Cont.,

38

Page 39: SIOC  實驗 6 : DMA

DMA Clear Flag Function

39

Page 40: SIOC  實驗 6 : DMA

DMA Get Interrupt Status Function

40

Page 41: SIOC  實驗 6 : DMA

DMA Get Interrupt Status Function Cont.,

41

Page 42: SIOC  實驗 6 : DMA

DMA Get Interrupt Status Function Cont.,

42

Page 43: SIOC  實驗 6 : DMA

DMA Get Interrupt Status Function Cont.,

43

Page 44: SIOC  實驗 6 : DMA

DMA Clear Interrupt Pending Bit Function

44

Page 45: SIOC  實驗 6 : DMA

實驗 1 – Polling DMA

Goal Use DMA to copy data from memory to memory

Principle Check the DMA flag

45

Page 46: SIOC  實驗 6 : DMA

Development Flow

46

Embedded Software Side Download Program to the Flash of the STM32

0

1

2

3

4

RCC Configure

NVIC Configure

DMA Configure

Check DMA Complete Flag

=1

=1

=1

=1

=1

Page 47: SIOC  實驗 6 : DMA

RCC Configure

47

/* RCC Configure *//* DMA1 clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

Turn On DMA1 Clock

Page 48: SIOC  實驗 6 : DMA

DMA Configure

48

/* DMA Configure */void DMA_Configuration(void){ DMA_InitTypeDef DMA_InitStructure;

/* DMA1 channel6 configuration */ DMA_DeInit(DMA1_Channel6); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)DST_Buffer; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize = BufferSize; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Enable; DMA_Init(DMA1_Channel6, &DMA_InitStructure);}

Page 49: SIOC  實驗 6 : DMA

User Program

49

/* User Program */ while (DMA_GetFlagStatus(DMA1_FLAG_TC5) == RESET); DMA_ClearFlag(DMA1_FLAG_TC5); DMA_Configuration(); //DMA_Cmd(DMA1_Channel5, ENABLE);

Page 50: SIOC  實驗 6 : DMA

實驗 2 – Interrupt DMA

Goal Use DMA to copy data from memory to memory

Principle Use the DMA Interrupt

50

Page 51: SIOC  實驗 6 : DMA

Development Flow

51

Download Program to the Flash of the STM32F103C8

0

1

2

3

4

RCC Configure

NVIC Configure

DMA Configure

Check DMA Interrupt

=1

=1

=1

=1

=1

Page 52: SIOC  實驗 6 : DMA

Q & A