티스토리 뷰

STM32Fxx

STM32F429 - UART Poll (CUBE MX)

라이다 2018. 9. 11. 11:10
반응형

9. UART Poll(Universal Asynchronous Receiver/Transmitter)

           -이번 장은 직렬 통신 방식 중 하나인 UART 통신을 배운다.

           -UART통신은 1:1 통신방식이다.

           -아래 예제는 UART통신을 이용한 PC와 통신이다.

 

우선 UART(USART) 통신 프레임에 대해 설명한다.



다음 표는 숫자 5 3이라는 데이터를 연속으로 보낼 경우 데이터 프레임을 논리값으로 나타낸 것이다.

0

1

0

1

0

0

0

0

0

1

0

1

1

0

0

0

0

0

0

1

1

Start

D0

D1

D2

D3

D4

D5

D6

D7

PB

Start

D0

D1

D2

D3

D4

D5

D6

D7

PB

STOP

위와 같은 표로 나타낼 수 있다 패리티비트 마저 전송이 끝나면 바로 START 비트로 새로운 데이터를 전송한다고 상대방에게 알려주거나 STOP 비트로 더 이상 전송할 데이터가 없다고 알려준다.


하이퍼 터미널 설정




다음 과정인 CUBE MX에서 설정하여 사용할 UART의 통신속도는 115200bit/s, 데이터는 8비트, 패리티 비트는 인식 하지 않음

정지 비트는 1, 흐름 제어 없음이다 그렇기에 PC도 위와 같이 똑같이 맞춰 준다.


CUBE MX 설정

또한 통신 상태를 확인하기 위해 LED가 연결된 PG13, PG14 OUTPUT 설정해준다.



Baud Rate: 1초당 보낼 비트의 통신속도를 설정

 

Word Length: 한 데이터의 값을 몇 bit 보내겠느냐 현재 8Bits(including Parity)로 설정 하였다

여기서 PC는 패리티 비트 없음이라고 설정했는데 왜 including Parity라고 되어있냐고 생각이 들것들 것이다 UART 통신에서 데이터 한 개를 보낼 때 Start bit(1) + data bit(8) + parity bit(1) = 10bit를 보낸다 그렇기에 including parity라고 쓰여 있을 뿐 인식 여부는 밑의 설정에서 한다

 

Parity: 패리티 비트 인식 여부 설정 현재 패리티 비트를 인식하지 않을 것이므로 None

 

Stop Bits: 데이터 전송 완료 상태를 무엇으로 하겠는가 PC 하이퍼터미널과 같이 1로 설정한다

 

Source Code

/* USER CODE BEGIN 0 */

uint8_t tx_data[] = {'a','b','c','d','e'};

uint8_t rx_data[100];

/* USER CODE END 0 */

.

.

/* USER CODE BEGIN 2 */

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14 | GPIO_PIN_13, GPIO_PIN_RESET); //PG13, PG14 RESET상태로 출력한다

  HAL_Delay(1000); // 1초 딜레이 후 아래 UART 통신을 실행 시킬것이다

 

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_SET);//PG14 ON

  HAL_UART_Transmit(&huart1,tx_data, 5, 1000);//1000ms = 1sec동안 데이터 전송모드(5개의 데이터가 모두 전송되면 타임아웃이 1000ms이어도 함수를 빠져나온다)

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_14, GPIO_PIN_RESET);//PG14 OFF

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);//PG13 ON

  HAL_UART_Receive(&huart1, rx_data, 100, 2000);//2000ms = 2sec동안 데이터 수신모드

  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);//PG13 OFF

/* USER CODE END 2 */

 

실행 결과

UART 통신으로 PCtx_data 5개가 전송이 된 후 MCURecive모드로 2초간 대기한다 그 2초동안 하이퍼터미널에 키보드로 데이터를 입력하면 MCU로 전송이 된다. 자세한 설명은 9.UART 폴더의 동영상 확인하길 바란다.




반응형

'STM32Fxx' 카테고리의 다른 글

STM32F429 - SPI Poll  (0) 2018.10.18
STM32F429-UART IT(CUBE MX)  (0) 2018.10.18
STM32F429 - ADC Interrupt (CUBE MX)  (0) 2018.09.11
STM32F429 - ADC 사용하기 (CUBE MX)  (0) 2018.09.11
STM32F429 - DAC를 이용한 LED밝기 조절  (0) 2018.09.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함