본문 바로가기
MCU 통신/이론

U(S)ART (1)

by [Akashic Records] 개발의선지자 2024. 5. 26.

※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.

    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.

 

UART : 범용 비동기 수신/송신기

USART : 범용 동기/비동기 수신/송신기 

 

하드웨어 연결도 

UART를 위한 외부 핀 

- TX : 송신핀

- RX : 수신

- SW_RX

- IRDA_OUT : 적외선 통신 출력

- IRDA_IN : 적외선 통신 입력 

- RTS : 자신의 수신버퍼상태를 알려주는 신호

- CTS : 상대의 수신버퍼의 상태를 받는 신

- CK : 동기 신호를 위한 클럭

 

STATUS Registser

 

1. TXE(bit 7)

2. TC(bit 6)

3. RXNE(bit 5)

 

데이터 패킷 구조

 

1.시작 BIT 전 IDLE 상태(미전송 상태)에서는 HIGH

3. 시작 비트는 하강 에지(HIGH - > LOW)

2. 데이터 8bit(1byte)를 보낸다. 

3. 에러 체크용 패리티 비트가 데이터 비트 다음에 올지 말지 선택하여 사용가능

4. 정지 비트는 상승 에지 (LOW - > HIGH)

LSB부터 전송한다.

 

HAL 드라이버 함수 

 

1. blocking  모드 동작 핸들러

blocking 모드 : 해당 함수가 호출시 ,자신의 작업이 종료되기 전까지 프로세스 제어권을 돌려주지 않는것

따라서 요청한 작업을 마칠 때까지 계속 대기해야 한다.

원형 역할 및 매개변수 설명
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, 
uint16_t Size, uint32_t Timeout)
데이터 송신
- huart : UART 구조체
- pData : 전송 데이터
- Size : 전송 데이터 크기
- Timeout : 전송이 수행하지 않을 때 해당 핸들러를 중지할 시간
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) 데이터 수신
- huart : UART 구조체
- pData : 송신 데이터
- Size : 송신 데이터 크기
- Timeout : 전송이 수행하지 않을 때 해당 핸들러를 중지할 시간

 

2. non - blocking  모드 동작 핸들러(인터럽트)

해당 함수가 호출시 ,자신의 작업이 종료되기 전에도 프로세스 제어권을 돌려주는 것.

요청한 작업을 즉시 마칠 수 없다면 즉시 return한다. 그래서 다른일을 할수 있다

원형 역할 및 매개변수
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) huart  :  UART 구조체
pData : 전송 데이터
Size : 전송 데이터 크기
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) huart : UART 구조체
pData : 송신 데이터
Size : 송신 데이터 크기
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) huart : UART 구조체
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) huart  :  UART 구조체
pData : 전송 데이터
Size : 전송 데이터 크기
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) huart : UART 구조체
pData : 송신 데이터
Size : 송신 데이터 크기
__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) huart : UART 구조체
__weak void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) huart : UART 구조체

 

각각의 자세한 설명은 인터럽트 관련 내용 또는 DMA 관련 내용 포스트 시 설명할 예정입니다.

 

 

 

 

 

 

'MCU 통신 > 이론' 카테고리의 다른 글

SPI  (0) 2024.07.07
NEC Protocol  (0) 2024.06.27
I2C  (0) 2024.06.27
RS-485 HW 구성 [1]  (0) 2024.06.13