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] 13. UART Interrupt κ΅¬ν˜„
Β·
🧊 STM32
UART ν†΅μ‹ μ—μ„œ Polling λ°©μ‹μ€ κ°„λ‹¨ν•˜μ§€λ§Œ νš¨μœ¨μ„±μ΄ λ–¨μ–΄μ§ˆ μˆ˜ μžˆλ‹€. μ΄λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Interrupt λ°©μ‹κ³Ό DMA λ°©μ‹μ„ μ‚¬μš©ν•  μˆ˜ μžˆλ‹€. μ΄ λ²ˆ ν¬μŠ€νŒ…은 Interrupt λ°©μ‹μ„ ν†΅ν•΄ μ΄ μ „ ν¬μŠ€νŒ…인 Polling λ°©μ‹ κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•œλ‹€.이전 ν¬μŠ€νŒ… : https://blog.naver.com/younjung1996/223477638132 12. STM32 μ‹œλ¦¬μ–Ό λͺ¨λ‹ˆν„°λ₯Ό μœ„ν•œ UART 톡신 κ΅¬ν˜„ (2)기본적인 UART 톡신은 폴링(Polling) λ°©μ‹μœΌλ‘œ μˆ˜ν–‰ν•  수 μžˆλ‹€. 폴링 λ°©μ‹μ—μ„œλŠ” MCUκ°€ κ³„μ†ν•΄μ„œ ...blog.naver.comμ‚¬μš©λœ λ³΄λ“œλŠ” STM32F103이며, UART 1λ²ˆμ„ μ‚¬μš©ν•œλ‹€. (PA10 - UART1_RX, PA9 - UART1_TX) πŸ“Œ..
[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의 μ€‘μš”μ„±λ©”λͺ¨λ¦¬ 맡..
18μ§„μˆ˜
'🧊 STM32' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