[마이크로컴퓨터응용]stm32f uart통신

▲마이크로컴퓨터 ▲유아트 ▲유서트 ▲usart ▲Quart ▲통신 ▲시리얼통신 ▲오실로스코프 ▲startbit ▲stopbit ▲parity ▲패리티비트 ▲cortex ▲코어텍스 ▲공대

>

uart5번을 사용하여 통신했습니다. stm32f 회로도를 보면, uart5_tx는 12번 핀, uart5_rx는 PD2번 핀으로 설정되어 있는 것을 알 수 있습니다.위의 코딩과 같이 uart5번에 대해 모든 설정을 끝냅니다!!

>

start bit – databit – parity bit – stop bit 이 순서대로 데이터가 전송됩니다.(데이터는 8bit 로 전송됨)보통 (통신을 하지 않을 때) IDLE 상태가 1이기 때문에 start bit은 항상 0이 됩니다.패리티 비트는 데이터 통신에서 오류가 발생했음을 알려주는 비트입니다.위의 코드에서는 패리티비트를 사용하지 않으며 패리티비트를 사용하면 데이터가 8bit에서 9bit으로 바変わ니다! (코드상에서 설정해야 합니다)

>

위의 함수는 한 글자만 보내주는 함수입니다.​

>

여러 문자를 전송하기 위해서는 위한 함수가 필요합니다.함수를 추가하고 나서 전송할 때 데이터가 어떻게 전송되는지 오실로스코프에서 확인해 보겠습니다.​

>

메인 문에 위 코딩을 넣어줍니다.스위치문을 제외하고 while문에 10ms마다 1을 송신하게 됩니다.​

>

GND를 연결하여 tx핀이 연결된 PC12번핀에 오실로스코프를 찍어서 파형을 확인해 보았습니다.​

>

위의 파형을 보고 데이터1이 전송된 것을 확인하셨나요? 왼쪽 IDLE상태(High)에서 startbit(Low)임을 확인하실 수 있습니다.startbit를 시작으로 다음 8bit이 ‘1’이 되어야 합니다.High와 Low를 계산해 보면 10001100LSBMSBMSB에서 bit를 읽으면 0x31임을 알 수 있습니다.

>

아스키 코드표에서 0x31이 ‘1’임을 확인할 수 있습니다.데이터 1이 송신되었습니다.

>

여러개의 문자를 전송하면, 어떻게 될까요? String 함수를 사용해 “123”을 송신했습니다.

>

여러 문자를 보내면 한 글자만 보낼 때보다 복잡한 파형이 나와요.위에서 행한 방법과 마찬가지로 왼쪽 IDLE 상태1부터 시작해서 0명 start bit 다음부터 데이터를 계산합니다.01000110011001(0=startbit)(1=stopbit) 왼쪽의 데이터 MSB에서 읽으면 0x310x33123이 잘 전송되고 있는 것을 확인할 수 있습니다!!

​​​​​