I2C-bus specification Rev.5

 

1. Abstract

 I2C Bus 는 동일한 회로 기판 상에 상주하는 컴포넌트 사이의 통신을 쉽게 할 수 있도록 80년대 초반 

 Philips Semiconductors (현재 NXP) 에 의해 디자인 되었다. 이 bus 는 Inter-IC 나 I2C-bus 라고 불린다. 


 I2C-bus 는 여러가지 control architecture 로 사용되어진다.

  System Management Bus (SMBus)

  - Power Management Bus (PMBus)

  - Intelligent Platform Management Interface (IPMI)

  - Display Data Channel (DDC)

  - Advanced Telecom Computing Architecture (ATCA)

2. I2C-bus 특징

 MCU, LCD, LED Driver, EEPROM, A/D, D/A Converter, Remote I/O Port, RAM, real-time clock, 

 radio and video systems 의 Digital Turning, signal processing, temperature sensors, smart cards 등

 많은 곳에 포함되어 있다. 회로 단순화 및 효율적인 제어를 위해 개발 되었다. 


 a. 2개의 Bus Line 만 필요하다. (SDA, SCL)

 b. Bus 에 연결된 장치들은 마스터/슬레이브 관계로 되어 있고 고유주소를 가진다.

 c. 두개의 마스터가 동시에 데이터를 전송할 경우 데이터 손실을 방지하기 위하여 충돌을 검출하고 

  중재하는 멀티 마스터 방식이다.

 d. 통신속도는 아래와 같다.

  Bidirectional bus :

  - Standard mode : 100Kbit/s

  - Fast mode : 400Kbit/s

  - Fast mode + : 1Mbit/s

  - High Speed mode : 3.4Mbit/s

  Unidirectional bus :

  - Ultra Fast mode : 5Mbit/s

 e. Bus Line 에 Spike (50ns) 는 Input Filter 에 의해 걸러진다. 

 f. 동일한 버스에 접속 될 수 있는 IC 의 개수는 Bus 의 최대 Capacitance (400pF)에 의해 제한된다.

 

I2C Bus Application 예제


 

 

3. The I2C-bus protocol

3.1. SDA and SCL logic levels

 다양한 Device 들이 I2C Bus 에 연결 되기 때문에 SDA 와 SCL 의 Logic Level 은 고정되어 있지 

 않다. SDA 와 SCL 의 Logic Level 은 Vdd 의 70% 이상일때 High, Vdd 의 30% 이하일때 Low 로 

 결정된다.

3.2. Data 의 유효성

 a. SDA Line 의 Data 는 SCL Line 이 High 인 동안 안정적이어야 한다.

 b. SCL Line 의 Clock 이 Low 일때 Data Line 은 High/Low 로 상태를 변경 할 수 있다.



3.3. START and STOP conditions

 a. 모든 처리는 START(S) 로 시작하고 STOP(P) 으로 종료된다.

 b. START 조건의 정의는 SCL Line 이 High 일때 SDA Line 이 Low 상태가 될때 이다.

 c. STOP 조건의 정의는 SCL Line 이 High 일때 SDA Line 이 High 상태가 될때 이다.

 


 d. START 및 STOP 조건은 항상 마스터에 의해 생성된다. 

 e. Bus 는 START 조건 후에 Busy 상태로 간주 된다.

 f. Bus 는 STOP 조건 후에 일정 시간(Buf Time : 0.5us ~ 4.7us) 이 지나면 Free 상태로 간주된다. 

 g. Repeat START 조건 일 경우 Bus 는 Busy 상태로 유지 된다.

 h. START 와 Repeat START 의 조건은 기능적으로 동일하다.

 

3.4. Byte format

 a. SDA Line 의 모든 Byte 의 길이는 8bit 여야 한다. 

 b. 전송되는 byte 의 수는 제한이 없다. 

 c. 각 byte 는 ACK bit 가 와야 한다. 

 d. Data 는 최상위 비트 (MSB) 부터 전송된다. 

 e. Slave 에서 다른 기능을 수행하기 위해 완전한 Byte 를 수신할 수 없는 경우 Master 는 강제로

  SCL Line 을 Low 상태로 유지 할 수 있다.

 f. Slave 에서 Data 를 받을 준비가 되었을 때 CLK Line 을 풀고 Data 전송이 계속 된다.



