'I2C'에 해당되는 글 2건

  1. 2012.01.10 i2c 정리 4
  2. 2011.11.28 I2C 2
embeded/i2c2012. 1. 10. 23:32
i2c는 1선은 데이터 1선은 클럭을 보내는 구조인데
문서마다 조금씩 다르게 나오고 칩마다 설명이 달라서 모호한 감이 없진 않지만..

아무튼 용어를 정의하자면

i2c는 Master와 Slave로 구성되며

 - Master는 SCL을 통해 클럭을 생성하며, 데이터를 요청하는 주체가 되는 녀석이고
 - Slave는 Master의 요청에 따라 데이터를 받거나 요청시 보내주는 녀석이다.

2개의 선로를 통해 통신을 하며

 - SDA는 데이터를 주고 받으며(즉, Master 기준 Input / Output 전환이 필요하다)
 - SCL은 데이터 구분을 위한 클럭을 Master에 의해서 유지하게 된다.

통신을 주고 받기 위해 Slave에는 Address가 부여된다.

 - 7bit의 경우 상위 4bit의 host Address 하위 3bit의 동일 장치에 대한 구분용 device address가 존재한다.
 - 10bit도 존재한다.(자세한 내용은 http://www.i2c-bus.org/addressing/10-bit-addressing/ 참조)

Bus Empty / Start(start&start continue) / 1bit (data&ACK) / STOP 의 상황이 있다.

 - Bus Empty 는 SCL 과 SDA가 모두 High로 아무도 버스를 사용하지 않는 상황
 - Start는 SCL이 High인 상황에서 SDA가 High 에서 Low로 떨어지는 상황
 - Stop은 SCL이 High인 상황에서 SDA가 Low 에서 High로 올라가는 상황
 - 1bit는 SCL을 SDA가 감싸면서 Low -> High-> Low로 변화하는 상황이다.

통신은 다음의 순서를 따른다.
 - Bus Empty 인 것을 확인하고(둘다 high 임을 확인)
 - Start로 SDA와 SCL을 low로 설정하고
 - 7bit Address를 보내고 1bit의 Write/Read를 보내고(대개는 합쳐서 1byte로 처리함)
 - ACK를 수신하기 위해 SDA의 방향을 Master기준 input으로 변경하고 SCL만 출력한다. (클럭만 내고 처리안하기도 함)
 - 실어보낼 데이터를 전송하고(1byte)
 - ACK를 수신하기 위해 SDA의 방향을 Master기준 input으로 변경하고 SCL만 출력한다. (클럭만 내고 처리안하기도 함) 
 - 더이상 전송할 데이터가 없으면 SDA와 SCL을 high로 설정해 Stop임을 알리고 버스를 놓는다.

i2c 장치에 따라서 다음과 같이 전송을 하게 된다.
(장치내부의 레지스터 주소로 앞의 DATA를 1바이트나 2바이트로 사용하기도 한다.)
 - S / ADDR / ACK / DATA / P
 - S / ADDR / ACK / DATA / ACK / DATA / ACK / P
 - S / ADDR / ACK / DATA / ACK / DATA / ACK / Sr / DATA / ACK / DATA / ACK / P


 

 

 

음.. 이녀석은 STOP이 잘못그려진듯? SCL이 LOW에서 High 변화되어 한다.
[링크 : http://achiven.tistory.com/entry/I2c란]

2011/11/28 - [하드웨어] - I2C

'embeded > i2c' 카테고리의 다른 글

i2c mode - tm4c  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
I2C  (2) 2011.11.28
SMBus 넌 머냐? - System Management Bus  (2) 2009.01.14
Posted by 구차니
embeded/i2c2011. 11. 28. 17:54

I2C

SDA의 폭이 SCL 보다 크다는 점은
아마도.. SCL의 Rising edge에 트리거 되서 SDA의 값을 읽기 때문이 아닐까? 라는 망상중

Timing sheet


아무튼, ACK는 slave가 쓰는건데
그렇다면.. Master에서 ACK에 대한 SCL은 생성하지 않아도 되는걸려나?
흐음.. Slave->Master를 보면 ACK가  색상이 다르네 -_- 어렵다 ㅠ.ㅠ

Master -> Slave (Write)


Slave -> Master (Read)


[링크 : http://www.best-microcontroller-projects.com/i2c-tutorial.html]

[링크 : http://en.wikipedia.org/wiki/I2C]
[링크 : http://achiven.tistory.com/entry/I2c란]
[링크 : http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html]

[링크: http://i2c2p.twibright.com/spec/i2c.pdf]

'embeded > i2c' 카테고리의 다른 글

i2c mode - tm4c  (0) 2018.04.26
i2c BUS에 pull-up, pull-down  (0) 2018.04.26
i2c bank switching  (0) 2015.09.02
i2c 정리  (4) 2012.01.10
SMBus 넌 머냐? - System Management Bus  (2) 2009.01.14
Posted by 구차니