20140605 - TWI(2-Wire Serial Interface)

ATMega256 2014. 6. 5. 14:42 Posted by Owen.K

2-Wire Serial Interface

 

 

  TWI(Two-Wire Serial Interface) 직렬통신 포트는 원래 필립스사에서 제안한 근거리용 표준 직렬통신 방식인 I^2C 버스로 통신하는 방식인데, 둘 다 같은 방식이다. 2선식 직렬통신 방식으로 항상 마스터와 슬레이브 사이에서 직렬로 데이터를 송수신할 수 있다. TWI 직렬통신 포트는 여러 가지의 제어 레지스터를 통하여 유연하고 강력한 I^2C 통신을 수행할 수 있으며, 마스터와 슬레이브로 임의 사용될 수 있다. 7비트의 어드레스 지정과 100KHz, 400KHz의 통신속도를 지원하며, 멀티 마스터 조정 기능을 가지고 있다. 또한 MCU가 슬립 모드에 있을 때 슬레이브로서 어드레스 지정이 되면 슬립 모드에서 벗어나는 wake-up 기능을 가지고 있다. 

 

Byte Oriented 2-Wire Serial Interface  ->  바이트를 지향하는 2선 TW I

스트리밍 방식 - 정해지지 않은(명확하지 않은 크기의) 데이터를 그때 그때  보낼 때
                   ↕
구조체 방식(블럭 방식) - 정해진 크기의 데이터를 보낼 때 



SDA(Serial DAta), SCL(Serial CLock) 2개의 선으로 양방향 직렬통신을 수행

(2.3V~5.5V의 전원 전압을 사용)

반드시 마스터와 슬레이브 사이에 직렬 동기식 양방향 데이터 통신을 수행 

마스터가 데이터를 송신 또는 수신을 하기 위하여 데이터 SDA는 양방향 신호

마스터가 데이터 송신 또는 수신하더라도 클록 신호 SCL은 항상 마스터가 발생

100Kbps, 400Kbps, 3.4Mbps의 3가지 전송속도를 지원

마스터가 슬레이브에게 7비트 또는 10비트 어드레스로 지정 가능

마스터가 전체호출 기능으로 전체 슬레이브를 동시에 지정하는 것이 가능 

멀티마스터 조정 기능 지원 


full up 저항 -> 명확한 High/Low를 정하기 위해서....

Device 여러 개를 사용할 수 있다. ID 고유번호로 식별할 수 있다.


SCL 주파수를 구하는 공식



 시리얼 통신에서 2선 통신 중에



  


TWI와 UART 방식이 있는데 차이는 UART 두개의 선으로 따로따로 송신과 수신을 하는 반면 TWI는 SDA하나로 송수신을 한다.


I²C(Inter-Intergrated Circuit)통신

 

1980년대 초에 필립스사에서 제안한 IC소자들을 연결하기 위한 던거리용 2선식 직렬통신 버스 

특징

-SDA,SCL 2개의 선으로 양방향 직렬통신을 수행

-반드시 마스터와 슬레이브 사이에 직렬 동기식 양방향 데이터 통신을 수행

-마스터가 데이터를 송신 또는 수신을 하기 위하여 데이터 SDA는 양방향 신호

-마스터가 데이터를 송신 또는 수신하더라도 클록 신호 SCL은 항상 마스터가 발생

-100Kbps,400Kbps,3.4Mbps의 3가지 전송속도 지원

-마스터가 슬레이브에게 7비트 또는 10비트 어드레스로 지정(어드레스=장치번호 or 장치ID)

-마스터가 전체호출 기능으로 전체 슬레이브를 동시에 지정하는 것이 가능

-멀티마스터 조정 기능 지원


전체 시스템의 구성을 보게 되면 장치는 여러개 연결이 가능하며 장치의 식별은 ID(고유번호)를 통하여 한다.

풀업저항은 연결함으로서 명확한 신호(H,L)를 보장한다.

ATmaga 2560 에서는 7비트의 어드레스를 지정하는데 이것은 장치의 ID를 의미 하고 0~127까지 지정할 수 있으며 총 128개 까지 장치연결이 가능하다.

전송속도는 400Kbps를 사용하여야 한다.

전송을 시작하고 클록을 발생하며 전송을 종료하는 모든 일을 주관하는 측의 장치를 마스터(master)
마스터에 의하여 주소가 지정되어 동작하는 측의 장치를 슬레이브(slave) 라고 한다.

원래는 시작조건과 정지 조건을 LCD처럼 상황에 따라 설정을 해 주어야 하나 있는 것들은 구지 설정할 필요가 없다.


데이터 송신 및 수신 포맷 

데이터 송신

①마스터가 슬레이브에게 데이터를 송신할 때는 먼저 마스터가 7비트의 슬레이브 어드레스를 보낸다.

②송신을 의미하는 L상태의 1비트를 보낸다.

③지정된 어드레스를 가지고 있는 슬레이브는 L상태의 1비트 확인신호로 응답한다.

④마스터는 n바이트의 데이터를 연속으로 송신하며 각 바이트를 송신할 때마다 해당 슬레이브로부터 확인 비트로 응답을 받는다.

 

데이터 수신

①마스터가 슬레이브로부터 데이터를 수신할 때는 먼저 마스터가 7비트의 슬레이브 어드레스를 보낸다.

②수신을 의미하는 H상태의 1비트를 보낸다.

③지정된 에드레스를 가지고 있는 슬레이브는 L상태의 1비트 확인 신호로 응답한다.

④마스터는 n바이트의 데이터를 연속으로 수신하며 각 바이트를 수신할 때마다 해당 슬레이브에게 확인 비트로 응답한다.




TWI 블럭도


빨간표시로 된 네모가 레지스터로 총 5개가 있다.

레지스터 중 TWBR(TWI Bit Rate Register) 을 보게 되면 TWI 비트속도 레지스터로 속도주파수를 계산하는 식이 있다.

 

TWPS를 1로 가정하고 계산해 보면 TWBR이 3이 나온다.

즉, 400Kbps 속도로 하기 위해서는 TWPS 1 이면 TWBR을 3으로 해주어야 한다.

 

회로 연결

 

 

DK128에서 J18번의 1번에는 ATmega 2560  43번에  2번은  44번에 연결해 준다.