※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.
오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.
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 |