Toby's Study Blog
article thumbnail
[stm32] RTOS 이론 정리
embedded 2023. 9. 11. 20:57

🚃 RTOS 란? 사용자 - 프로그램 - 하드웨어 간 소통을 통해 도와주는 OS에서 수행하는 작업이 제한 시간 안에 정확하게 이루어져야 할 때 사용하는 것이 RTOS이다. Window와 같은 OS는 용량이 크고 MCU는 실시간성이 중요하기 때문에 RTOS 중 가벼운 RTOS를 주로 사용한다. 🚃 RTOS의 분류 RTOS는 크게 소프트웨어와 하드웨어 RTOS로 나뉜다. 소프트웨어 RTOS 원하는 장치에서 RTOS 소프트웨어를 실행하여 RTOS를 사용하는 것을 의미한다. 실시간성이 요구되나 소프트웨어상의 딜레이 등의 장애가 있어도 될 때 사용한다. (※ e.g. 실시간 게임, 비디오 스트리밍, 각종 애플리케이션 등에 사용하며 FreeRTOS, ChibiOS/RT 등이 있다.) 하드웨어 RTOS RTOS 기능..

article thumbnail
[stm32] I2C 통신 실습
embedded 2023. 9. 11. 20:55

🧿 실습 목표 1. F429zi와 HD44780 연결 2. i2c_HD44780.h, i2c_HD44780.c, app.c 파일 생성 3. LCD 문자열 출력 확인 🧿 I2C 설정 🧿 실습 결과 https://github.com/Tobbyvv/stm32-project/tree/main/lcd_I2c F429zi와 HD44780 연결 I2C 모듈의 VCC, 백라이트, GND를 CN8 커넥터의 5V와 GND에 연결 I2C 모듈의 SCL과 SDA를 CN7 커넥터의 PB8, PB9핀과 연결 i2c_HD44780.h, i2c_HD44780.c, app.c 파일 생성 2.1 i2c_HD44780.h #ifndef __I2C_HD44780__H__ #define __I2C_HD44780__H__ #ifdef __cp..

article thumbnail
[stm32] I2C 통신 이론 정리
embedded 2023. 9. 11. 16:57

🧿 I2C (Inter-Integrated Circuit) 통신이란? MCU(Master) - 소자(Slave)간에 데이터를 주고 받는 통신 방법 중 하나이며 클락 선, 데이터 선을 이용하여 통신한다. 각 선에 연결되어 있는 저항을 통해 전압을 인가시켜 두 선을 모두 High(Enable) 상태로 만든 후 MCU를 통해 해당 선에 통신에 필요한 신호를 보내 통신한다. (※ MCU(Master)에서 전체적으로 통신을 제어하며 떄문에 Slave 끼리의 독자적인 통신은 대체로 하지 않는다.) 🧿 Master Master는 보통 사용하는 MCU를 나타내며 다음과 같은 역할을 한다. 1. I2C 통신 시작 및 중지 제어 I2C 통신에 대한 시작 및 정지가 필요할 때 시작 및 정지 시킨다. 2. 슬레이브 주소 지정..

article thumbnail
[stm32] ADC & DMA 실습
embedded 2023. 9. 6. 21:19

