๐งฟ I2C (Inter-Integrated Circuit) ํต์ ์ด๋?
MCU(Master) - ์์(Slave)๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต์ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ฉฐ ํด๋ฝ ์ , ๋ฐ์ดํฐ ์ ์ ์ด์ฉํ์ฌ ํต์ ํ๋ค.
๊ฐ ์ ์ ์ฐ๊ฒฐ๋์ด ์๋ ์ ํญ์ ํตํด ์ ์์ ์ธ๊ฐ์์ผ ๋ ์ ์ ๋ชจ๋ High(Enable) ์ํ๋ก ๋ง๋ ํ MCU๋ฅผ ํตํด
ํด๋น ์ ์ ํต์ ์ ํ์ํ ์ ํธ๋ฅผ ๋ณด๋ด ํต์ ํ๋ค.
(โป MCU(Master)์์ ์ ์ฒด์ ์ผ๋ก ํต์ ์ ์ ์ดํ๋ฉฐ ๋๋ฌธ์ Slave ๋ผ๋ฆฌ์ ๋
์์ ์ธ ํต์ ์ ๋์ฒด๋ก ํ์ง ์๋๋ค.)
๐งฟ Master
Master๋ ๋ณดํต ์ฌ์ฉํ๋ MCU๋ฅผ ๋ํ๋ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค.
1. I2C ํต์ ์์ ๋ฐ ์ค์ง ์ ์ด
I2C ํต์ ์ ๋ํ ์์ ๋ฐ ์ ์ง๊ฐ ํ์ํ ๋ ์์ ๋ฐ ์ ์ง ์ํจ๋ค.
2. ์ฌ๋ ์ด๋ธ ์ฃผ์ ์ง์
์ฐ๊ฒฐ๋์ด ์๋ Slave๋ค์ ์ฃผ์๋ฅผ 7๋นํธ๋ก ํ ๋นํ๊ณ ์ฃผ์ ๋ค์ Read / Write ๋นํธ๋ฅผ ์ถ๊ฐํด ํด๋น Slave์
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๊ฒ์ธ์ง ํ์์ ๋ฐ๋ผ ์ค์ ํ๋ค.
3. ํด๋ก ์๋ ๋๊ธฐํ
ํด๋ก ์ ํธ(SCL)์ ์์ฑํ์ฌ SCL ๋ผ์ธ์ ํตํด ์ ํธ๋ฅผ Slave๋ค์๊ฒ ๋ณด๋ด๊ณ ํด๋น ์ ํธ๋ฅผ ํตํด ๋ชจ๋ ์์์ ํด๋ก ์๋๋ฅผ
๋๊ธฐํ ์ํจ๋ค.
4. SDA ๋ฐ SCL ์ ํธ ์ ์ด
SDA ๋ฐ SCL ์ ํธ๋ฅผ ์์ฑํ์ฌ Slave์๊ฒ ๋ณด๋ด๊ณ Slave๋ก ๋ถํฐ ๋ฐ์ ์ ํธ๋ฅผ ๊ฐ์งํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ๋ ์ด์ง ๋นํธ๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ธ์ํ ์ ์๋๋ก ์ฒ๋ฆฌ ํ๋ค.
5. ACK, NACK ์ ํธ ์ก์์
๋ฐ์ดํฐ ์์ ํ ์ฑ๊ณต ์ ACK ์ ํธ, ์คํจ ์ NACK ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
6. ์ค๋ฅ ์ฒ๋ฆฌ
ํต์ ์ค ๋ฐ์ํ๋ ๊ฐ์ข
์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ์ฒ๋ฆฌํ๋ค.
๐งฟ Slave
Slave๋ MCU์ ํต์ ์ด ํ์ํ ๊ฐ์ข
์์๋ค์ ์๋ฏธํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค.
1. ๋ฐ์ดํฐ ์ก์์
Master๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ๊ฑฐ๋ ์ก์ ํ๋ค.
2. ACK, NACK ์ ํธ ์ก์์
๋ฐ์ดํฐ ์์ ํ ์ฑ๊ณต ์ ACK ์ ํธ, ์คํจ ์ NACK ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
3. ์ํ ๊ด๋ฆฌ ๋ฐ ๋์
Master๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ์ ํด๋น ๋ฐ์ดํฐ์ ๋ฐ๋ฅธ ์ํ ๊ฐ๋ฅํ ๋์์ ํ๋ค.
4. ์ค๋ฅ ์ฒ๋ฆฌ
ํต์ ์ค ๋ฐ์ํ๋ ๊ฐ์ข
์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ณ ์ฒ๋ฆฌํ๋ค.
๐งฟ ํต์ ๋ฐฉ๋ฒ
4.1 ํต์ ์์
SCL : High , SDA : High -> Low
SDA๋ฅผ High์์ Low๋ก ๋ฐ๊พธ์ด Slave์ ํต์ ์.์์ํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
(โป SDA์ SCL ์ ์ ํ์
์ ํญ์ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก High ์ด๋ฉฐ SDA๊ฐ Low ์ํ ์ผ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ
High ์ํ์ผ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง ์๋๋ค.)
4.2 ์ฌ๋ ์ด๋ธ ์ฃผ์ ์ ์ก
Master(MCU)์์ ํต์ ํ ์ฌ๋ ์ด๋ธ ์ฅ์น์ I2C ์ฃผ์๋ฅผ 7๋นํธ๋ก ์ ์กํ๋ค.
4.3 ๋ฐ์ดํฐ ์ก์์
MCU -> Slave ๋๋ Slave -> MCU๋ก ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
SCL ํด๋ก์ด Low ์ผ ๋ Master(MCU)์์ Slave๋ก ๋ถํฐ ์ก/์์ ํ ๋ฐ์ดํฐ๋ฅผ ์ด์ง ๋นํธํ ํ๋ค.
SCL ํด๋ก์ด High ์ผ ๋ ์ด์ง ๋นํธํํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค.
4.4 ํต์ ์ข ๋ฃ
SCL: High , SDA : Low -> High
SDA๋ฅผ Low์์ High๋ก ๋ฐ๊พธ์ด Slave์ ํต์ ์ ์ข
๋ฃํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
4.5 ์๋ต ์ ํธ ์ก์
1) ACK ์ ํธ
Slave ์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ Master ์์ ์ ์์ ์ผ๋ก ์์ ์๋ฃ ๋ฐ
Master ์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ Slave ์์ ์ ์์ ์ผ๋ก ์์ ์๋ฃ ํ์์ ๊ฒฝ์ฐ Master์์ ACK ์ ํธ๋ฅผ ์์ฑํ๋ค.
2) NACK ์ ํธ
Slave ์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ Master ์์ ์ ์์ ์ผ๋ก ์์ ์๋ฃํ์ง ๋ชปํ์์ ๊ฒฝ์ฐ ๋ฐ
Master ์์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ Slave ์์ ์ ์์ ์ผ๋ก ์์ ์๋ฃํ์ง ๋ชปํ์์ ๊ฒฝ์ฐ Master์์ NACK ์ ํธ๋ฅผ ์์ฑํ๋ค.
'embedded' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[stm32] RTOS ์ด๋ก ์ ๋ฆฌ (0) | 2023.09.11 |
---|---|
[stm32] I2C ํต์ ์ค์ต (0) | 2023.09.11 |
[stm32] ADC & DMA ์ค์ต (0) | 2023.09.06 |
[stm32] ADC & DMA ์ด๋ก ์ ๋ฆฌ (0) | 2023.09.06 |
[stm32] UART ์ค์ต (0) | 2023.08.30 |