본문 바로가기

[FreeScale]/KINETIS

[FRDM-KL25Z] Kinetis - UART 테스트

[FRDM-KL25Z] Kinetis - UART 테스트

K25의 UART는 일반 UART 2채널과 low power UART module 1채널로 구성되어 있다.

FRDM-KL25Z 보드에는 JATG및 UAB2UART 보드가 내장되어 있다. JTAG 보드에서 가상 UART를 지원하므로 별도의 USB2UART 모듈 필요없이 시리얼 포트 제어가 가능하다. 장치관리자에서 가상 시리얼 포트 번호 확인 가능하다.

(이런면에서 정말 저렴한 개발보드인것을 다시 한번 느끼게 된다.)

시리얼 포트는 FRDM-KL25Z 보드에 PA1(RXD), PA2(TXD)로 연결되어 있다.






기본 예제코드에 UART를 위한 드라이버 함수가 제공되지만 Kenetis 시리즈의 전체적인 구조를 파악하기 위해서 데이터시트의 레지스터를 보면서 로레벨 함수를 만들어 보는것도 중요한 일이라 정리해 보았다.







MKL25Z UART 초기화 코드

//------------------------------------------------------------------------------

// Serial Prot0 Utility Fuction Routine

void U0_Init(unsigned char baud)

{

//UART Port 초기화

// Enable the UART_TXD function on PTA1 

PORTA_PCR1 = PORT_PCR_MUX(0x2);


// Enable the UART_TXD function on PTA2 

PORTA_PCR2 = PORT_PCR_MUX(0x2);


// select the PLLFLLCLK as UART0 clock source

SIM_SOPT2 |= SIM_SOPT2_UART0SRC(1); 


SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;

UART0_C2_REG(UART0_BASE_PTR) &= ~(UART0_C2_TE_MASK | UART0_C2_RE_MASK );


//Configure the uart for 8-bit mode, no parity 

//We need all default settings, so entire register is cleared

UART0_C1_REG(UART0_BASE_PTR) = 0;


//UART Baudrate 설정

U0_SetBaud(baud);

}




MKL25Z UART 송수신 함수

unsigned char U0_GetByte(void)

{

//데이터가 수신되면

while (!(UART_S1_REG(UART0_BASE_PTR) & UART_S1_RDRF_MASK));


//데이터 읽어옴

return UART_D_REG(UART0_BASE_PTR);

}


void U0_PutByte(unsigned char Data)

{

      //송신 FIFO가 비어지면

      while(!(UART_S1_REG(UART0_BASE_PTR) & UART_S1_TDRE_MASK));

    

      //데이터 전송

      UART_D_REG(UART0_BASE_PTR) = Data;

}


반응형