STM32F103 ADC DMA CUBEMX 로 초기 설정 하는 포스팅입니다.
STM32F103 ADC 편
- ADC Multi Channel CUBEMX로 초기설정하기
- ADC Multi Channel 코드 작성하기
- CUBEMX로 ADC DMA 초기설정하기 (현재 포스팅)
- ADC DMA 코드 작성하기
- 코드 작성하기 – 인터럽트
- UART ADC 데이터 송신하기
이번에는 ADC 초기 설정을 하고자 한다.
CUBEMX 초기 모습이다.
사용할 보드를 선택한다.
Pinout 왼쪽에 보면 ADC선택란이 있다. 필요한 갯수만큼 선택해준다.
선택 후 Clock Configuration 탭을 누르면 위와 같은 메세지가 나온다 OK버튼을 누른다.
탭에서 PLLMul을 14배수로 선택한다.
만약 외부 크리스털을 사용한다면 HCLK가 56MHz가 되도록 값을 조절하도록 한다.
그 후 ADC Prescaler 값을 /4로 선택하면 ADC 최대 클럭인 14MHz를 선택할 수 있다.
ADC 탭을 선택한다.
ADC를 사용하는 방법은 많다. 그 중에서 DMA(Direct Memory Access)를 사용하도록 한다.
인터럽트나 다른 모드가 필요하면 탭에서 설정 후 그에 맞는 코드를 사용하면 된다. 여기서는 메모리에 직접 접근해서 사용할 수 있는 DMA를 사용하고자 한다.
모드를 Circular로 해서 반복 동작하도록 설정하고, Data Width를 원하는 만큼 설정해준다.
여기서는 Half Word이나, 실제로 사용하고 있는 코드에서는 Word를 사용하고 있다.
DMA Request를 선택해서 ADC1을 선택해 주는 것을 잊지 말자.
파라미터 설정 창이다. 여기서 ADC 파라미터를 설정한다.
위와 같이 바꿔주면 되는데, 아래에 설정 순서를 따라야 한다. 위에서 아래로 따라하려하면 안되니 주의하자.
- Number Of Conversion 을 2로 바꾼다.
- Scan Conversion Mode를 바꿔준다.
- Rank를 설정한다. 여기서 핵심은 채널을 0,1로 설정해야 한다. 0,0 또는 1,1로 설정하면 두 개의 ADC 값을 읽을 수 없다.
모든 설정이 끝나면 Code를 생성한다.
안녕하세요.
도움이 되는 글 잘 보고 있습니다.
해당 포스팅글에서
‘포스팅은 레퍼런스 메뉴얼에서 다루는 것 처럼 해보려고 한다.’
처럼
STM32 레퍼런스 메뉴얼을 참조하신것 같습니다.
혹시 참조하신 메뉴얼 문서번호나 문서제목을 알 수 있을까요?
감사합니다.
이성준님 안녕하세요!
STM32F1 HAL Reference Manual을 참고해주세요.
https://www.st.com/resource/en/user_manual/dm00154093-description-of-stm32f1-hal-and-lowlayer-drivers-stmicroelectronics.pdf
좋은 하루 되세요!