I²C(Inter-Intergrated Circuit)통신
1980년대 초에 필립스사에서 제안한 IC소자들을 연결하기 위한 던거리용 2선식 직렬통신 버스
특징
-SDA,SCL 2개의 선으로 양방향 직렬통신을 수행
-반드시 마스터와 슬레이브 사이에 직렬 동기식 양방향 데이터 통신을 수행
-마스터가 데이터를 송신 또는 수신을 하기 위하여 데이터 SDA는 양방향 신호
-마스터가 데이터를 송신 또는 수신하더라도 클록 신호 SCL은 항상 마스터가 발생
-100Kbps,400Kbps,3.4Mbps의 3가지 전송속도 지원
-마스터가 슬레이브에게 7비트 또는 10비트 어드레스로 지정(어드레스=장치번호 or 장치ID)
-마스터가 전체호출 기능으로 전체 슬레이브를 동시에 지정하는 것이 가능
-멀티마스터 조정 기능 지원
데이터 송신
①마스터가 슬레이브에게 데이터를 송신할 때는 먼저 마스터가 7비트의 슬레이브 어드레스를 보낸다.
②송신을 의미하는 L상태의 1비트를 보낸다.
③지정된 어드레스를 가지고 있는 슬레이브는 L상태의 1비트 확인신호로 응답한다.
④마스터는 n바이트의 데이터를 연속으로 송신하며 각 바이트를 송신할 때마다 해당 슬레이브로부터 확인 비트로 응답을 받는다.
데이터 수신
①마스터가 슬레이브로부터 데이터를 수신할 때는 먼저 마스터가 7비트의 슬레이브 어드레스를 보낸다.
②수신을 의미하는 H상태의 1비트를 보낸다.
③지정된 에드레스를 가지고 있는 슬레이브는 L상태의 1비트 확인 신호로 응답한다.
TWPS를 1로 가정하고 계산해 보면 TWBR이 3이 나온다.
즉, 400Kbps 속도로 하기 위해서는 TWPS 1 이면 TWBR을 3으로 해주어야 한다.
회로 연결
DK128에서 J18번의 1번에는 ATmega 2560 43번에 2번은 44번에 연결해 준다.
레지스터 정의
#define _TWI_H_
#include "Smart.h"
#define TWBR (*((volatile unsigned char *)0xB8))
#define TWCR (*((volatile unsigned char *)0xBC))
#define TWSR (*((volatile unsigned char *)0xB9))
#define TWDR (*((volatile unsigned char *)0xBB))
#define TWAR (*((volatile unsigned char *)0xBA))
//TWCR
#define TWINT 7
#define TWEA 6
#define TWSTA 5
#define TWSTO 4
#define TWWC 3
#define TWEN 2
#define TWIE 0
//TWSR
#define TWS7 7
#define TWS6 6
#define TWS5 5
#define TWS4 4
#define TWS3 3
#define TWPS1 1
#define TWPS0 0
//TWAR
#define TWA6 7
#define TWA5 6
#define TWA4 5
#define TWA3 4
#define TWA2 3
#define TWA1 2
#define TWA0 1
#define TWGCE 0
#endif //_TWI_H_
이상 정리를 마칩니다.
잘못되었거나 수정되어야하는 부분 댓글 부탁드려요~
늦게 올리네요. 죄송합니다. 즐거운 주말들 보내세요~
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014.06.11 출석3번 김대희 필기 (12) | 2014.06.11 |
---|---|
[140610] 2번 고한솔 업무일지 (14) | 2014.06.10 |
TWI.c/TWI.h (0) | 2014.06.10 |
20140609 출석번호 1번 고윤석 (12) | 2014.06.09 |
2014.06.03 업무일지 출석번호 21 이재우 (12) | 2014.06.03 |
06.02 업무일지 [20. 이경진] (15) | 2014.06.02 |
추가보드 스위치 (0) | 2014.06.02 |
PCINT 9~13번을 이용한 7Segment 카운터 (0) | 2014.06.02 |