728x90

2024/06 29

STM32 - PWM를 이용한 모터 제어 및 부저를 이용한 멜로디 생성

PWM(Pulse Width Modulation) 출력의 주파수는 Auto Reload 값(ARR)에 결정되며 duty ratio는 Capture Compare(CCR)값에 의해 결정된다. PWM 출력 발생 모드는 Mode 1, Mode 2에 따라 구분된다.Mode 1Up Counting일 때 Count 값이 CCR보다 작으면 1을 Count값이 CCR보다 같거나 크면 0을 출력한다.Mode 2Up Counting일 때 Count 값이 CCR보다 작으면 0을 Count값이 CCR보다 같거나 크면 1을 출력한다. ARR(Auto-Reload Register)ARR은 주기적인 PWM 신호의 주기를 설정하는 레지스터다. 주로 타이머의 설정 중 하나다.주기 = Timer Clock 속도 / (ARR 값 + 1)..

HAL 함수 모음 (GPIO, EXTI, UART, ADC, DAC, TIM...)

기본HAL_PPP_Process()인터럽트 모드에서 프로세서를 시작하는 함수사용자의 코드에서 이 함수를 호출하면 프로세스가 인터럽트 모드에서 시작 HAL_PPP_IRQHandler()PPP 주변장치의 인터럽트 핸들러인터럽트 모드에서 프로세스를 시작하기 전에 stm32f4xx_it.c 파일에서 해당되는 인터럽트 핸들러가 코딩되어 있어야함. __weak HAL_PPP_ProcessCpltCallback()작업 완료시 호출되는 콜백 함수콜백 함수는 드라이버 내에서 약함 함수(weak function)으로 선언되어 있음사용자가 유저 작성 코드 내에서 콜백 함수를 다시 선언하는 것이 가능즉, 사용자가 콜백 함수 내에 원하는 작업을 코딩하여 작성하는 것이 가능 __weak HAL_PPP_ProcessErrorCal..

Clock Configuration, UART 글자 깨짐 현상 해결 방법

MPU/MCU Select를 통해 생성했을 때 Board Select을 했을 때 문제가 없었던 UART 통신에서 문자가 깨지는 현상이 발생하였다. 문제점UART를 통해 Console 창에 문자는 출력되지만 문자가 깨져서 나오는 상황 처음 문제가 발생했을 때 생각한 원인들은 이랬다.1. 인코딩이 잘못되고 있다.2. baud rate가 맞지 않아서 글자 깨짐3. 그 외 Port가 잘못되거나 ST-Link와의 통신에서 문제가 있을 것이다. 1. 에 대한 해결책으로 인코딩과 관련된 모든 설정을 변경해보았지만 결과가 같았다.3. 에 대한 해결책으로 USART 1,2,3 등 많은 USART 포트를 사용해봤지만 결과가 동일했다. 2. 에 대한 해결책으로일반적으로 우측 부분에 관한 Clock만 생각했기 때문에 우측 부..

STM32 - Clock, Timer 구현 (SysTick, Timer 사용)

https://insoobaik.tistory.com/631 STM32 - TIM 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comTIM 이론에 이어 실제로 TIM을 Necleo board에 구현해 볼 것이다.LSE, LSI, HSI, HSE 총 4개가 있는데 일반적으로 External 즉, 크리스탈을 이용하여 생성된 클럭이 안전하다.RTC의 경우에도 LSE를 사용한다.STM32F429의 경우 HSE는 ST-Link 파트에 붙어있는 MCO로부터 클럭을 받아 사용하게 된다. Clock Configuration을 통해 설정이 가능하며, DataSheet를 통해 각 타이머가 사용하는 APB도 알 수 있다.각 타이머는 위 DataSheet와 같이 동작하게 ..

STM32 - TIM 이론

