ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • I2C 통신
    카테고리 없음 2025. 6. 19. 18:41

    I2C통신은 SDA(데이터선), SCK(클럭선), VCC, GND를 사용한다.

    클럭을 기반으로 하는 통신은 SPI, I2C 등 있다.

    SPI 방식일 경우 CS선이 존재하지만, I2C 방식은 CS선이 따로 존재하지 않는다. 그래서 누굴 호출했는지 구분하기 위해 주소를 사용한다.

    1-Wire 방식도 주소를 사용했고, 거기선 주소를 ROM이라 칭하였다. I2C에선 Address라고 칭한다.

    항목  I2C  SPI
    데이터 선 1개 (SDA) 2개 (MOSI, MISO)
    통신 방식 반이중 (Half-Duplex) 전이중 (Full-Duplex)
    속도 낮음 높음
    회선 수 적음 (2개) 많음 (보통 4개 이상)
    복잡성 낮음 약간 복잡

    I2C 방식은 데이터 선이 한개여서 동시에 송수신이 안되는 반이중 방식이다.

    SPI는 MOSI, MISO, SCLK, CS선으로 총 4개의 선으로 구성되어 있다.

    또한 주소를 호명 하는 관계이기 때문에 Master와 Slave 관계를 형성할 수 밖에 없다.

     

    특징

    1. 8bit씩 주고 받음(7bit 주소공간) -> 2의 7승은 128이고, 최대 128개 연결 가능함.

    2. 7bit의 주소 공간 사용

    3. 400Khz의 전송 속도(Fast 모드)

    4. Sleep 모드일 때 주소 인식으로 일어남. -> 선으로 주소가 온다고 가정하면, 슬레이브는 구조상 내 주소네? 하고 내꺼만 일어나기는 힘듬. 선을 통해 주소가 들어오면, 모든 슬레이브는 일어나서 내 주소인지 확인하고, 아니라면 다시 자고 깨고를 반복하는 구조로 이해하면 됨.

    5. 동기 방식 (클럭으로 동작)

    6. 선이 두가닥 필요함

    7. 기본은 High

     

    SDA - 마스터와 연결돼있다.

    먼저 SDA와 SCL선은 High인 상태로 시작한다. 데이터선은 데이터를 보내기위해 Low로 일부러 떨어트리고, 클럭은 데이터를 읽을 준비를 한다. SDA는 1이라는 데이터를 보내기 위해 High상태로 선이 올라가고, SCL은 클럭을 읽기 위해 Low -> High로 한번 떨구고 올라온다.

    이때 올라와서 데이터를 읽게 된다. 이걸 총 8번 반복하고, SCL이 계속 High상태를 유지하면, SDA도 종료 신호로로 이해한다.

    이제 데이터를 보낼때는 7bit의 데이터와 1bit는 R/W인지를 구분하기 위해 사용한다.

    Write 상태를 보낼거면 데이터는 Low상태, Read 상태를 보낼거면 데이터는 High상태가 된다.

    이후 ACK Bit의 상태를 Low로 슬레이브가 보내는데 이거는 데이터를 잘 받았다는 의미이다.

     

Designed by Tistory.