18. STM32 I2C 통신 - AM1008W-K-P 동작 구현
·
🧊 STM32
이 전 글에서 AM1008W-K-P 데이터시트와 I2C HAL 함수들을 소개했다. 이번 글은 위 정보들을 이용하여 아두이노와 똑같이 재현하도록 하겠다. 우선 프로젝트를 생성한다. 프로젝트 생성에 대한 내용은 생략하겠다.1. I2C 설정I2C 동작을 구현하기 위해 레지스터를 설정해주어야 하는데, CUBE IDE에서는 간단하게 GUI를 통해 생성할 수 있다. I2C1와 USART1을 각각 활성화시킨다. (생략, 이 전글들 참고 바람)USART1는 기본 115200을 사용할 것이므로 별도의 설정을 할 필요는 없지만 I2C1은 속도를 설정해주어야 한다.AM1008W-K-P 센서는 30kbps 이하에서 동작하는 것이 스펙이다. I2C1은 default 설정으로 standard 모드로 100kbps이다.  100k..
[STM32] 17. I2C 통신 함수 종류
·
🧊 STM32
📌 1. 주요 I2C HAL 함수STM32Cube HAL 기능을 기반으로 차단 모드, 인터럽트 모드 또는 DMA 모드의 3가지 모드로 I2C 데이터 전송을 수행할 수 있다.⚙️ 1. Blocking Mode통신은 폴링 모드로 수행되며, 모든 데이터 처리 상태는 전송 완료 후 동일한 기능으로 반환된다.HAL_I2C_Master_Transmit()HAL_I2C_Master_Receive()HAL_I2C_Slave_Transmit()HAL_I2C_Slave_Receive()HAL_I2C_Mem_Write()HAL_I2C_Mem_Read()⚙️ 2. Non-Blocking Mode통신은 Interrupts 또는 DMA를 사용하여 수행되며, 이러한 함수는 전송 시작 상태를 반환한다. 인터럽트 모드를 사용할 때는..
[STM32] 16. I2C 센서 소개 (미세먼지/이산화탄소 복합 공기질 센서 CUBIC - AM1008W-K-P)
·
🧊 STM32
STM32 I2C 통신을 이용해 테스트를 해볼 센서는 복합 공기질 센서 AM1008W-K-P 모델이다.해당 센서는 주위 미세먼지와 이산화탄소 농도를 알려주는 복합 공기질 센서이며, 미세먼지 (PM), VOC, 이산화탄소, 온습도 측정이 가능하다.➡️ 1. Features미세먼지(GRIMM 방식), 이산화탄소, VOC, 온습도공급 전압 : 5V노이즈 방지를 위한 금속 차폐통신 방식 : I2C, UART크기 : 80(W) x 50(H) x 13.6(D) [mm]➡️ 2. Application Ideas Air PurifierAir Quality MonitorAir ConditionerVentilation SystemConsumer electronic productsEnvironmental monitoring..
[STM32] 15. I2C 통신 개요
·
🧊 STM32
📌 1. I2C(Inter-Integrated Circuit)란 무엇인가?I2C는 원래 1982년 필립스 반도체가 만든 집적 회로 사이에 사용되는 2선 직렬 통신 시스템이다.I2C는 다중 마스터, 다중 슬레이브, 동기식, 양방향, 반이중 직렬 통신 버스이다. SDA(Serial Data)는 마스터와 슬레이브가 정보(비트 시퀀스)를 전송하거나 수신하는 라인이다.SCL(Serial Clock)은 데이터 흐름 동기화를 위한 클럭 전용 라인이다.SDA 및 SCL 라인은 저항으로 끌어올려야 한다. 이 저항의 값은 버스 길이(버스 커패시턴스)와 전송 속도에 따라 달라진다. 보통 4.7K옴에서 10K옴 사이를 사용한다.위 I2C 통신 회로도를  보면, VDD(전원) 측에 Rp(저항)이 풀업으로 달려있는 것을 확인할..
[STM32] 14. 콜백 함수 호출 과정
·
🧊 STM32
이 전 포스팅에서 HAL 라이브러리가 제공하는 인터페이스(HAL_UART_RxCpltCallback)를 사용하여 UART Interrupt를 간단한 기능을 구현하였다. HAL_UART_RxCpltCallback 함수는 STM32 HAL 라이브러리에서 UART 데이터를 수신할 때 사용되는 콜백 함수이다. 이 함수는 UART 인터럽트를 사용하여 데이터를 비동기적으로 수신할 때 호출된다. 임베디드 시스템 관점에서 이 콜백 함수가 호출되는 과정을 간단히 설명하겠다.1. HAL_UART_RxCpltCallback 함수 호출 과정1. UART 인터럽트 활성화: 먼저, UART 인터럽트를 활성화한다. 이는 HAL_UART_Receive_IT 함수를 호출하여 UART 모듈이 데이터를 수신할 때 인터럽트를 발생시킬 수 ..
[STM32] 12. 시리얼 모니터를 위한 UART 통신 구현 (2)
·
🧊 STM32
⚙️ 1. UART 설정기본적인 UART 통신은 폴링(Polling) 방식으로 수행할 수 있다. 폴링 방식에서는 MCU가 계속해서 UART 상태 레지스터를 확인하여 데이터가 수신되었는지 또는 전송이 완료되었는지를 확인한다. 하지만 폴링 방식은 MCU 리소스를 많이 소비하므로 보통은 Interrut 방식이나 DMA 방식을 주로 사용한다. 이번 글은 폴링 방식으로 간단히 구현할 수 있으므로 소개해보려 한다. 이번 예제는 UART 1번을 사용한다. (PA10 - UART1_RX, PA9 - UART1_TX)   사용된 보드는 STM32F103이다.설정은 아래와 같다. 폴링 방식을 사용하기 때문에 아래 테이블 이외에 별도로 설정할건 없다.Baud Rate115200 Bit/sWorld Length8 Bits (..
[STM32] 11. 시리얼 모니터를 위한 UART 통신 구현 (1) FTDI (UART To USB)
·
🧊 STM32
FTDI (Future Technology Devices International Ltd.)는 주로 UART (Universal Asynchronous Receiver-Transmitter) 신호를 USB (Universal Serial Bus)로 변환하는데 사용되는 IC (Integrated Circuit) 칩을 제조하는 회사이다. FTDI 칩을 사용하면 UART를 사용하는 장치를 USB 포트에 연결할 수 있다. 임베디드 시스템에서 printf 함수를 사용하는 것은 디버깅, 로깅, 상태 확인 등을 위해 매우 유용하다. printf 함수는 표준 C 라이브러리 함수로, 포맷된 출력을 생성하여 콘솔이나 터미널에 문자열을 출력하는데 사용된다. 그러나 임베디드 시스템에서는 일반적으로 디스플레이나 콘솔이 없기 때..
[STM32] 10. UART, USART 동작 원리 설명
·
🧊 STM32
UART/USART 설명📌 1. UART (Universal Asynchronous Receiver/Transmitter) 란?UART는 Universal Asynchronous Receiver/Transmitter의 약자로, 직렬 통신을 위한 하드웨어 프로토콜이다. UART는 데이터를 두 개의 핀, 송신(Tx)과 수신(Rx)을 통해 비동기적으로 전송한다. 비동기식 통신이란 송신 측과 수신 측 간의 동기화를 위해 별도의 클럭 신호가 필요하지 않은 통신 방식을 의미한다. 보통 기본 C언어에서 printf를 구현할 때 많이들 소개하므로 기본적인 동작을 알아두면 좋다.📌 2. UART의 기본 작동 원리비동기 통신: 별도의 클럭 신호 없이 송신기와 수신기가 동일한 전송 속도(baud rate)로 설정되어야 ..
[STM32] 9. Volatile 키워드
·
🧊 STM32
Volatile 키워드C 언어에서 volatile 키워드는 임베디드 소프트웨어 개발에서 중요한 역할을 한다. 이 키워드는 변수가 최적화 과정에서 컴파일러에 의해 수정되지 않도록 보장하며, 프로그램의 실행 도중에 변수의 값이 예상치 못하게 변경될 수 있다는 것을 컴파일러에 알린다. 이러한 변경은 외부 이벤트나 하드웨어 등에 의해 발생할 수 있다.C 언어에서 volatile 키워드는 임베디드 소프트웨어 개발에서 중요한 역할을 한다. 이 키워드는 변수가 최적화 과정에서 컴파일러에 의해 수정되지 않도록 보장하며, 프로그램의 실행 도중에 변수의 값이 예상치 못하게 변경될 수 있다는 것을 컴파일러에 알린다. 이러한 변경은 외부 이벤트나 하드웨어 등에 의해 발생할 수 있다.📌 1. volatile의 중요성메모리 맵..
[STM32] 8. 스위치 채터링 (소프트웨어 디바운싱)
·
🧊 STM32
스위치 채터링푸쉬 리턴 스위치를 누를 때 발생할 수 있는 노이즈나 불안정한 신호로 인해 스위치가 여러 번 눌렸다고 인식되는 현상을 "채터링" 또는 "디바운싱" 문제라고 한다. 이를 해결하기 위해 디바운싱 필터링을 적용해야 한다. 디바운싱을 효과적으로 처리하는 방법에는 하드웨어적 방법과 소프트웨어적 방법이 있다. 이번 포스팅은 소프트웨어 디바운싱을 통해 채터링 문제를 해결 방법을 소개하려 한다. 소프트웨어 디바운싱은 코드로 디바운싱을 구현하는 방법아다. 주로 타이머를 이용하여 일정 시간 동안 신호가 안정적인지 확인하는 방식으로 처리한다.🔗 1. 코드/* USER CODE BEGIN PTD */#define DEBOUNCE_DELAY 30 /* 30ms *//* USER CODE END PTD */.../..
18진수
'STM32' 태그의 글 목록