본문 바로가기
Study/MAXIM 78M661X

4.2 SPI Interface

by Answer Choi 2015. 2. 12.
반응형


4.2 SPI Interface


78M6610+PSU는 SPI slave모드로 설정할 수 있습니다. 


SPI인터페이스가 활성화 되면, 아래의 핀들을 작동시켜야 됩니다.


SSB : Slave select(SS), 입력이며, active low 신호입니다.

SCK: Serial Data Clock(SCK)입력 입니다.

SDO: Master Input Slave Output(MISO), 직렬 데이터 출력입니다.

SDI: Master Output Slave Input(MOSI), 직렬 데이터 입력입니다.


Clock Polarity and Phase


아래그림(그림16)과 같이 SPI 버스는 단일 바이트 작업방식입니다. 


데이터는 SCK가 하강(falling) edge일때 쉬프트 되고, 상승(rising) edge일때 래치(latched)됩니다.


SPI Protocol


SPI는 내부 RAM의 256워드(24비트)로  읽기 레지스터와 쓰기레지스터에 접근할 수 있습니다. 


SPI로 접근하기 위해서는 Section3의 레지스터 주소를 3으로 나눠줘야 합니다. 


첫번째 바이트는 마스터가 78M6610+PSU(슬레이브)에 전달하기 위해 필요한 제어(control)바이트 입니다. 

제어바이트는 전송될 워드의 수와 레지스터 주소의 최상위비트를 설정할 수 있습니다.

ADDR7과 ADDR6비트는 다음 데이터 전송에 의해 액세스 할 8비트 레지스터주소의 7번비과  6번비트입니다.

 

NBRACC[3:0]는 이후의 읽기/쓰기 전송에 접근할 워드수(3바이트)입니다. 


실제로 데이터 전송(transaction)을 위해 접근하는 데이터 주소의 NBRACC+1입니다. 


따라서 단일 주소접근에서 그 영역은 0으로 설정합니다. 


NBRACC는 작업(다중 읽기또는 쓰기작업)이 완료되면 0으로 리셋됩니다. 


NBRACC는 각 다중워드 전송을 하기 전에 0이 아닌값(주소갯수-1)을 설정해야 합니다.

 

전송(transaction)의 두번째 타입은 호스트와 디바이스 사이의 데이터 전송용이며 아래와 같습니다.


(ADDR[5:0]이 첫바이트의[7:2]에 나오고 비트1은 읽기인지 쓰기인지 정하는 거네요, 그리고 그 다음바이트부터 데이터를 넣습니다.)


간단한 예가 아래 있습니다.

 

오직 0x14번지에만 쓰기 작업을 하는 것이므로 NBRACC는 0이 되고 


주소는 전체 0b00010100이므로 [7:6]번비트인 addr7과 addr6도 0이 됩니다. 


그리고 두번째 바이트에서 addr[5:0]은 0b010100이 되고 쓰기 작업이므로 R/W=1입니다. 


이후 3~5바이트에는 데이터 값을 넣습니다. 

 

17번지와 18번지에서 읽기작업하는 것이므로 BNRACC는 1이 됩니다. 


다음 시작주소인 0x17의 이진값은 0b00010111이므로 addr[7:6]은  0. 두번째 바이트에서 addr[5:0]은 010111 읽기 작업이므로 R/W=0이 됩니다. 


이후의 3~5바이트는 17번지의 데이터가 저장되고, 6~8바이트는 18번지의 데이터가 저장됩니다.


연속적이지 않은 17번지와 0A번지의 읽기작업에 대한 예인데,


 연속적이지 않기때문에 NBRACC가 들어가는 바이트를 2번 써주면 됩니다.


호스트의 능력에 따라 전송의 타이밍이 다르게 나타날 수 있습니다. 그림 17은 성공적으로 전송된 것을 보여줍니다. 이 바이트들은 계속해서 SCK가 active상태(바이트당 8클럭)가 되어 전송됩니다.


호스트는 데이터 전송사이에 공간을 둘 수도 있습니다. 


그림 18은 "in-between-bytes"gap(바이트 사이 공간)에 SCK가 비활성화 된 모습입니다. 


Byte1과 Byte2그리고 Byte4와 Byte5사이에 공간(gap)이 생겼는데 이 것은 개념을 설명하기 위한 것입니다.(인터럽트가 발생되면 이런식으로 전송 된다는 뜻)



 

 

 

반응형

'Study > MAXIM 78M661X' 카테고리의 다른 글

modulo-256 check-sum  (0) 2015.02.12
4.3 I²C Interface  (0) 2015.02.12
4.1 UART Interface  (0) 2015.02.12
4. Serial Interfaces  (0) 2015.02.12
3.8 Command Register  (0) 2015.02.12

인기글