STM32F429의 Clock은 최대 180MHz 속도로 동작할 수 있다. 단 동작 속도가 빠르면 전력 소모가 많기 때문에 전력 소모를 고려하여 최대 속도로 동작 시킬 필요가 없다. STM32F429Nucleo Board는 내부에 16MHz의 CPU clock과 32KHz의 RTC(Real Time Clock)가 있다.CPU clock은 HSE, HSI 중 하나를 선택할 수 있고 초단위 시간을 측정하는 RTC LSE, LSI 중 하나를 선택 가능하다.HSE : High Speed ExternalHSI : High Speed InternalLSE : Low Speed External (32.768KHz)LSI : Low Speed Internal (32KHz) RTC clock에 해당하는 LSE 32.76..

Verilog- FPGA를 이용한 DC 모터 구동

https://insoobaik.tistory.com/635 STM32 - PWM를 이용한 모터 제어 및 부저를 이용한 멜로디 생성보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comPWM에 대한 내용은 위 글을 통해 참고하면된다.STM32를 가지고 PWM을 통해 모터를 동작시킨 것과 동일하게 FPGA, Verilog를 통해 DC 모터 제어를 해 볼 것이다.MotorMotor StatusIN1IN2IN3IN4MOTOR_AFoward Rotation1/PWM0  Reverse01/PWM  STOP00  Break11   DC 모터의 경우 ARR값에 대한 CCR값을 통해 속도를 조절 할 수 있다.DC 모터의 속도는 ARR에 의해 정해진 타이머 주기의 평균 전압..

Innovus - Script 파일을 이용한 P&R (SETUP ~ GDSII)

https://insoobaik.tistory.com/622 Innovus - P&R (SETUP ~ GDSII)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com이전에 P&R 작업을 GUI를 통해 작업한 바가 있다.매번 위 과정을 계속해서 반복해야 한다면 시간이 오래 걸릴 수도 있고, 중간에 실수가 발생할 수 있기 때문에 Script 파일을 생성하여 동작 시키는 것이 시간과 안정성에 있어서 좋다.innovus를 실행하게 되면 기본 생성 파일로 1. 로그 파일 2. 명령 파일이 생성되는 것을 알고 있다.innovus.cmd 파일을 확인해보면 GUI를 통해 진행한 P&R에 대한 명령어가 기록되어 있는 것을 확인할 수 있다.innovus.cmd 파일을 열어보..

C# - WinForm 연습 (Form, Button, CheckBox, ComboBox, GroupBox, Label, ListBox, TextBox, Timer... 구현 )

전체 코드using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Security.Principal;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Timers;using System.Windows.Forms;namespace WindowsFormsApp3{ public partial class Form1 : Form { private string name1; private..

반도체 Study/C# 2024.06.10

C# - WinForm 기본 화면 구성

WinForm에서 Event가 발생하면 Event Handler를 통해 발생한 Event를 처리한다.Program.cs : 윈도우 폼 생성과 실행(자동 생성)기본적으로 Program.cs의 Application.Run 함수를 통해 Form1의 객체 생성 및 실행된다. Form1.Designer.cs : 자동 생성 코드 (생성하는 Controls에 대한 속성 및 이벤트 처리 등)Form1.cs[디자인] : 윈도우 form에 대한 디자인을 보여주는 화면Form1.cs : 이벤트 처리 및 기타 로직을 작성하는 곳 [디자인]에서 생성된 이벤트들이 함수로 자동 생성된다. WinForm은 기본적으로 Form1.cs[디자인] / Form1.cs / Form1.Designer.cs를 통해 동작하게 된다. [디자인]을 ..

반도체 Study/C# 2024.06.10

STM32 - LCD 문자 출력 (I2C)

https://insoobaik.tistory.com/626 STM32 - I2C 이론보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comI2C 이론에 이어 I2C 통신을 이용하여 LCD에 문자를 출력해볼 것이다.LCD에 문자를 출력하기 위해 아두이노 LCM1602 IIC 쉴드를 사용할 것이다. 해당 쉴드에는 PCF8574가 내장되어 있다.PCF8574는 I2C 통신 프로토콜을 이용하여 데이터를 주고 받는다. Slave 주소를 정하는 7bit는 앞에 0100은 고정이며 A0, A1, A2에 의해 Slave가 정해진다.슬레이브 주소를 정하는 A0, A1, A2의 경우 Pull Up 저항이 달려있기 때문에 A0, A1, A2에는 1의 값이 전달된다.코드를 생성..

728x90