본문 바로가기
전자/임베디드 시스템

STM32 SPI 통신 절차

by Begi 2022. 2. 24.
반응형

STM32의 SPI 통신 모듈 구조는 다음과 같다.

 

 

Tx Buffer에 데이터를 쓰면 먼저 Shift register로 이동한 후 한 비트씩 전송된다.

 

DR 레지스터에 데이터를 쓰면 Tx buffer에 저장되고 DR 레지스터를 읽으면 Tx buffer 데이터가 읽힌다.

 

SPI 마스터로 통신하는 절차

1. 전송 절차

1) DR에 전송할 데이터를 쓴다. (Tx buffer에 저장된다.)

2) Tx buffer가 비면 SR의 TXE가 1이 된다. (Shift register로 전송될 때) CR2의 TXEIE이 1로 설정되어 있으면 인터럽터가 발생한다.

 

2. 수신 절차

1) 수신이 완료되면 Shift register의 데이터가 Rx buffer로 이동된다.

2) 이 때 SR의 RXNE 비트가 1이 된다.

3) DR을 읽으면 RXNE 비트가 0이 된다. (Rx buffer를 읽는다) CR2의 RXNEIE가 1로 설정되어 있으면 인터럽터가 발생한다.

 

SPI 통신 소스 예제

uint8_t SPIx_Transfer(uint8_t data)
{
    SPI1->DR = data;
    while (!(SPI1->SR & (SPI_FLAG_TXE)));
    while (!(SPI1->SR & (SPI_FLAG_RXNE)));
    return SPI1->DR;
}

 

 

반응형

'전자 > 임베디드 시스템' 카테고리의 다른 글

MPU-6050 I2C 통신  (0) 2022.03.22
STM32에서 ADXL345 사용하기  (0) 2022.03.04
Eclipse에서 Perspective 자동 전환  (0) 2022.02.24
STM32CubeIDE의 metadata 폴더 이동  (0) 2022.01.10
Nested Interrupt 뜻  (0) 2021.12.26

댓글