AVR I2C

I2C ํ†ต์‹ ์€ ๋‘ ๊ฐœ์˜ ์„ ์œผ๋กœ ์—ฌ๋Ÿฌ ์žฅ์น˜์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์„ ์€ clock์„ ๋™๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ SCL๊ณผ clock์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ SDA์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ต์‹ ์„ ์ฃผ๋„ํ•˜๋Š” master๊ฐ€ ์žˆ๊ณ , master์˜ ๋ช…๋ น์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” slave๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

master๊ฐ€ ์‹œ์ž‘ ์‹ ํ˜ธ์™€ ํ•จ๊ป˜ slave์˜ ์ฃผ์†Œ๋ฅผ ๋ณด๋‚ด๋ฉด ์ฃผ์†Œ์— ๋งž๋Š” slave๋งŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์žฅ์น˜๊ฐ€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

caution

SDA, SCL ์„ ์€ ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Pull-up์ €ํ•ญ์„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์†Œ ๋ฐ์ดํ„ฐ๋Š” slave ์ฃผ์†Œ 7 ๋น„ํŠธ์™€ read/write 1 ๋น„ํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.(10 ๋น„ํŠธ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.) R/W ๋น„ํŠธ๊ฐ€ 1 ์ด๋ฉด slave -> master, 0 ์ด๋ฉด master -> slave ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

Abbreviation

  • S: Start condition
  • Rs: Repeated start condition
  • R: Read bit (High level at SDA)
  • W: Wriet bit (Low level at SDA)
  • ACK: ACKnowledge bit (Low level at SDA)
  • NACK: Not ACKnowledge bit (High levle at SDA)
  • Data: 8-bit data byte
  • P: stoP condition
  • SLA: SLave Adress

Master ๋ชจ๋“œ

master -> slave

ํ†ต์‹  ์ˆœ์„œ๋Š” S -> SLA + W -> Data -> ... -> P ์ž…๋‹ˆ๋‹ค. ...์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

info

slave์— ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ๊ฐ’์„ ์“ฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ๋ฅผ SLRA๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ํ†ต์‹  ์ˆœ์„œ๋Š” S -> SLA + W -> SLRA -> Data -> P ์ž…๋‹ˆ๋‹ค. slave์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋Š” ์ฃผ์†Œ๋ฅผ ํ•˜๋‚˜์˜ Data๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์•„๋ž˜์—์„œ Data๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‹ ํ˜ธ๋Š” ์ „์†ก ์ค‘์ผ ๋•Œ TWCR ๋ ˆ์ง€์Šคํ„ฐ์˜ TWINT ๋น„ํŠธ๊ฐ€ 0 ์ด ๋˜๊ณ , ์ „์†ก์ด ์™„๋ฃŒ๋˜๋ฉด 1 ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ ํ˜ธ๋ฅผ ์ „์†กํ•  ๋•Œ ๋งˆ๋‹ค TWINT ๋น„ํŠธ๊ฐ€ 1 ์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • S
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์˜ TWINT, TWSTA, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • SLA + W
    • TWDR ๋ ˆ์ง€์Šคํ„ฐ์— slave์˜ ์ฃผ์†Œ 7 ๋น„ํŠธ์™€ ,R/W 0(write) ์„ ์”๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1101001 ์ด๋ผ๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” slave๊ฐ€ ์žˆ๋‹ค๋ฉด TWDR ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” 11010010์„ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์— TWINT, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Data(transmit)
    • TWDR ๋ ˆ์ง€์Šคํ„ฐ์— 8bit ๋ฐ์ดํ„ฐ๋ฅผ ์”๋‹ˆ๋‹ค.
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์— TWINT, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • P
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์— TWINT, TWSTO, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • STOP ์‹ ํ˜ธ๋Š” TWINT ๋น„ํŠธ๊ฐ€ 1์ธ์ง€ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

slave -> master

ํ†ต์‹  ์ˆœ์„œ๋Š” S -> SLA + R -> Data -> ... -> P ์ž…๋‹ˆ๋‹ค.

์„ผ์„œ๋ฅผ slave๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ผ์„œ์—์„œ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’ ์ค‘ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฝ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ผ์„œ๋งˆ๋‹ค ํ†ต์‹  ์ˆœ์„œ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

info

slave์—์„œ ์ฝ๊ณ ์‹ถ์€ ๊ฐ’์˜ ๋ ˆ์ง€์Šคํ„ฐ ์ฃผ์†Œ๋ฅผ SLRA๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์ „์— ๋จผ์ € ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ S -> SLA + W -> SLRA -> Rs -> SLA + R -> Data -> ... -> P ์ธ ํ†ต์‹  ์ˆœ์„œ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • SLA + R
    • TWDR ๋ ˆ์ง€์Šคํ„ฐ์— slave์˜ ์ฃผ์†Œ 7 ๋น„ํŠธ์™€ ,R/W 1(read) ์„ ์”๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 1101001 ์ด๋ผ๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š” slave๊ฐ€ ์žˆ๋‹ค๋ฉด TWDR ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” 11010011์„ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์— TWINT, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Data(recieve)
    • TWCR ๋ ˆ์ง€์Šคํ„ฐ์— TWINT, TWEA, TWEN ๋น„ํŠธ๋ฅผ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒฝ์šฐ๋Š” TWINT, TWEN ๋น„ํŠธ๋งŒ 1 ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • TWDR ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’์„ ์ฝ์Šต๋‹ˆ๋‹ค.

ํ†ต์‹  ์˜ค๋ฅ˜

ํ†ต์‹ ์„ ํ•  ๋•Œ, TWCR ๋ ˆ์ง€์Šคํ„ฐ์˜ TWINT ๋น„ํŠธ๊ฐ€ 1 ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ†ต์‹ ์ด ์‹คํŒจํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‹คํŒจ์˜ ์ด์œ ๋Š” TWSR ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๊ฐ’์— ๋”ฐ๋ฅธ ์‹คํŒจ ์‚ฌ์œ ๋Š” datasheet๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.) ์‹คํŒจํ•œ ๊ฒฝ์šฐ, ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ฌด์‹œํ•ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ TWCR๋ ˆ์ง€์Šคํ„ฐ์— 0 ์„ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Last updated on