TM4C123 - UART UART 테스트
TM4C123 UART 특징
Tiva TM4C123FH6PM의 UART의 특징은 아래와 같다.
눈여겨 볼 만한 사항으로 64핀 패키지에서도 8채널 UART를 사용할 수 있고 485모드, 가변 FIFO 등등을 들수 있을것 같다.
- 8Ch UART
- Programmable baud-rate generator allowing speeds up to 5 Mbps , 10 Mbps
- FIFO trigger levels of 1/8, 1/4, 1/2, 3/4, and 7/8
- Separate 16x8 transmit (TX) and receive (RX) FIFOs
- IrDA serial-IR (SIR) encoder/decoder providing
- EIA-485 9-bit support
64핀 패키지에서 최대 8채널을 사용할 수 있다.
아래와 같이 8채널 할당이 가능하다.
TM4C123 UART블록도
TM4C123 UART 초기화 함수
void U0_Init(unsigned char baud)
{
// Enable the GPIO Peripheral used by the UART.
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
// Enable UART0
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
// Configure GPIO Pins for UART mode.
ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
// Use the internal 16MHz oscillator as the UART clock source.
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
U0_SetBaud(baud);
}
TM4C123 UART 송수신 함수
UARTFR 레지스터를 확인해서 처리해주면 된다.
void U0_PutByte(unsigned char Data)
{
// Wait until space is available.
while(HWREG(UART0_BASE + UART_O_FR) & UART_FR_TXFF)
{
}
HWREG(UART0_BASE + UART_O_DR) = Data;
}
unsigned char U0_GetByte(void)
{
// Wait until a char is available.
while(HWREG(UART0_BASE + UART_O_FR) & UART_FR_RXFE)
{
}
return(HWREG(UART0_BASE + UART_O_DR));
}