3.5. Acknowledge (ACK) and Not Acknowledge (NACK)

 a. Acknowledge 는 모든 Byte 수신 후 일어난다.

 b. Acknowledge bit 는 수신기에서 성공적으로 Byte 를 수신 했고 다른 Byte 를 수신 할 수 있다는 

  신호 이다.

 c. Master 는 9번째 bit 를 포함하여 모든 Clock Pulse 를 생성한다.

 d. Acknowledge 는 다음과 같이 정의 되어 있다.

  - 수신기의 Acknowledge Pulse 는 SCK Pulse 가 High 인 동안 SDA Line 을 해제하고 SDA 

   Line 을 Low 로 당길 수 있도록 허락한다.

  - SDA 가 9번째 Clock Pulse 동안 High 상태로 유지될때 Not Acknowledge 신호로 정의 된다.

 e. NACK 신호가 생성되는 5가지 조건 :

  1. Bus 에 Address 가 전송되었을 때 응답하는 수신기가 없을 때

  2. 수신기가 실시간으로 어떤 기능을 실행중으로 마스터와의 통신을 시작할 수 없을때

  3. 전송하는 동안 수신기가 알수 없는 Data 나 Command 를 전송 받았을때

  4. 전송하는 동안 수신기가 Data 를 수신할수 없을때

  5. 수신기에서 송신기로 전송이 끝났을 때


3.6. Arbitration (중재)
 a. Arbitration 은 하나 이상의 마스터가 시스템에 존재하는 경우 필수적인 Protocol 이다.
 b. Slave 는 Arbitration 절차에 관여 하지 않는다.
 c. Master 는 Bus 가 Free 상태인 경우에만 전송을 시작할 수 있다.
 d. 2개의 Master 는 Bus 에서 유효한 START 조건을 생성 할 수 있다.
 e. 전송을 완료할 Master 를 결정 하는 것이 Arbitration 이다.
 f. Arbitration 은 bit 별로 진행된다.
 g. SCL 이 High 인 동안 bit 들이 SDA 와 일치 하는지 Master 에서 확인 한다.
 h. 이 과정에서는 여러개의 bit 들을 확인한다.
 i. 두개의 Master 가 동일한 bit 를 보내는 동안은 오류 없이 처리가 된다.
 j. 아래 그림과 같이 첫번째 Master 는 High 를 보내려고 하지만 SDA 가 Low 인 것을 감지하여 
  Arbitration 에서 진것을 알고 SDA 출력 드라이버를 해제한다.
  (Wired-AND 이므로 Low bit 를 가진 Device 가 Arbitration 에서 이긴다.)
 k. 두번째 Master 는 전송을 완료하기 위해 계속 한다.
 l. Arbitration 에서 진 첫번째 Master 는 두번째 Bus Line 에서 STOP 조건이 발생하면 재전송을 
  시도한다.



3.7. Clock stretching
 a. Clock stretching 은 SCL Line 을 Low 상태로 유지하여 전송을 일시 중지한다.
 b. Line 이 High 가 될 때 까지 전송을 계속 할수 없다.
 c. Clock stretching 은 선택사항이며 대부분의 Slave 장치는 SCL Driver 를 포함하고 있지 않아서 
  Clock stretching 기능을 사용할 수 없는 경우가 많다.
 d. Data 를 보내는 장치는 빠른 속도로 보낼수 있지만 송신 하는 장치는 Data 를 받아서 저장하거나 
  또 다른 Data 를 보낼 준비를 하는 시간을 필요로 한다.
 e. 다음 Byte 전송을 위한 준비가 완료 될때 까지 Slave 에서는 강제로 SCL Line 을 Low 상태로 
  유지 할 수 있다.
 f. Clock stretching 을 구현 할 때 장애 요소 :
  - SCL Line 에 전기적인 오류가 발생하면 Master 는 교착상태로 들어 갈 수 있다. 
   (Bus 가 잠기면 통신이 되지 않기 때문에 Timeout Counter 로 초기화를 해줘야 한다.)
  - Clock stretching 이 자주 발생 될 경우 Bus 속도는 지연시간 만큼 느려지고 다른 Master 들이
   Bus 를 사용할 수 없다.
 g. 2개의 Master 가 존재 하는 경우에는 별로 도움이 되지 않지만 3개 이상 존재하는 경우에는 
  중요한 Data 를 전송하는 상황에서 다른 Master 에서 방해 할 수 없기 때문에 매우 쓸모 있는 
  기능이다. 
3.8. The slave address and R/W bit
 a. 데이터 전송은 아래 그림과 같은 형식을 따른다.
 

 b. START 상태 후에, 슬레이브 주소가 전송된다. 
 c. Address bit 인 7번째 비트 다음 1bit 에 데이터 방향 비트 (R/W) 를 나타낸다.
  - '0' WRITE, '1' READ  
 d. 데이터 전송은 항상 마스터에서 생성 된 STOP 신호에 의해 종료된다. 
 e. Master 가 다른 Slave 와 계속 통신하고자하는 경우, STOP 조건을 발생시키지 않고 Repeat 
  START 조건을 생성한다. 

