1. UART 통신 모듈 초기화
UART 통신을 시작하려면, UART 모듈(ASCLIN: Asynchronous Synchronous Controller Interface)을 초기화 해야 함
-
Tx/Rx 핀 설정
- Tx 핀은 데이터를 송신하는 핀 (P14.0)
- Rx 핀은 데이터를 수신하는 핀 (P14.1)
- 이 핀 설정은
IfxAsclin_Asc_Config 구조체 에서 이루어짐
-
FIFO 설정
- TC397 보드의 UART 통신은 FIFO를 사용해서 데이터를 관리함 (First In First Out)
- UART 통신에 사용되는 FIFO 버퍼는
g_ascRxBuffer(수신 버퍼)와 g_ascTxBuffer(송신 버퍼)로 구성
- 송신된 데이터(Tx)는
g_ascTxBuffer에 저장되고 순차적으로 전송
- 수신된 데이터(Rx)는
g_ascRxBuffer에 저장되며, 애플리케이션이 이를 읽음
-
인터럽트 설정
- Rx, Tx 모두 인터럽트를 활용하여 데이터의 송/수신 이벤트를 처리함
- Rx 인터럽트는 새로운 데이터가 수신 되었을 때 발생하는데, 이때 데이터를 FIFO 버퍼에 저장함
2. UART 수신
외부에서 TC397 보드로 데이터를 UART 통신을 통해 송신이 되면, UART로 들어온 데이터를 수신하는 과정은 다음과 같음
-
데이터 수신
- 외부 장치에서 UART를 통해 TC397 보드의 Rx 핀으로 데이터가 전송됨
- UART Rx 핀은 데이터를 수신하고, UART 모듈이 이를 FIFO 버퍼에 전달함
- FIFO는 UART 모듈의 하드웨어 레벨에서 구현이 되어 있음, 이때 데이터를 순차적으로 Rx FIFO에 저장됨
-
Rx 인터럽트
- 수신된 데이터가 FIFO 버퍼에 저장되면 → Rx 인터럽트가 발생
- Rx 인터럽트 핸들러(
asclin0_Rx_ISR)가 호출
- 핸들러 내부에서 FIFO에 저장된 데이터를 읽어서 소프트웨어 레벨의 Rx 버퍼
g_ascRxBuffer로 복사
- 데이터를 읽는 과정은
IfxAsclin_Asc_read() 함수로 처리
-
Rx 버퍼 처리
- UART Rx 버퍼의 데이터를 읽을 수 있음
receive_UART_data()와 같은 함수를 호출해서, FIFO에서 데이터를 읽어올 수 있.
- 데이터는 임시 변수(
rxDataBuffer)에 복사
- 데이터를 다 처리한 이후, 다음 데이터를 처리하기 위해서 Rx 버퍼를 초기화 시켜서 준비