🐳 실습 목표 1. 외부 온도 센서 - F429zi 연결 2. DMA를 통해 들어온 기본 값 확인 3. DMA를 통해 들어온 ADC 외부 온도 센서 값, 내부 장치 Vref 값, 내부 온도 센서 값 확인 🐳 ADC 세팅 ADC1 파라미터 세팅 1.1 Mode Independent mode : MCU 내부 ADC 기능 사용 1.2 Clock Prescaler CPU Clock을 사용하여 ADC 변환이 이루어지는데 시스템의 클럭 속도가 너무 빠를 필요가 없으며 전력 소비 효율성 및 주파수 범위 내에서 안정적으로 동작을 위해 CPU clock을 나눠서 사용한다.(※ 최소 4 이상) (※ F429zi PCLK2 (Peripheral Clock 2)의 경우 90MHz 이므로 4로 나눌 경우 22.5MHz가 된다...

article thumbnail
[stm32] ADC & DMA 이론 정리
embedded 2023. 9. 6. 20:11

🐳 ADC란? (Analog - to - Digital Converter) MCU에서 처리가 불가능한 아날로그 신호가 들어왔을 때 처리가 가능한 디지털 신호(1 또는 0)로 바꿔주는 장치이다. 대부분의 MCU에는 ADC 장치가 내장되어 있다. 🐳 아날로그 신호 -> 디지털 신호 변환 방법 아날로그 신호 -> 디지털 신호로 변환하기 위해서 1) 필터링 -> 2) 샘플링 -> 3) 양자화 -> 4) 부호화 과정을 거쳐야 하며 각 과정에 대한 설명은 아래와 같다. 1. 필터링 아날로그 신호에서 원하는 대역을 설정해 원치 않게 들어온 원하지 않는 대역의 신호(노이즈 신호)를 제거한다. 2.샘플링 필터링된 신호를 x축(시간) 기준으로 쪼개고 쪼갠 시간에 따른(x값에 따른) y 값들을 얻는다. (※ 많이 쪼갤수록 ..

article thumbnail
[stm32] UART 실습
embedded 2023. 8. 30. 14:17

🌏 실습 목표 1. PC - MCU Uart Polling & Interrupt 두가지 방식 문자열 송수신 테스트 2. PC - MCU Uart 통신 연결을 위한 uart.c 파일 생성 3. Command Line Interface (CLI)의 기능 구현을 위한 cli.c 파일 생성 4. 수행할 동작 led.c, pwm.c 파일 생성 🌏 Uart 세팅 여기서 USART는 각종 통신 프로토콜(e.g. UART, SPI, I2C 등..)을 구현하고 서비스하는 포트이지 USART 통신이 아니다. 1. UART 세팅 1.1 Word Length 한 번의 데이터 전송에서 사용할 수 있는 비트 수를 설정 8비트이면 0부터 255까지의 값이므로 대부분의 값을 표현할 수 있으며 더 낮거나 더 높을 경우 호환성, 효율성..

article thumbnail
[stm32] UART 이론 정리
embedded 2023. 8. 16. 16:22

먼저 이해하는데 있어 필요한 직렬 통신, 병렬 통신, 통신 방법, 동기 방식, 비동기 방식에 대해 알아보았습니다. 🌏 직렬 통신 (Serial 통신) - 하나의 경로를 통해 데이터를 순차적으로 전달하는 통신 - 라인이 하나라 구조적으로 매우 간단하며, 양단간 송수신 거리가 멀어도 큰 제한이 없다. 🌏 병렬 통신 (Parallel 통신) - 다수의 경로를 통해 여러 데이터를 한 번에 전달 - 라인이 여러 개 이기 때문에 데이터를 동시에 빠르게 송수신 가능하나 한 번에 훨씬 많은 데이터가 오가므로 거리가 멀수록 직렬 통신에 비해서 더 높은 자원(전력)이 소모되며 초기 설치 시 하드웨어적 비용이 더 발생한다. 🌏 통신 방법 - 통신하는 방법은 직렬 통신, 병렬 통신 둘 다 동일하며 아래와 같다. Transmi..

article thumbnail
[stm32] Timer 실습
embedded 2023. 8. 16. 15:38

⏰ 실습 목표 PWM (펄스 폭 변조) 신호를 LED1이 연결된 포트에 전달하여 LED를 작동시키고 DutyCycle을 변경시켜 LED의 밝기를 아래 2가지 방법으로 변경한다. 1.1 시간 경과에 따라서 LED 밝기를 변경시킨다. 1.2 버튼 눌름 여부에 따라서 LED 밝기를 변경시킨다. ⏰ Tim3 세팅 동작을 알아보기 위해서 TIM2, TIM3(General Purpose Timer)의 세팅을 각각 아래와 같이 하였습니다. 위 그림에서 LD1과 연결된 Pin은 PB0임을 알 수 있으며 PB0에 TIM3_CH3를 연결하였습니다. Counter Settings Prescaler와 Counter Period 설정을 통해 타이머 동작 설정 1. TIM2 Prescaler : 8399, Counter Peri..

검색 태그