본문 바로가기

쓰기

ARM Cortex-M 기초 알아보기
2016.01.28 20:03

ARM Cortex-M 기초 알아보기 - 5. ADC 사용하기

조회 수 4348
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 이번에는 ADC와 관련하여 STM32F407VGT6 Discovery board에 연결된 Potentiometer의 ADC 값을 Debug Viewer를 통해 실시간으로 받아보도록 하겠습니다. (프로젝트 진행자가 변경된 이유로 인해 MCU가 Discovery board로 변경되었습니다.) STM32CubeMX의 Configuration 탭에서 ADC1 의 IN1 란을 체크하면 아래와 같은 Pinout과 Clock Configuration을 구성할 수 있습니다. 이 후  Generate source code 버튼을 눌러 코드를 생성한 후 keil uvision을 통해 열어줍니다.

Pinout.JPG

[ Pinout ]



Clock Configuration.JPG

[ Clock Configuration ]


※ ADC HAL 드라이버를 사용하는 순서는 다음과 같습니다.

① 먼저 HAL_ADC_Init() 함수에 hadc1 값의 주소를 입력하여 stm32cubemx으로 지정해준 핀에서 ADC를 사용할 수 있는 환경을 만들어 줍니다.

②  ADC 에는 아래와 같이 3가지 모드가 있습니다.

 ⓐ Polling mode IO operation

 ⓑ Interrupt mode IO operation

 ⓒ DMA mode IO operation

 이 세가지 모드 중 Polling mode를 사용해 보도록 하겠습니다.

③ HAL_ADC_Start() 함수를 사용하여 ADC를 시작합니다.

④ 그 후 HAL_ADC_PollForConversion() 함수를 사용하여 hadc1값의 주소 값과 time out을 위한 시간 값을 넣어줍니다.

⑤ 이제 ADC를 통해 얻은 값을 HAL_ADC_GetValue() 함수를 이용하여 val 이라는 uint32_t형 값에 저장해줍니다.

⑥ 저장해둔 val값을 printf 함수를 통해 debug viewer로 띄워주고 HAL_ADC_Stop()함수를 이용해 ADC를 멈춰줍니다.

⑦ Code를 build 하여 보드에 load해 준 뒤 debug모드에 진입하여 실행(F5)를 눌러주면 아래 그림과 같이 Debug viewer에 실시간으로 저항값이 나타남을 알 수 있습니다.


Code.JPG

[ Code ]



Debug Viewer.JPG

[ Debug Viewer ]


  1. ARM Cortex-M 기초 알아보기 - 6. PWM 사용하기

    이번 글에서는 PWM을 이용하여 모터를 구동시켜보도록 하겠습니다. 먼저 STM32CubeMX를 이용하여 설정을 진행합니다. PWM을 사용하기 위해 타이머 TIM1의 Clock Source를 Internal Clock으로 설정해 줍니다. 그 후 사용하고 싶은 채널을 PWM Generation탭으로...
    Date2016.03.25 CategoryARM Cortex-M 기초 알아보기 By최호선 Views3874
    Read More
  2. ARM Cortex-M 기초 알아보기 - 5. ADC 사용하기

    이번에는 ADC와 관련하여 STM32F407VGT6 Discovery board에 연결된 Potentiometer의 ADC 값을 Debug Viewer를 통해 실시간으로 받아보도록 하겠습니다. (프로젝트 진행자가 변경된 이유로 인해 MCU가 Discovery board로 변경되었습니다.) STM32CubeMX의 Confi...
    Date2016.01.28 CategoryARM Cortex-M 기초 알아보기 By최호선 Views4348
    Read More
  3. ARM Cortex-M 기초 알아보기 - 4. GPIO 입력 제어하기

    이번에는 스위치를 통해 GPIO의 입력을 받아 LED를 켜고 끄는 예제를 다루어 보겠습니다. STM32CubeMX 설정은 지난번과 같지만 스위치 입력을 받기 위해 PA4 핀을 GPIO_Input으로 설정합니다. 핀 라벨은 GPIO_SW라고 붙였습니다. STM32CubeMX의 Configuration...
    Date2015.11.10 CategoryARM Cortex-M 기초 알아보기 By박정현 Views3821
    Read More
  4. ARM Cortex-M 기초 알아보기 - 3. GPIO 출력 제어하기

    이번에는 GPIO의 디지털 출력 제어를 통해 MCU계의 Hello World!인 LED 깜박이기를 해 보도록 하겠습니다. 내용 수준은 기존에 8bit MCU 사용이 익숙하신 분들에 맞춰 진행할 것입니다. 사용할 MCU는 Cortex-M0의 한 종류인 STM32F030F4P6입니다. STM32F030F4...
    Date2015.11.08 CategoryARM Cortex-M 기초 알아보기 By박정현 Views4081
    Read More
  5. ARM Cortex-M 기초 알아보기 - 2. 개발 환경 구축

    Cortex-M을 지원하는 IDE는 여러 종류가 있습니다. 그 중에서 저는 ARM에서 공식적으로 지원하는 Keil µVision IDE를 사용하려고 합니다. Keil µVision은 말 그대로 ARM에서 공식적으로 지원하기 때문입니다. 코어 설계사에서 직접 제공하는 IDE가 사후 지원...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views6043
    Read More
  6. ARM Cortex-M 기초 알아보기 - 1. 개요

    자신이 원하는 대로 움직이는 기계나 회로 등을 만들 때는 MCU 만한 것이 없습니다. 국내에서는 2000년대 들어 8051, PIC, AVR 등을 통해 8bit MCU들이 퍼지기 시작하였고, 2010년 이후 Arduino의 등장을 통해 기존의 8bit MCU를 쉽게 사용할 수 없던 일반인...
    Date2015.10.26 CategoryARM Cortex-M 기초 알아보기 By박정현 Views6252
    Read More
  7. 2013-07-23 소모성 데시칸트 제습기

    2013년 여름에 시작한 프로젝트입니다. 정확한 시작일이 기억나지 않아 가지고 있는 자료 중에서 가장 오래된 것의 날짜를 선택하였습니다. 2013년 여름은 제가 지금 살고 있는 집으로 이사를 온 때인데, 집 주변이 광활한 논으로 둘러싸여 있습니다. 그 때문...
    Date2015.02.08 Category화학식 제습장치 By박정현 Views1425
    Read More
Board Pagination Prev 1 Next
/ 1