3.9. The slave address and R/W bit

 f. Master - Transmitter


 g. Master - Read

 h. Combined format

 

3.10. 10-bit addressing

 a. 10-bit address 는 가능한 주소의 수를 확장한다.

 b. 10-bit address 를 가진 장치는 동일한 I2C Bus 에 접속 될 수 있다.

 c. 10-bit address 는 많이 사용되지 않는다.

 d. 10-bit address START 조건 또는 반복 Repeat START 조건 다음의 처음 두 바이트로 부터 형성

  된다.

 f. 1st byte 의 8번째 bit 는 R/W bit 이다 .

 g. 1111 1XX 는 미래의 I2C 버스 개선을 위해 예약되어 있다.

 h. Master - Transmitter

 i. Master - Read

 j. 10-bit address Slave Device 는 7-bit address Slave Device 와 동일한 방식으로 'general 

  call'에 응답한다. 

 

3.11. Reserved addresses


 

 

3.12. General call address

 a. General call address 는 I2C 버스에 연결된 모든 장치를 동시에 호출 한다. 

 b. Device 는 General call 에 제공된 데이터가 필요하지 않는 경우에 응답을 하지 않음으로써 이 

  주소를 무시할 수 있다.

 c. Device 는 General call 의 데이터에 응답하면 Slave 수신기로 동작한다. 

 d. Master 는 하나 이상의 장치가 응답하면 몇개의 장치가 응답했는지 알 수 없다. 

 e. General call 의 의미는 다음과 같다.


  - Sencond byte 의 'B' bit 가 0 일때 :

   * 0000 0110 (06h): Reset / 프로그램 된 영역에서 Reset 되고 재설정 된다.

   * 0000 0100 (04h): 프로그램 된 영역에서 Reset 되고 재설정 된다.

  - Sencond byte 의 'B' bit 가 1 일때 :

   * xxxx xxx1 : hardware general call, Hardware Master 는 메시지가 전송되어질 Device 를 

    사전에 알 수 없기 때문에 자신의 주소를 포함하여 호출을 하면 해당 Device 에서 응답 한다.


4. Other uses of the I2C-bus communications protocol

4.1. CBUS compatibility

 a. CBUS 는 Standard-mode I2C 버스 에 연결될 수 있다.

 b. DLEN 이라는 세 번째 버스 라인이 연결되어 있어야 하고, ACK bit 를 생략 한다.

 c. CBUS 는 전송방식이 다르므로 I2C 버스 장치는 CBUS 메시지에 응답 하지 않는다.

 d. CBUS 는 어드레스 전송 후 DLEN 라인은 활성화 되고 CBUS 포맷으로 전송 한다.

 e. 전송은 모든 장치 에서 인식 할 수있는 STOP 조건 에 의해 종료됩니다.

 

4.2. SMBus - System Management Bus

 a. SMBus 는 Intel 에서 정의한 I2C 기반의 프로토콜이다.

 b. ‘hot-plugged’ 방식으로 시스템을 재시작 하지않고 구성이 가능하다.

 c. Device 는 자동으로 인식 되고 고유 한 주소가 할당된다. (plug-and-play)

 d. 제조업체 정보를 제공하고 모델/부품 번호를 알려주며 오류보고 및 제어를 한다.

 e. PC의 전력 관리칩, 온도센서, 스위치등에 많이 사용된다.

 

4.3. PMBus - Power Management Bus

 a. PMBus 는 전원 변환기의 보다 지능적인 제어를 제공 한다. 

 b. SMBus 표준을 토대로 256 개의 명령 어드레스가 정의 되어 있고 전원 변환기의 제어, 상태 

  모니터링, 결함관리, 데이터 저장등을 할 수 있다.

 

5. Electrical connections of I2C-bus devices to the bus lines

5.1. Pull-up resistor sizing

 a. Bus Capacitance 값에 따라 Pull up 저항 값이 달라진다.








5.2. Series protection resistors

 a. SDA, SCL Line 에 Series Resistor 를 달면 High-Voltage Spike 보호가 된다.





5.3. Wiring pattern of the bus lines

 a. Crosstalk 간섭을 최소화 하기 위하여 Bus Line 의 길이는 최대한 짧게 하는것이 좋다.

 b. PCB 나 리본케이블에서 Bus Line 길이가 10cm 가 넘고 VDD, VSS Line 을 포함하는 경우 

  아래와 같이 구성하는 것이 좋다.

 

 c. VSS Line 만 포함하는 경우
---------------------------------------------------------------------------------------------------

출처 : http://cafe.naver.com/micropic

+ Recent posts