앞의 글들에서 설명한 DMA의 개념과 기본 동작, 그리고 주변장치와 데이터 송수신에 DMA를 사용할 수 있다는 내용을 통해서 DMA의 유용성에 대하여 충분히 이해했을것이다.이번 글에서 설명하려고 하는 DMA를 이용한 ADC 기능은 특히 DMA를 이용하는것이 얼마나 프로그램을 쉽게 할 수 있는지 보여줄 것이다.stm32f103에 있는 ADC는 최대 16개의 채널에서 데이터를 읽어 올 수 있는데, 각각의 채널에서 데이터를 읽어 오려면 상당히 귀찮은 작업을 해주어야 한다.그러나, DMA를 이용하면 CPU는 미리 설정된 주소의 메모리만 읽으면 DMA가 전달해준 새로운 값을 가져올 수 있게 된다. 이번 글에서는 ADC input 3개로부터 데이터를 읽어 오는 프로젝트를 만들어 보는것으로 하겠다.역시 ADC를 사용..
이번글에서는 SPI의 송신과 수신 기능을 DMA를 이용하여 구현해보는 방법에 대해서 설명하도록 하겠다.이미 앞의 글에서 설명한 DMA를 이용한 UART 송신 기능을 이해하였다면 이번 글에서 설명할 SPI 송수신 기능은 UART와 별다를것이 없음을 알게 될 것이다.DMA를 이용한 SPI 송수신 기능을 확인하기 위한 회로는 SPI와 같은 회로를 사용하겠다.STM32F reference manual의 DMA 챕터에서 SPI 송수신을 위한 DMA 채널 번호를 확인한다.위의 표에서와 같이 SPI 송수신을 위한 DMA 채널은 2번과 3번임을 알 수 있다.그리고, SPI에서 DMA를 이용한 송수신과 관련된 신호와 타이밍정보는 다음과 같은 그림을 보고 분석해 본다.Manual 문서를 반복해서 읽고 난 후 DMA를 이용..
이전 글에서는 memory to memory 방식의 간단한 예제를 만들어서, DMA가 무엇인지, 어떻게 동작되는지 설명하였다. 그러나, MCU에서는 memory to memory 방식보다는, 주로 주변장치를 통한 데이터 송수신을 위하여 DMA를 사용하므로, 이번 글에서는 UART 송신 기능을 DMA를 이용하여 구현하는 방법을 설명하도록 하겠다.Memory to memory DMA의 경우에는 임의의 DMA 채널을 마음대로 지정해서 사용할 수 있으나, 주변 장치와의 통신을 위하여 DMA를 사용할 경우에는 지정된 DMA 채널을 사용하여야 한다.이러한 내용은 reference manual을 보면 자세히 알 수 있다.위의 그림과 표를 보면 DMA의 각 채널별로 연결된 주변 장치가 어떤 것들이 있는지 알 수 있다...