본문 바로가기

[MCU]/CANTUS

[CANTUS EVM] UART테스트

[CANTUS EVM] UART테스트

CANTUS는 8채널의 16450호환 UART가 있다. FIFO도 16Byte가 있고.. 멋지다.



CANTUS에서 UART제어를 위해 Seial.c에 있는 U0_GetByte(), U0_PutByte()를 수정해 주면 된다.  ADChip사에서 제공되는 코드는 너무많은 기능을 제공하려다 보니 오히려 복잡하고 속도도 느려질 수 있다. 그래서 데이터시트를 보고 간단히 작성해 보았다.
#define UART0_LSR   *(volatile unsigned long*)((unsigned long)R_UART0_BASE + UART_LSR) 
#define UART0_URDR   *(volatile unsigned long*)((unsigned long)R_UART0_BASE + UART_RBR)
#define UART0_UTDR   *(volatile unsigned char*)((unsigned long)R_UART0_BASE + UART_THR)

unsigned char U0_GetByte(void)
{
 while((UART0_LSR & ULSR_DRDY))
 {
  return UART0_URDR;
 }

void U0_PutByte(unsigned char Data)
{
 while(!(UART0_LSR & ULSR_TEMP));
 UART0_UTDR = Data;
}



CANTUSPIC32 UART테스트 예제코드
#include "system.h"
#include "serial.h"

int main()
{
 SystemInit();

 Led1Init();
 Led1On();
 
 Led2Init(); 
 Led2Off();

 U0_Init(BAUD_115200);
 DebugPrint("Cantus EVM1\r\n");
 
  while(1)
 {
  if(U0_IsGetByte())
  {
   switch(U0_GetByte())
   {
    case '0':
     DebugPrint("Led1 Off\r\n");
     Led1Off();
     break;
    case '1':
     DebugPrint("Led1 On\r\n");     
     Led1On();
    break;
   } 
  }

반응형