USART 수신 절차

Download Report

Transcript USART 수신 절차

박찬식 교수님 조교 : 양준석, 조민규

Contents

1)

프로젝트 팀 구성, 보드 재료 소개, 개발 환경 구축

2)

GPIO 실습(LED, 7-세그먼트)

3)

Interrupt 실습 (LED, Switch)

4)

Timer를 이용한 시계

5)

모터, PWM 신호 발생

6)

모터, PWM 신호 발생

7)

SPI

8)

USART

9)

센서 I2C

10)

프로젝트 주제 설정

2

USART

USART(Universal synchronous asynchronous receiver transmitter)

   STM32 UART는 산업 표준으로 외부 장치와 전이중 통신을 지원하며, 내부 fractional baud rate generator를 이용하여 다양한 전송 속도를 제공한다.

동기식 단 방향 통신, 반이중 통신, LIN(Local Interconnection Network), Smartcard protocol, IrDA(Infrared Data Association) SIR ENDEC 규격, 모뎀 동작(CTS/RTS)를 지원 하며, multiprocessor 통신도 지원한다. 또한 DMA를 이용한 고속 통신도 가능하다.

기본 기능인 전이중 (full duplex) 비동기 (asynchronous) 통신 방식에 대한 설명만 나타 낸다. 다른 기능의 사용법은 STM32 사용자 매뉴얼에서 찾을 수 있다.

STM32 USART 특징

 전이중, 비동기 통신 지원         Fractional baud rate generator: 프로그램 가능한 최대 4.5Mbps 송수신 속도 Stop 비트 선택 가능: 1 혹은 2 stop bit LIN master synchronous break 전송 및 LIN slave break 감지 기능 동기식 전송을 위한 clock 출력 제공 DMA를 이용한 multibuffer 통신: SRAM에 송/수신 바이트 buffering 가능 송신과 수신에 별도 enable 비트 제공 전송 감지 flag: 1) Receive buffer full, 2) Transmit buffer empty, 3) End of transmission parity control: parity bit의 전송 및 수신된 parity의 검사

USART

■ ■

RX: 직렬 데이터 입력 핀이며, 잡음 제거를 위하여 oversampling 기법이 사용된 다.

TX: 직렬 데이터 출력 핀이며, 송신이 비활성화 되면 범용 IO핀으로 사용된다. 송 신이 활성화 되었지만 보낼 데이터가 없으면 high 상태를 유지한다. 단일선 통신 혹은 Smartcard 모드에서는 이 핀을 통하여 송수신이 이루어진다.

USART

송신 절차

  USART_CR1 레지스터의 UE 비트를 1로 설정하여 USART를 enable 시킨다.

USART_CR1 레지스터의 M 비트로 word length를 설정한다.

  USART_CR2 레지스터의 Stop 비트의 길이를 설정한다.

Multi-buffer 통신이 필요하면 USART_CR3의 DMAT(DMA enable)을 설정한다.

    USART_BRR 레지스터를 이용하여 원하는 baud rate을 설정한다.

첫 전송으로 idle frame을 보내기 위해 USART_CR1의 TE 비트를 설정한다.

USART_DR에 보내고자 하는 데이터를 써넣어 데이터를 전송한다. (이때 TXE가 해제된다). Single buffer를 사용하여 전송하는 경우 보내고자 하는 각각의 데 이터에 대하여 이 과정을 반복한다.

마지막 바이트를 USART_DR에 쓴 이후 TC=1이 될 때까지 대기한다. TC는 transmission complete를 나타내며, 이 대기 과정은 USART가 disable되거나 halt 모드로 들어가 마지막 전송이 제대로 되지 않을 가능성을 피하기 위함이 다.

USART

수신 절차

 USART_CR1의 UE=1로 설정하여 USART를 enable 시킨다.

           USART_CR1 레지스터의 M 비트로 word length를 설정한다.

USART_CR2 레지스터의 Stop 비트의 길이를 설정한다.

Multi-buffer 통신이 필요하면 USART_CR3의 DMAT(DMA enable)을 설정한다.

USART_BRR 레지스터를 이용하여 원하는 baud rate을 설정한다.

Start 비트를 찾기 위하여 USART_CR1의 RE 비트를 설정한다.

Character가 수신되면 RXNE 비트가 설정되며 이는 shift 레지스터에 수신된 데이 터가 RDR로 옮겨져 사용자가 읽을 수 있음을 나타낸다. 만약 RXNEIE=1이면 인터럽트가 발생한다.

.

수신 도중 frame error, noise error, overrun error을 검출하면 해당 flag을 설정한다 Multi-buffer 모드에서는 수신된 매 바이트에 대하여 RXNE가 설정되며 DMA가 Data 레지스터를 읽으면 해제된다.

Single buffer 모드에서는 소프트웨어에서 USART_DR을 읽으면 RXNE가 해제된다. RXNE는 다음 바이트가 수신되기 전에 해제되어야 overrun error를 피할 수 있다 데이터 수신 도중에 RE 비트를 0으로 설정하면 현재의 데이터의 수신이 중단된다.

USART 실습

두 개의 USART 이용하여 Loopback 통신 시험을 수행한다. USART2를 송신으로 USART3를 수신으로 설정하여 polling 방식으로 통신을 실행한다. USART2의 Tx, Rx는 각각 PA2, PA3에, USART3의 Tx, Rx는 각각 PA10, PA11에 할당되며 통신 을 위하여 다음과 같이 연결한다.

USART 실습