티스토리 뷰

I2C 는 통신 프로토콜이라는 점에서 SPI와 유사하지만 마이크로 컨트롤러 핀 및 주변 장치와의 연결 방식이 약간 다르다. I2C가 칩에 연결되는 방식과 일반적으로 GPIO 또는 MPIO 핀과 상호 작용한 방식은 아래와 같다.

 

  1. I2C Dedicated Pins
    1. Microcontroller I2C Peripheral
      : 대부분의 마이크로 컨트롤러에는 I2C 통신에 특별히 최적화된 전용 핀이 있는 I2C peripheral module 이 있다. 이러한 모듈은 일반적으로 I2C 프로토콜에 하드웨어적으로 최적화되어 있으며 자동 타이밍 및 동기화 기능을 제공합니다.
    2. I2C Pins
      1. SDA (Serial Data Line)
        : 장치 간에 데이터를 전달한다.
      2. SCL (Serial Clock Line)
        : 통신을 동기화하기 위해 마스터 장치에서 생성된 클록 신호를 전달한다.
    3. Two-Wire Bus
      : 여러 개의 라인 (MOSI, MISO, SCLK, CS) 이 필요한 SPI와 달리 I2C는 two-wire system에서 작동하므로 더 간단하고 필요한 연결 횟수를 줄일 수 있다.
  2. Alternative Function Pins (MPIO)
    1. SPI와 마찬가지로 일부 마이크로컨트롤러는 특정 핀이 여러 기능을 수행할 수 있도록 허용한다. 이러한 Multi-Purpose Input/Output (MPIO) 또는 Alternative Function (AF) 핀은 I2C 핀으로 작동하도록 구성할 수 있다.
    2. 마이크로컨트롤러의 설정에서 SDA 및 SCL에 대한 특정 MPIO 핀을 구성하면 원래 GPIO 핀으로 지정되었더라도 I2C에 사용할 수 있다.
  3. Why Not Use GPIO Directly?
    1. Bit-Banging for I2C
      : 일반 GPIO 핀 ("bit-banging" 이라고 하는 프로세스) 를 사용해 I2C를 구현할 수도 있지만, 전용 I2C peripheral 을 사용하는 것보다 효율성이 떨어지고 타이밍 오류가 발생하기 쉽다.
    2. Precise Timing and Synchronization
      : I2C는 시작/정지 조건, 비트 확인, 클럭 스트레칭 (슬레이브 디바이스가 클럭 라인을 low로 유지하여 시간이 더 필요하다는 신호를 보내는 것) 에 대한 정확한 타이밍을 필요로 한다. 전용 I2C 하드웨어는 이러한 요구 사항을 정확하게 처리한다.
    3. Hardware I2C Module
      : 전용 I2C peripheral은 특히 고속 또는 다중 장치 설정에서 GPIO만으로는 복제하기 어려운 시작/정지 신호, 승인 비트 및 데이터 동기화를 처리한다.
  4. Physical Connection for I2C
    1. Wiring
      : SDA 및 SCL 라인은 모두 버스 상의 모든 장치 (마스터 및 슬레이브)에 병렬로 연결된다.
    2. Pull-Up Resistors
      : I2C 라인은 일반적으로 오픈 드레인/오픈 콜렉터 이므로 올바르게 작동하려면 풀업 저항이 필요하다. 이러한 저항기는 디바이스가 적극적으로 라인을 low로 끌어내리지 않을 때 라인을 high logic level로 유지한다.
      1. 풀업 저항기는 전원 공급 장치(예: 3.3V 또는 5V)에 연결되며 I2C high/low 신호를 생성하는 데 필수적이다.
    3. Example Setup
      : 마이크로컨트롤러를 마스터로 하고 여러 peripherals를 슬레이브로 사용하는 일반적인 I2C 연결의 경우 아래와 같다.
      1. Microcontroller | Peripheral Devices
        1. SDA ↔ SDA (모든 장치에 라인 공유)
        2. SCL ↔ SCL (모든 장치에 라인 공유)
      2. I2C 버스의 각 장치에는 고유한 주소가 있으므로 마스터는 I2C 프로토콜에서 장치의 주소를 지정해 각 장치와 개별적으로 통신할 수 있다.
    4. I2C 버스의 각 장치에는 고유한 주소가 있으므로 마스터는 I2C 프로토콜에서 장치의 주소를 지정해 각 장치와 개별적으로 통신할 수 있다.
  5. Configuring MPIO Pins for I2C
    :I2C용 MPIO 핀을 사용하는 경우 마이크로컨트롤러의 구성 레지스터가 해당 핀의 I2C 기능을 활성화하도록 설정된다.
    // Configure PB6 as I2C SCL, PB7 as I2C SDA
    configure_pin_alternate_function(PB6, I2C_SCL);
    configure_pin_alternate_function(PB7, I2C_SDA);
  6. Comparison to GPIO Use
    1. 기술적으로 bit-banging을 통한 I2C 통신에 GPIO 핀을 사용할 수 있지만, 안정성과 속도를 위해서는 전용 I2C 핀 또는 I2C 용으로 구성된 MPIO 핀을 사용하는 것이 좋다.
    2. 전용 I2C vs. GPIO
      : 마이크로 컨트롤러의 전용 I2C peripheral은 타이밍, 시작/정지 조건, 승인 등의 프로토콜 세부 사항을 처리한다. 따라서 특히 장치 수와 속도가 증가함에 따라 소프트웨어로 구현된 I2C에 GPIO를 사용하는 것보다 더 강력하고 안정적인 통신이 가능하다.
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형