ATmega128_I2C통신

JS·2023년 3월 3일
0

ATmega128

목록 보기
7/9

I2C의 정식명칭은 IIC이며, SCL과 SDA를 이용하여 통신한다.

  • 기준점(기준 시간, 기준 신호)을 가지고 통신하는 동기 통신이다.

  • SCL(Serial Clock) -> 기준신호

  • SDA(Serial Data)

  • 각 Device는 주소를 통해서 구분됨
  • Open Drain = Open Collector -> 내부에 저항이 없음 -> 외부저항이 필요함 -> 많은 Device를 사용하거나 MCU와 Device의 전압이 다를 때 사용한다.

    Clk가 Low일 때, Data를바꿔주며,Clk가 high 이면 Data가 1bit 전송됨
  1. SDA Data 1bit 전송
  2. SCL이 Low -> High -> Low로 바뀜
  3. Data 1bit 송수신 완료

  • SCL이 High이고, SDA가 Falling_Edge일때, Start
  • SCL이 High이고, SDA가 Rising_Edge일때, Stop

  • Strat신호 뒤에 바로 Address 신호가 따라오며, 뒤이어서 Read/write 신호가 들어온다.
  • ACK: 해당 Device에서 송수신이 성공적으로 이루어졌음을 알리는 역할 -> Master가 수신

-> 1byte는 Address + R/W이며, 1bit ACK까지 받으면 1byte 송수신 Format

  • Address: 디바이스 고유주소
  • R/W: 다음 Data의 Read 또는 Write인지를 알려줌


-> I2C 통신의 경우, 통신속도가 느리다는 단점이 있다
-> But, 빠른 Device가 아니라면 2개의 선으로 여러가지 Device를 control이 가능한 I2c통신의 효율이 더 좋다.

변수에 저장된 0x27는 00100101인데, Address값은 7자리 이므로 첫번째 값은 필요없는 값이다. 이때 R/W값이 필요하므로 shift연산을 필요없는 첫번째 자리의 숫자를 밀어내고 Read, Write bit를 넣어준다. 그냥 Shift연산만 해주면 R/W bit가 0이 되어 Write mode이고 여기서 0x01을 더해주면 Read Mode가 된다.

업로드중..

이 I2C 통신을 초음파센서 구동을 위해 사용할 것이다.

0개의 댓글