본문 바로가기

[TI]/TM4C

TM4C123 - UART UART 테스트

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));

}









반응형