stm32

    STM32 최소 회로를 구성하기 위한 문서

    STM32 최소 회로를 구성하기 위한 문서

    스텝모터 제어 보드에 사용할 MCU로 STM32G030F6P6를 선정했다. 이제 최소 회로를 구성해야 한다. 그런데 데이터 시트를 찾아봐도 최소 회로에 대한 내용이 없다. ST 홈페이지에서 문서 자료를 뒤져보니 적절한 Application note를 찾았다. 문서 제목은 "Getting started with STM32G0 Series hardware development"이고 문서 번호는 AN5096이다. 문서 구하는 방법 ST 공식 홈페이지(https://www.st.com)에%EC%97%90) 접속한다. 상단 검색창에 AN5096을 입력한다. 검색 결과에 나타난 링크를 클릭하면 곧바로 PDF 파일을 다운받을 수 있다. 요약 이 문서에는 STM32G0 시리즈의 전원 공급, 클록 관리, 리셋 제어, 부..

    [STM32] 레지스터 직접 접근 방식으로 UART 통신 예제 구현하기

    HAL 드라이버 없이, 레지스터 접근만으로 UART 통신 예제를 만들었다. 처음 시작할 때는 어디서부터 시작해야 할 지 몰라 막막했고, 하나하나 이해하면서 진행하느라 완성하는 데 약 2시간이 걸렸다. 전체 흐름을 이해하니 생각보다 별것 아니라는 것을 알게 되었다. 레지스터에 직접 접근하는 것도 익숙해졌고, 각 페리페럴에 공급될 클록 신호가 만들어지는 과정도 살펴볼 수 있었다. 프로젝트를 만들 때 HAL 드라이버를 포함하지 않았기 때문에 접근할 레지스터 주소를 데이터 시트를 확인해가며 직접 입력하여 만들었다. Reference Manual(RM0008)의 3.3 Memory Map을 참고하면 좋다. 이번 예제에 필요한 레지스터 주소는 아래와 같다. (사실 USART1은 사용하지 않는데 모르고 만들었다. 아..

    [STM32] UART 통신 수신 코드 구현 방법

    [STM32] UART 통신 수신 코드 구현 방법

    CubeMX에서 사용하고자 하는 UART 페리페럴 설정을 합니다. 저는 프로젝트를 만들면 사용자에게 제안하는 기본 모드 설정(Default mode)을 사용한 상태입니다. 기본 설정은 USART 3번 채널을 사용합니다. 기본 설정 상태에서는 UART관련 인터럽트를 사용할 수 없습니다. 따라서 데이터 송수신과 관련한 인터럽트를 발생시키도록 하는 설정이 필요합니다. [NVIC Settings] 탭에서 "USART3 global interrupt"를 활성화 한 뒤 저장합니다. (.ioc 파일을 저장하면 자동을 code generate 될 것입니다.) 그다음은 데이터 수신이 이루어졌을 때 인터럽트를 발생시키도록 설정하는 함수 HAL_UART_Receive_IT()를 추가합니다. 위치는 main 함수 안, whi..

    PWM으로 스텝모터 제어시 꼭 확인합시다.

    요약: ARR, CCR 값이 설정 가능한 최대값을 넘어가지 않는지 확인합시다. 예를 들어 Core 클럭이 96MHz이고, 타이머의 Prescale 값을 96으로 설정하면(실제로는 설정할 때는 96에서 1이 빠진 95가 되어야 합니다.) Timer 내부에 공급되는 클럭은 1MHz가 됩니다. 이 때, 초당 8펄스 속도로 신호를 공급하고자 했을 때 아래와 같이 값을 설정하게 됩니다. ARR = (1000000 / 8) - 1 = 124999 CCR = (125000 / 2) - 1 = 62499 언듯보면 문제가 없는 것 같습니다. 하지만 모터는 아예 회전을 하지 않았습니다. 과연 무엇이 잘못되어 그런 것일까요? 답은 ARR 설정 값에 있습니다. 제가 사용한 MCU 는 STM32H743ZI 입니다. 그리고 타이..