티스토리 뷰
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 통신으로 PC에 tx_data 5개가 전송이 된 후 MCU는 Recive모드로 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
- STM GPIO
- atmega128 설치
- STM32F429 GPIO
- 틀고정
- filecopy
- 폴더생성
- atmel studio 설치
- 정부주택대출
- 중기청
- 중소기업청년
- STM CUBE MX
- 홈서비스
- 파일복사
- STM32F429
- GPIO
- STM32F
- atmega 개발
- atmel studio7
- 수은건전지
- Excel
- CUBE MX GPIO
- vba
- atmega 설치방법
- STM32F GPIO
- MCG
- STM 입출력
- 착한운전자마일리지
- 전세지킴보증서
- Dir
- 제목행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |