반응형

MCU 13

[mcu] UART/USART 통신 개요

mcu에서 can, i2c 등과 같이 가장 많이 쓰이는 통신방법중의 하나이다. 일반적으로 시리얼(serial) 혹은 RS232통신으로 불리우며 1:1 통신이다.물론 1:N 통신이 가능한 RS422, RS485통신도 있다.1. UART vs USART1) USART(Universal Synchronous/Asynchronous Receiver Transmitter)    └ 범용 동기/비동기화 송수신 (반이중, 양방향-수신/송신 동시에 불가)    -. 데이터 동기화를 위해 별도의 clock 신호를 사용한다.    -. UART에서 사용하는 start & stop bit가 필요없어 전송 효율 좋음    -. UART에서 필요없는 clock 전송을 위한 추가 배선이 필요    -. UART에 비해 데이터 전..

MCU 2024.05.12

[component] mpu9250 - magnetometer

오늘은 mpu9250 중 magnetometer에 대해서 상세하게 알아보자. 1. Magnetometer Features @ 16-bit adc @ full scale range of ±4800µT 2. Magnetometer Specifications 3. Magnetometer 사용하기(regster 설정) ① CNTL1 수정: 16bit resolution 설정, continuous mode 2 설정 ② calibration 실시하여 bias 계산 ③ mag 데이터 읽기 후 bias 빼기 ④ mag 데이터 * resolution 실제 값 계산하기 @ mpu9250 - temperature 내용은 아래 링크 참조 [component] mpu9250 - temperature t-shaped-person..

MCU/COMPONENT 2024.03.01

[component] mpu9250 - gyroscope

오늘은 mpu9250 중 gyroscope에 대해서 상세하게 알아보자. 1. Gyroscope Features @ 16-bit adc @ 프로그램 가능한 full scale range of ±250, ±500, ±1000, ±2000˚/sec @ 프로그램 가능한 low pass filter 2. Gyroscope Specifications 3. Gyroscope 사용하기(regster 설정) ① GYRO_CONFIG 수정: Full Scale 설정( ±250, ±500, ±1000, ±2000˚/sec ) ② CONFIG 수정: fchoice 및 Low Pass Filter 설정 ③ calibration 실시하여 bias 계산 및 레지스터 설정(자동연산) ④ gyro 데이터 읽기 후 bias 빼기(bia..

MCU/COMPONENT 2024.02.29

[component] mpu9250 - accelerometer

오늘은 mpu9250 중 accelerometer에 대해서 상세하게 알아보자. 1. Accelerometer Features @ 16-bit adc @ 프로그램 가능한 full scale range of ±2, ±4, ±8, ±16g 2. Accelerometer Specifications 3. Accelerometer 사용하기(regster 설정) ① ACCEL_CONFIG 수정: Full Scale 설정( ±2g, ±4g, ±8g, ±16g) ② ACCEL_CONFIG2 수정: fchoice 및 Low Pass Filter 설정 ③ calibration 실시하여 bias 계산 및 레지스터 설정(자동연산) ④ accel 데이터 읽기 후 bias 빼기(bias 자동 반영) ⑤ accel 데이터 * res..

MCU/COMPONENT 2024.02.28

[component] mpu9250

mpu9250은 9축 관성 측정 장치(IMU, Inertial Measurement Unit) 혹은 9축 측위 센서(positioning sensor)라고 불리우는 센서이다. mpu9250는 MCM(Multi Chip Module)으로 칩 내부가 크게 2부분으로 나눠져 있다. 첫번째가 가속도 센서(accelerometer) + 자이로 센서(gyroscope) 부분이고 두번째가 지자기 센서(magnetometer) 부분이다. 3개의 센서는 각각 3축으로 구성되어 있고 그래서 총합 9축 센서이다. 1. 주요 용도 @ 드론, 핸드폰, 블랙박스 등에서 회전, 기울기, 충격(가감속) 등의 상태를 파악 2. 통신 방식 @ 일반적으로 400kHz 속도의 I2C 통신 사용 가능 @ I2C 주소: 0x68(AD0), 0..

MCU/COMPONENT 2024.02.27

[stm32f103] micros(), delay_us() 사용하기

STM HAL 라이브러리에서 기본 제공하는 딜레이 함수는 HAL_Delay(), 카운터 함수는 HAL_GetTick() 이다. 이 두함수는 모두 ms 단위로 동작한다. 그러나 프로그래밍을 하다보면 us 단위로 제어가 필요한 경우가 있다. 이에 us 단위의 카운터, 딜레이 함수의 사용 방법에 대해서 알아보자.1. 아래 깃허브를 통해 micros.h 파일 다운로드 GitHub - t-shaped-person/microsContribute to t-shaped-person/micros development by creating an account on GitHub.github.com 2. micros.h 파일 참조#include "micros.h" 3. DWT 초기화DWT_Init(); 4. delay_us(..

[stm32f103] 정확한 주기로 led 제어하기 - HAL_GetTick() 사용

led 제어만을 목적으로 하는 단순한 프로그램이 아니고서는 HAL_Delay 함수 사용은 자제하는 것이 좋다. 왜냐하면 HAL_Delay 함수 사용중에는 다른 작업을 할 수 없고 다른 작업이 많아서 지연이 발생할 경우 HAL_Delay 함수 실행 시점도 지연이 발생하기 때문이다. 좀 과장해서 설명하자면 500ms 마다 led가 점멸하도록 코딩했는데 지연으로 인해 1000ms 마다 led가 점멸할 수도 있다. 그래서 다른 작업에 영향을 주거나 받는 것이 최소화 될 수 있도록 아래와 같이 주로 코딩을 한다. 1. 기본 led 제어 설정은 아래를 참조하자. [stm32f103] led 제어하기 - HAL_Delay() 사용 @@ GPIO_Output 설정과 HAL_Delay()를 사용하여 led를 제어해 보자..

[stm32f103] led 제어하기 - HAL_Delay() 사용

@@ GPIO_Output 설정과 HAL_Delay()를 사용하여 led를 제어해 보자. @@ 개발보드의 PC13에 led가 연결되어 있다. 1. 기본 cubemx 설정은 아래를 참조하자. [stm32f103] STM32CubeMX 필수 기본 설정 @@ 보드: stm32f103c8t6 개발보드 @@ 디버거: st-link v2 @@ IDE: IAR Embedded Workbench IDE - ARM 7.70.1 1. STM32CubeMX 실행 > File > New Project... 클릭 > New Project 팝업창 뜸 아래 팝업창에서 stm32f103c8t6 검색 > 하단부 stm32f10 t-shaped-person.tistory.com 2. pinout에서 PC13 마우스 좌클릭 > GPIO_..

[stm32f103] STM32CubeMX 필수 기본 설정

@@ 보드: stm32f103c8t6 개발보드 @@ 디버거: st-link v2 @@ IDE: IAR Embedded Workbench IDE - ARM 7.70.1 1. STM32CubeMX 실행 > File > New Project... > New Project 팝업창 @ 팝업창에서 stm32f103c8t6 검색 > 하단부 stm32f103c8t6 더블 클릭 2. System Core > RCC > High Speed Clock (HSE) @ 외부 크리스탈 사용해서 Crystal/Ceramic Resonator 선택 3. System Core > SYS > Debug @ st-link v2 swd 디버거 사용해서 Serial Wire 선택 4. Clock Configuration 탭으로 이동 @ HS..

반응형