8. SPI

 

8.1 특징 및 기능

 

SPI (Serial Peripheral Interface) 란 근거리용 고속 직렬 동기식 통신 규격을 말합니다. 일반적으로 MOSI, MISO, SCK, /SS의 4개의 신호선을 이용합니다. UART보다는 고속이며 전이중 통신을 지원합니다.

MASTER와 SLAVE 사이에서 직렬로 데이터를 송수신하며, 클럭은 항상 MASTER가 발생하도록 되어 있습니다.

/SS 신호를 S/W 적으로 처리할 경우 한 개의 ATmega128에 여러 개의 SPI용 디바이스를 장착 할 수도 있습니다. SCK 는 SPI 의 클럭 신호로 출력되는 핀이며 마스터가 보내줍니다. MOSI 는 마스터-출력, 슬레이브-입력 핀으로 마스터에서 슬레이브로 시리얼 데이터를 전송 합니다. MISO 는 마스터-입력, 슬레이브-출력 핀으로 슬레이브에서 마스터로 시리얼 데이터를 전송 합니다. SS 는 슬레이브 선택 핀으로 마스터가 여러 슬레이브중에 활성화하는 슬레이브를 선택할 수 있는 핀이며, 이 단자에 로(Low) 신호가 입력되면 슬레이브로 선택됩니다.

 

1) 레지스터

- SPCR (SPI Control Register)

 

 

bit 7, SPIE (SPI Interrupt Enable) : SPI 의 인터럽트를 가능하게 합니다. SPSR 레지스터의 SPIF 비트가 1 이고 SREG 레지스터의 전체 인터럽트 인에이블 비트(I) 가 1 이면 인터럽트가 발생합니다.

bit 6, SPE (SPI Enable) : SPI 기능을 사용하게 하는 비트입니다.

bit 5, DORD (Data Order) : 1 은 데이터의 LSB 가 먼저 전송되고, 0 은 데이터의 MSB 가 먼저 전송됩니다.

bit 4, MSTR (Master/Slave Select) : 1 은 마스터로 사용하며 , 0 은 슬레이브로 사용하게 합니다.

bit 3, CPOL (Clock Polarityt) : 클럭의 극성 을 어떻게 사용할지 결정합니다.

 

bit 2, CPHA (Clock Phase) : 데이터의 샘플링을 언제 할 것인가를 결정하는 비트입니다.

bit 1:0, SPR1:0 (Clock Rate Select) : 마스터로 구성된 디바이스의 SCK 속도를 결정합니다.

 

- SPSR (SPI Status Register)

 

bit 7, SPIF (SPI Interrupt Flag) : 시리얼 전달이 완료되면 설정, 인터럽트 처리시 리셋 됩니다. SPIF 비트가 셋된 상태에서 SPSR 을 처음 읽고 나서 SPI 데이터 레지스터(SPDR)를 엑세스 하면 리셋 됩니다.

bit 6, WCOL (Write Collision Flag) : 데이터 전달이 되는 동안 SPI 데이터 레지스터(SPDR) 에 쓰면 셋 됩니다. 이 비트가 셋된 상태에서 SPSR 을 처음 읽고 SPI 데이터 레지스터(SPDR)를 처리하면 리셋 됩니다.

bit 0, SPI2X (Double SPI Speed) : SPI 마스터 모드에서 이 비트가 1 이 되면 SPI 속도 (SCK 주파수) 는 2 배가 됩니다. 슬레이브 모드에서는 Fosc/4 이하의 주파수에서만 동작이 보장됩니다.

 

- SPDR (SPI Data Register)

SPI 데이터 송 수신용 레지스터 입니다.

 

 

2) SPI MODE

CPOL 과 CPHA 설정 bit에 의해 DATA를 클럭이 어떤 상태에서 동기 되서 받아 들일지 결정하게 됩니다.

모드는 전부 4개가 있습니다.

모드의 특징은 아래와 같습니다.

모드 0 에서 클럭은 상승했다가 하강하는데, 상승할 때 DATA를 읽습니다.

모드 1 에서 클럭은 상승했다가 하강하는데, 하강할 때 DATA를 읽습니다.

모드 2 에서 클럭은 하강했다가 상승하는데, 하강할 때 DATA를 읽습니다.

모드 3 에서 클럭은 하강했다가 상승하는데, 상승할 때 DATA를 읽습니다.

 

 

 

 

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

[ATMEGA128] 10. ADC  (0) 2012.11.09
[ATMEGA128] 9. TWI (I2C)  (0) 2012.11.09
[ATMEGA128] 7.USART  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (2)  (0) 2012.11.09
[ATMEGA128] 6. 타이머 카운터 (1)  (0) 2012.11.09

+ Recent posts