본문 바로가기

[ST_MICRO]/STM8

STM8S - SPI 테스트

STM8S - SPI 테스트



STM8S의 SPI는 최대 클럭 스피드 10Mhz로 동작한다. 동급의 8bit MCU인 AVR과 비교하면 조금더 성능이 좋아 보인다.

S-Type EVM 보드를 이용하여 SPI인터페이스의 가속도센서를 테스트 해 보았다.



STM8S SPI블록도

8bit MCU의 전형적이 SPI구조 이고 AVR과 비교 했을때 큰 차이가 없어 보인다.





STM8S SPI초기화 함수

void SPI0_Init(void)

{

SPI_DeInit();

SPI_Init(SPI_FIRSTBIT_MSB, 

            SPI_BAUDRATEPRESCALER_32, 

            SPI_MODE_MASTER, 

            SPI_CLOCKPOLARITY_LOW, 

            SPI_CLOCKPHASE_2EDGE, 

            SPI_DATADIRECTION_2LINES_FULLDUPLEX, 

            SPI_NSS_HARD, 0x00);

SPI_Cmd(ENABLE);

}



STM8S SPI송수신 함수

레지스터의 SPI_FLAG_TXE 비트를 검사해서 1이면 SPI버퍼가 비어 있으므로 데이터를 쓰고, SPI_FLAG_RXNE비트가 1이되면 읽을 준비가 되었으므로 수신한 값을 리턴하면 된다.

unsigned char SPI0_WriteReadByte(unsigned char Data)

{

while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET);

SPI->DR = Data;


while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == RESET);


return SPI->DR;

}




반응형