본문 바로가기
임베디드.일렉트로닉스/STM32

STM32F4 UART 기본 사용법. baud 115200, 921600 룹백시험.

by 리치굿맨 2015. 4. 23.

 

 

개요

 

- STM32CubeMX에서 UART 설정하고 KEIL MDK-ARM에서 코딩하는 방식 정리.

- 구현기능. 

STM32F 의 USART 여러 개 중에서 USART2 를 UART용으로 설정. PC의 하이퍼 터미널 에서 출력한 데이터를 STM32F 에서 UART RX 로 수신한것을 그대로 UART TX 로 전송하면 하이퍼터미널에서 STM32F401에서 전송된 데이터를 표현하도록 함.



준비물. 

1. STM32F401 시험보드 1개. -> http://igotit.tistory.com/269

2. USB to UART 변환모듈 1개. -> http://igotit.tistory.com/242

USB 2UART 모듈로 STM32F401 시험보드의 UART를 PC USB로 연결하여 하이퍼터미널로 STM32F401 과 통신함.


사전 작업.

- STM32CubMX 로 프로젝트생성하고 KEIL MDK-ARM 에서 코딩가능한 상태.

-> http://igotit.tistory.com/271

본 내용은 위 프로젝트 이후에 추가되는 처리되는 사항임.

 

 

 

 

 

 STM32CubeMX 에서 USART2 의 Mode 를 Asynchromous 로 선택한다. 그러면 핀에 TX, RX 가 할당된다(아래 그림 파박)


탭 Configuratuion 의 USART2 를(아래 붉박) 클릭하여 통신속도및 데이터 형식을 지정한다(아래 그림 파박). 우리는 지금은 기본값으로 두자. 가장 많이 사용되는 설정이다. 참고 : Baud Rate 설정이 최대 10.5Mbps (아래 그림 파박) 까지 고속으로 설정가능함을 알 수 있다.

 

주의사항 :  USART2 의 최대 속도는 5.25Mbps 임.

STM32F401 의 경우 3개의  USART 사용가능하며 USART1, USART2, USART6 으로 이름 지정되어있다.

USART1, USART6 의 최고속도는 10.5Mbps 가능하나 USART2  는 5.25Mbps 가 최대라고 데이터시트에 명시되어있다.

아래 USART2 에서 최대 속도 10.5Mbps 라고 표현된 것은 오류임. 5.25Mbps 초과하여 설정해봤자 실제 칩에서는 작동되지 않음.

 


위 상태로 USART설정은 끝. 이제 메뉴 Project -> Cretae Project.. 클릭하여 프로젝트 생성시키고, KEIL MDK-ARM에서 코드 작성한다. 


본 예에서 구현할 코드는 main.c  의 while문내에 UART RX 로 수신된 데이터를 그대로 UART TX 로 출력하도록 한다. 

아래 그림의 붉박 부분이 추가된 코드 이다. 수신과 송신을 1바이트 단위로 이뤄지게 한것.



위 코드를 빌더하고 타겟보드에 기록하면 시험준비는 끝. 


MCU의 UART를 USB2UART 이용하여 PC로 연결하기. 

아래그림에서 파란불 켜진것이 USB2UART 모듈이며 STM32 보드로 결선되어있다.

USB2UART    - STM32 보드

GND            - GND

TXD            - RX

RXD            - TX



PC측 하이퍼터미널 설정. 

- STM32 에서의 UART 설정과 동일하게 한다. 


Echo typed characters locally. 선택한다. 아래 붉박. 

- PC에서 키보드 타이핑한경우 그 글자를 하이퍼터미널 화면에 보이게 하는 설정임.


이제 PC키보드 입력하면 글자가 항상 2개씩 보이는것을 확인할 수 있다. 첫번째 글자는 타이핑한 시점에서 하이퍼터미널에서 보이는 글자 이 데이터는 보드까지 전송되게되며 STM32 내에서는 수신한 데이터를 그대로 PC로 다시 전송하게 되어있으므로 그 글자가 하이퍼 터미널화면에 보이게 된다. 이 동작상황을 보인 것이 아래 동영상. 






한편, STM32 의 RX와 TX를 스코프로 보면 STM32 RX핀으로 PC에서 전송된 데이터가 먼저 나타날것이고 그 이후 STM32 에서 TX 로 전송하는 데이터가 보이게 될것이다. 이를 확인한 것이 아래사진. 시간지연정도가 10kHz 정도다. 즉 UART BAUD 115KHz 를 10비트로 나눈 값 정도만큼 지연되고 있다. 





통신속도 921600으로 올려보기. 

위와 동일한 상태에서 통신속도만 올려보자. 

STM32CubeMX 에서 아래 붉박처럼 921600 을 기록하면된다. 

이 값이 적용된 프로젝트를 빌더하고 라이팅한다.


하이퍼터미널에서의 통신속도도 이와 동일하게 선택하자. 아래그림. 



하이퍼터미널에 타이핑해보면 정상적인 통신이 됨을 확인할 수 있다. 

실제 통신속도가 빨라졌는지 확인하기 위하여 스코프를 보면 명확하며 아래 사진처럼 115200 bps 의 앞에서 보인 스코프사진과 비교해보면 10배정도 빠르게 처리되고 있음을 확인할 수 있다. 





 

 본 글 포함된 상위 정리장소 : http://igotit.tistory.com/244



///본 글 단축주소 : https://igotit.tistory.com/273


댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT