4.3 I²C Interface
78M6610+PSU에서는 SDAI, SDAO, SCL핀으로 사용할 수 있습니다.
7비트 주소모드와 최고 400kHz의 데이터 전송율의 슬레이브 모드를 제공합니다.
그림 19는 설정할 수 있는 2가지 입니다. 설정 A는 표준설정이고 설정B는 SDA핀 2개를 이용한 분리된(isolated) 방식이다.
I²C 인터페이스는 내부램의 256워드(24비트)로 읽기와 쓰기레지스터를 접근할 수 있습니다.
SPI와 같이 section3의 각 레지스터주소에서 3으로 나눠줘서 접근해야 합니다.
단일 바이트접근이 가능하지만, 사용자는 고속 접근을 위해 각 데이터의 전송 워드(다중워드)로 접근할 수 있습니다.
78M6610+PSU의 각 디바이스 주소는 DevAddr레지스터를 통해 설정가능하고 주소[6:2]는 디바이스 주소를 의미합니다.
주소비트 0과 1은 ADDR1과 SPCK/ADDR0(24핀 패키지경우)핀을 통해 설정합니다.
16핀 패키지 옵션에서 DevAddr레지스터는 [6:1]은 주소비트를, 0번비트는 SPCK/ADDR0핀을 통해 설정합니다.
Bus Characteristics
- 데이터 전송은 버스가 이용상태가 아닐때(bus is not busy) 해야 합니다.
- 데이터 전송중에는 clock 라인이 HIGH상태가 되어야 합니다.
clock라인이 HIGH인 동안 데이터라인이 변화되면 START또는 STOP 상태로 해석합니다.
Bus Conditions
- Bus Not Busy(I): 데이터와 클럭라인 둘다 HIGH상태이면 대기 상태입니다.
- Start Data Transfer(S): SCL(clock)이 HIGH인 동안 SDA(data line)가 HIGH에서 LOW로 떨어지면 START 상태. 모든 명령들은 START 상태에서 시작해야 합니다.
- Stop Data Transfer(P) : SCL이 HIGH인 동안 SDA가 LOW에서 HIGH로 올라가면 STOP상태입니다. 모든 작업은 STOP상태에서 끝납니다.
- DATA Valid: START 상태 이후 SCL이 HIGH일때 DATA의 변화가 없으면 유효한 값이 됩니다.SDA는 SCL이 LOW상태일때 변화되어야 합니다.
data의 비트당 1-clock입니다. 각 데이터의 전송은 START 상태에서 시작해서 STOP 상태일때 끝이납니다.
- Acknowledge(A): 각 각의 수신 디바이스는 바이트를 수신한 후 acknowledge를 만들어야 합니다. 마스터 디바이스는 이 acknowledge 비트와 관계된 외부 클럭을 만들어야 합니다.
그 디바이스는 acknowledge와 관계된 클럭펄스가 HIGH인 동안 SDA라인은 pull down으로 LOW(안정적으로) 신호를 발생시켜야 합니다.
물론 설정하고 유지하는 시간은 고려되어야 합니다.
읽는동안 마스터는 슬레이브에게 데이터의 끝에 acknowledge비트를 만들어 주지 않았기 때문에
슬레이브는 클럭아웃을 해야 하는데 슬레이브(78M6610+PSU)는 SDA를 HIGH로 만들어
마스터가 STOP 상태를 만들도록 합니다.
Device Addressing
제어바이트(control byte)는 마스터 디바이스로 부터 START상태를 받기위한 첫 바이트 이다.
제어바이트는 7비트의 주소비트와 데이터 타입(0=쓰기,1=읽기)으로 되어있다.
Write Operations
마스터에 의해 START(S)상태와 다음으로 디바이스 주소7bit와 R/W비트가 마스터에 의해 버스에서 클럭 된다.
이것은 정해진 주소의 슬레이브가 수신하면, 9번째 클럭싸이클동안 acknowledge 비트(A)가 생성된 후 레지스터 주소를 수신할 것이다.
다음 바이트에서 마스터는 레지스터 주소를 전송하고 78M6610+PSU의 주소포인터를 기록한다. 78M6610+PSU로부터 또다른 acknowledge신호를 받고나면
마스터 디바이스는 메모리에 데이터 바이트(data byte)를 쓴다.
데이터 전송이 끝나면 마스터는 STOP(P)상태를 만든다.
이것이 write cycle이다. 3바이트 데이터 전송에 관한 예제가 아래 그림에 있다.
STOP(P)상태를 받고나면 내부 레지스터 주소포인터는 증가한다.
연속된 레지스터들을 확장해서 쓰기 접근할 수 있다.
아래 그림은 여러 레지스터에 연속해서 쓰는 걸 보여준다.
Read Operations
읽기 작업은 쓰기와 마찬가지로 초기화하고 R/W비트만 1로 설정해 주면 된다.
2가지 방법의 읽기작업이 있다. 하나는 현재주소를 읽는 것이고, 하나는 임의의 주소를 읽는 것이다.
Current Address Read: 78M6610+PSU는 stop비트를 받게 되면 마지막 접근했던 레지스터에서
주소값이 기본적으로 증가(+1)한다.
그러므로 만약에 n번지의 레지스터를 읽기 접근(read access)했다면 현재 주소는 n+1이 되어 읽기작업을 할 수있다.
제어바이트(control byte)의 R/W비트가 1로 세팅되면 78M6610+PSU는 acknowledge(A)를 만들고, 8비트의 데이터 바이트를 전송한다.
마스터는 acknowledge를 전송하지 않지만 전송이 끝나면 STOP상태로 만들고 78M6610+PSU는 전송을 중단합니다.
만약 이전작업에서 레지스터 주소포인터를 세팅해준 것이 없다면 아래와 같은 작업이 필요합니다.
Random Read: 임의읽기(random read)란 마스터가 임의의 주소에 접근하는 것을 말합니다.
이 작업을 하기위해 쓰기작업의 일부로 레지스터 주소를 세팅해야 합니다.
이 주소가 전송되면 acknowledge 응답 후에 마스터가 start 상태(START Condition)로 만듭니다.
이때 쓰기작업은 완료 되고, 마스터는 이 때 제어바이트의 R/W비트를 1로 바꾸어 읽기 작업상태(READ Operation)로 보냅니다.
78M6610+PSU는 acknowledge를 응답하고 바로 데이터를 전송합니다.
전송이 끝나면 마스터는 acknowledge를 전송하지않고 STOP상태를 만듭니다.
이 읽기작업은 3바이트로 제한되지 않고, 레지스터 주소포인터의 최고값까지 확장할 수 있습니다.
'Study > MAXIM 78M661X' 카테고리의 다른 글
MAX78630 SSI ID, Total Watt (0) | 2016.07.05 |
---|---|
modulo-256 check-sum (0) | 2015.02.12 |
4.2 SPI Interface (0) | 2015.02.12 |
4.1 UART Interface (0) | 2015.02.12 |
4. Serial Interfaces (0) | 2015.02.12 |