티스토리 뷰
15. DMA Poll(Direct Memory Access)
-이번장은 DMA 컨트롤러를 통한 데이터의 이동 방법에 대해 배운다
DMA원리
좌측은 DMA 컨트롤러 없는 MCU의 데이터 복사 방법이다 데이터를 복사 완료할 때까지 MCU는 다른 작업을 하지 못하고 데이터를 복사하고 있는다.
우측은 DMA 컨트롤러가 있는 MCU의 데이터 복사 방법이다 MCU가 DMA contoller에게 데이터를 복사하라고 명령하면 DMA controller는 복사를 실행한다 그렇게 되면 MCU는 그 시간에 다른 작업을 할 수 있어 효율적이다.
DMA Controller 구조
DMA1 컨트롤러는 AHB 주변 포트는 DMA2 컨트롤러처럼 연결 되어 있지 않다 따라서 DMA2만 메모리-메모리 전송이 가능하다(RM0090 데이터 시트 참고)
DMA block diagram
한 스트림에 8개의 채널이 연결되어 있다(RM0090 데이터 시트 참고)
DMA diagram
CUBE MX 설정
위와 같이 설정한다
1. IncrementAddress: 데이터의 주소값을 증가시키며 데이터를 저장한다
2. Data Width: 복사할 데이터의 크기
3.Threshold FIFO: 아래 내용 참조
위의 데이터 시트는 링크의 AN4031 데이터시트를 참고하면 된다.
(찾는 방법은 링크 사이트에서 DMA를 검색하여 찾았다.)
3. Use Fifo: FIFO레지스터는 4Word(4*32byte)이다 4Word에 얼만큼 데이터가 차면 Destination으로 데이터를 내보내겠는가에 대한 설정이다. 현재 Half Full로 되어있는데 2Word만큼의 데이터가 차면 Destination으로 데이터를 보낸다.
2. Data width: 원본 데이터와 복사 저장소의 데이터 크기를 설정
Source Code
/* USER CODE BEGIN 0 */
uint8_t Buffer_Src[10000];
uint8_t Buffer_Dest[10000];
/* USER CODE END 0 */.
/* USER CODE BEGIN 2 */
for(int i = 0; i<10000; i++){
Buffer_Src[i] = 'a';
}
HAL_DMA_Start(&hdma_memtomem_dma2_stream0, (uint32_t) (Buffer_Src), (uint32_t) (Buffer_Dest), 100);//DMAC에게 데이터 100개 복사 명령
while(HAL_DMA_PollForTransfer(&hdma_memtomem_dma2_stream0, HAL_DMA_FULL_TRANSFER, 100) != HAL_OK);//전송완료 Flag Register를 초기화 시킨다
/* USER CODE END 2 */
실행 결과
15.DMA 폴더 동영상 참조
HAL_DMA_Start(); 데이터를 복사하라고 DMAC에게 명령
HAL_DMA_PollForTransfer(); 데이터 전송완료 Flag 초기화 이 Flag를 초기화 하지 않으면 데이터 복사를 다시 실행할 수 없다.
'STM32Fxx' 카테고리의 다른 글
STM32F429-TIM DMA (0) | 2018.11.08 |
---|---|
STM32F429-DMA IT (Direct Memory Access Interrupt) (0) | 2018.11.08 |
STM32F429 - WWDG(Window Watch Dog) (0) | 2018.11.04 |
STM32F429-IWDG(Independent Watch Dog) (0) | 2018.10.24 |
STM32F429-SPI IT (0) | 2018.10.24 |
- Total
- Today
- Yesterday
- MCG
- atmel studio7
- STM GPIO
- 홈서비스
- 수은건전지
- 제목행
- 파일복사
- 폴더생성
- STM32F429
- 중기청
- 틀고정
- 전세지킴보증서
- filecopy
- vba
- 정부주택대출
- atmega 개발
- 중소기업청년
- Dir
- STM32F429 GPIO
- CUBE MX GPIO
- GPIO
- STM32F
- STM 입출력
- STM32F GPIO
- atmel studio 설치
- 착한운전자마일리지
- atmega128 설치
- STM CUBE MX
- atmega 설치방법
- Excel
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |