공부/AVR 2012. 11. 9. 16:59

 

9. TWI (I2C)

 

9.1 특징 및 기능

 

ATmega128은 4가지의 모드로 구분 됩니다. 마스터 송신 모드(MT), 마스터 수신(MR), 슬레이브 송신(ST), 슬레이브 수신(SR) 이며 각각의 모드에 따라 그 기능이 다릅니다. 특징은 아래와 같습니다.

 

개의 선 (SDA, SCL) 으로 양방향 시리얼 통신을 합니다.

마스터와 슬레이브 동작을 할 수 있습니다.

송신기와 수신기로 동작할 수 있습니다.

7 비트 주소로 최대 128 개의 다른 슬레이브 주소를 만들 수 있습니다.

멀티 마스터 조정(Arbitration) 기능이 있습니다.

최대 400 KHz 데이터 전달 속도를 지원합니다.

SCL 은 클럭 신호로 단 방향으로 항상 마스터가 발생합니다.

SDA 는 양방향으로 데이터를 송/수신 하는데 사용합니다.

 

하드웨어적으로 연결시 주의 해야될 사항이 있습니다. SCL 과 SDA 단자는 오픈 콜렉터 또는 오픈 드레인 방식으로 되어 있어 Wired-AND 기능 지원합니다. 이로 인해 이 단자는 외부에 풀업 저항을 꼭 연결해 주어야 합니다. 용량은 때에 따라 다르나 4.7K ~ 10K 가 많이 사용 됩니다.

 

TWI 버스 에서 데이터 비트는 클럭(SCL) 신호에 동기 되어 전송됩니다. 클럭 신호가 High일 경우 유효한 DATA상태 이어야 하며, LOW 상태에서 DATA값을 변경해야 합니다. 단 예외적으로 START 와 STOP 상태는 클럭이 high 상태에서 변경되어 알려주도록 되어 있습니다. .

 

 

데이터 전달을 시작하고 끝내는 것을 구분하기 위해 START, STOP 신호로 확인을 합니다. START 와 STOP 신호 동안은 버스는 비지(busy) 상태에 있게 되고, 다른 마스터는 버스의 제어권을 얻을 수 없습니다.

예외적으로 디바이스에 따라 START 와 STOP 사이에 새로운 START 가 발생할 수 있습니다. 이것을 REPEATED START 라 하고 마스터가 버스의 제어권을 잃지 않고 새로운 데이터 전달을 초기화할 때 사용됩니다. REPEATED START 는 START 와 동일한 역할을 합니다.

 

 

TWI 버스상에 전달되는 주소 패킷은 9 비트로 구성됩니다. 7 비트 주소와 1 비트 READ/WRITE 제어 비트 그리고 1 비트의 확인 신호(Acknowledge) 비트로 구성 되어 집니다.

READ/WRITE 비트는 1 이면 READ 이며, 0 이면 WRITE 동작이 다음에 수행됩니다. 이를 받은 슬레이브 디바이스는 9 번째 클럭에서 SDA 를 LOW로 컨트롤해서 받았다는 확인 신호(ACK) 를 보내야 합니다. 하이(HIGH) 상태로 되어 있을 경우 마스터는 NACK로 확인하고 STOP 신호를 보내거나 REPEATED START 신호를 보내서 새로운 데이터 전달을 시작합니다. (슬레이브 주소와 READ 또는 WRITE 신호를 SLA+R 또는 SLA+W 라고 합니다.)

 

TWI 버스상에 전달되는 데이터 패킷은 9 비트로 구성됩니다. 8 비트의 데이터와 1 비트의 확인 신호(Acknowledge)로 구분되어 집니다. 데이터 MSB부터 전달됩니다.

 

 

TWI 신호 전달은 기본적으로 START 와 SLA+R/W 와 한 개 이상의 데이터 패킷 마지막에 STOP 신호로 구성됩니다.

 

 

1) 레지스터

 

- TWBR (TWI Bit Rate Register)

 

TWBR 은 비트 레이트 발생기의 나눗셈 비율을 결정합니다. 전송 속도를 조절 합니다.

 

