본문 바로가기

Hardware/MCU

[28335] DSP 28335 시리얼 통신 SCI 예제 한 번 구동해 보기

지난번에 다운받아 설치한 controlSUITE[바로가기]에 보면 흔히 시리얼 통신이라고 부르는 DSP에서는 SCI 통신이라고 하는 통신을 테스트하는 예제가 있습니다. 한 번 이걸 돌려봤습니다. 사용한 보드는 SMC150보드에 소형 28335보드를 사용했지요~^^

smc150보드의 회로도[바로가기]를 보면 저렇게 D_Sub 단자와 CN6300을 연결해 주어야 합니다.

이렇게 말이죠~~~. 아무튼... 요걸 몰라서 상당히 삽질을.~~ ㅎㅎ 아무튼 하드웨어 연결은 마쳤구요... 예제를 보죠~~ 구동방식은 이미 controlSUITE 설치할 때 이야기 했으니까요^^

#include "DSP28x_Project.h"     

void scia_echoback_init(void);
void scia_fifo_init(void);
void scia_xmit(int a);
void scia_msg(char *msg);

Uint16 LoopCount;
Uint16 ErrorCount;

void main(void)
{
  Uint16 ReceivedChar;
  char *msg;

  InitSysCtrl();
  InitSciaGpio();

  DINT;

  InitPieCtrl();

  IER = 0x0000;
  IFR = 0x0000;

  InitPieVectTable();

  LoopCount = 0;
  ErrorCount = 0;

  scia_fifo_init();	   
  scia_echoback_init();  

  msg = "\r\n\n\nHello World!\0";
  scia_msg(msg);

  msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0";
  scia_msg(msg);

	for(;;)
    {
      msg = "\r\nEnter a character: \0";
      scia_msg(msg);

      while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } 

      ReceivedChar = SciaRegs.SCIRXBUF.all;
      msg = "  You sent: \0";

      scia_msg(msg);
      scia_xmit(ReceivedChar);

      LoopCount++;
    }
}


void scia_echoback_init()
{
 	SciaRegs.SCICCR.all =0x0007;   
  SciaRegs.SCICTL1.all =0x0003;  
  SciaRegs.SCICTL2.all =0x0003;
	SciaRegs.SCICTL2.bit.TXINTENA =1;
	SciaRegs.SCICTL2.bit.RXBKINTENA =1;

  SciaRegs.SCIHBAUD    =0x0001;  
  SciaRegs.SCILBAUD    =0x00E7;

  SciaRegs.SCICTL1.all =0x0023;  
}


void scia_xmit(int a)
{
  while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
  SciaRegs.SCITXBUF=a;
}

void scia_msg(char * msg)
{
    int i;
    i = 0;
    while(msg[i] != '\0')
    {
        scia_xmit(msg[i]);
        i++;
    }
}


void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x204f;
    SciaRegs.SCIFFCT.all=0x0;
}

전체 코드입니다. (주석빼구요~) 에제에서 다룬 각 레지스터의 설명은 TI가 배포하는 SCI관련 Reference Guide[바로가기]가 있습니다 그 중애 SciaRegs.SCIHBAUD와 LBAUD는 

이런 표에 맞춰 입력해주시면 됩니다. 여기서는 9600bps입니다.^^. 아.. 혹시 마땅히 사용할 시리얼 통신용 터미널 프로그램이 없으시다면.... 저랑 조금 아는(^^) 사이의 지인이신 양연구원님께서 배포해주신 프로그램[바로가기]을 사용하는 것도 괜찮을 겁니다.

유용한 기능이 많거든요.^^ 아무튼.. 단독 시리얼 테스트는 해보았네요....

반응형