STM8S의 SPI를 slave 로 살려 보았다.

 

 

 

SPI_DeInit();
/* Initialize SPI in Slave mode */
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2, SPI_MODE_SLAVE, SPI_CLOCKPOLARITY_LOW,
SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT,(uint8_t)0x07);

 

 

 

SPI_MODE_SLAVE 로 선언 하면 된다.

SPI_CLOCKPOLARITY_LOW,SPI_CLOCKPHASE_2EDGE 로 SPI의 mode 를 선언하면 된다.

 

 

   

SPI_ITConfig(SPI_IT_RXNE,ENABLE);

 

 SPI_ITConfig 문을 이용해 인터럽트를 살린다.

 SPI_IT_RXNE 는 수신 완료시 인터럽트 사용 이다.

 

 

INTERRUPT_HANDLER(SPI_IRQHandler, 10)
{
    SPI_Process();
}

 

인터인터럽트 루틴이다. SPI_Process()에서 처리하도록 했다.

 

 

void SPI_Process(void)
{
    char  ch;
 
    if (SPI_GetFlagStatus(SPI_FLAG_RXNE)==SET)
    {
        /*received the command*/
        ch = SPI_ReceiveData();

        ....

    }
}

 

 

RX 수신 인터럽트 flag가 있으면 DATA를 읽도록 했다.

 

이래서 Slave 모드에서 수신 인터럽트를 살렸다.

 

 

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

STM8S 개발및 양산 환경  (0) 2013.01.02
STM8S에서 Uart 동기통신을 이용한 SPI 전송  (0) 2013.01.02
ST-LINK/V2 에 바리스터 달기  (7) 2012.12.27
[STM8] STM8 살펴 보기  (0) 2012.11.13
[STM8L] 참고회로  (0) 2012.11.12

+ Recent posts