- TWCR (TWI Control Register)

 

 

bit 7, TWINT (TWI Interrupt Flag) : TWI 의 현재 작업이 끝나고, 응용 프로그램의 응답을 기다릴 때 셋됩니다. 이 비트가 셋 된 동안은 SCL 은 로(LOW) 상태로 유지됩니다. 이 비트에 1 을 써서 소프트웨어적으로 클리어 시켜주어야 합니다. 인터럽트 루틴이 실행되어도 클리어 되지 않습니다.

bit 6, TWEA (TWI Enable Acknoledge bit) : TWEA 비트는 확인 신호(Acknoledge) 펄스를 발생시키는 것을 제어합니다. TWEA 비트에 1 을 쓰면 아래 조건을 만났을 때 ACK 신호를 발생합니다.

1. 디바이스의 슬레이브 주소를 수신했을 때

2. TWGCE 비트가 1 이고 general call 을 수신했을 때

3. 마스터 수신 또는 슬레이브 수신 상태에서 데이터 바이트를 수신했을 때

bit 5, TWSTA (TWI START Condition bit) : 2 선 시리얼 버스(Two-Wire Serial Bus) 상에서 마스터가 되고자 할 때 TWSTA 비트에 1 을 씁니다. TWI 하드웨어는 버스가 활용할 수 있는 상태인지를 체크하고나서 START 신호를 발생합니다. TWSTA 비트는 START 비트가 발생한 후에 소프트웨어적으로 클리어시켜 주어야 합니다.

bit 4, TWSTO (TWI STOP Condition bit) : 마스터 모드에서 2 선 시리얼 버스(Two-Wire Serial Bus) 상에서 STOP 신호를 발생시키기 위하여 1 을 씁니다. TWSTO 비트는 자동으로 클리어됩니다.

bit 3, TWWC (TWI Write Collistion Flag): TWINT 비트가 로(LOW) 인 상태에서 TWI 데이터 레지스터(TWDR) 에 쓰려고 할 때 TWWC 플래그가 1 이 됩니다. 이 플래그는 TWINT 플래그가 1 인 상태에서 TWDR 레지스터에 쓰면 클리어 됩니다.

bit 2, TWEN (TWI Enable bit) : TWEN 비트에 1 을 쓰면 TWI 작동이 가능하게 됩니다. TWEN 비트에 0 을 쓰면 TWI 작동은 불가능으로 됩니다.

bit 0 , TWIE (TWI Interrupt Enable bit) : 이 비트가 1 이고 SREG 레지스터의 I 비트가 1 로 셋되어 있으면 TWINT 플래그가 1 이 동안 TWI 인터럽트 요구가 활성화됩니다.

 

 

- TWSR (TWI Status Register)

 

 

bit 7..3, TWS (TWI Status) : TWI 로직과 TWI 버스의 상태를 나타냅니다.

bit 1..0, TWPS (TWI Prescaler bits) : 읽고 쓸 수 있는 비트로, 비트 레이트 프리스케일러를 제어합니다.

 

 

- TWDR (TWI Data Register)

 

 

송신 모드에서 TWDR 은 다음 전송할 데이터를 갖습니다.

수신 모드에서 TWDR 은 수신된 이전 데이터를 갖습니다.

 

- TWAR (TWI (slave) Address Register)

 

 

슬레이브 전송기나 슬레이브 수신기로 프로그램 되었을 때 TWI 가 응답할 7 비트의 슬레이브 주소를 라이트 합니다. 마스터 모드에서는 사용하지 않습니다. TWAR 의 최하위 비트 TWGCE 는 general call address (0x00) 를 인식하도록 설정합니다.

 

bit 7..1, TWA (TWI (slave) Address Register) : 7 비트는 TWI 의 슬레이브 주소를 구성합니다.

bit 0 , TWGCE (TWI General Call Enable bit) : 1 인경우 general call 을 인식할 수 있도록 합니다.

 

 

 

'공부 > AVR' 카테고리의 다른 글

[ATMEGA128] 11. EEPROM  (0) 2012.11.09
[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 8.SPI  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
posted by 큰파도

댓글을 달아 주세요