TI中文支持网
TI专业的中文技术问题搜集分享网站

2812 串口调试问题

#include "DSP281x_Device.h"

#include "DSP281x_Examples.h"

void scia_init(void);

void fifo_init(void);

interrupt void scia_rx_isr(void);

interrupt void scia_tx_isr(void);

char message[]={"this is 2812\n\r"};

void main(void)

{    

   InitSysCtrl();

   EALLOW;

   GpioMuxRegs.GPFMUX.all=0x0030;

   EDIS;

   DINT;

   IER = 0x0000;

   IFR = 0x0000;

   InitPieCtrl();  

   InitPieVectTable();  

   EALLOW;

   PieVectTable.TXAINT=&scia_tx_isr;

   PieVectTable.RXAINT=&scia_rx_isr;

   EDIS;

   PieCtrlRegs.PIEIER9.bit.INTx2=1;

   PieCtrlRegs.PIEIER9.bit.INTx1=1;

   IER|=M_INT9;

   EINT;

   ERTM;

   fifo_init();

   scia_init();

   while(1) {      

   }

}

void scia_init()

{    

   SciaRegs.SCICCR.all =0x0007;  

   SciaRegs.SCICTL1.all =0x0003;

   SciaRegs.SCICTL2.all =0x0003;

   SciaRegs.SCIHBAUD    =0x0001;

   SciaRegs.SCILBAUD    =0x00E7;

   SciaRegs.SCICTL2.bit.TXINTENA =1;

   SciaRegs.SCICTL2.bit.RXBKINTENA =1;

   SciaRegs.SCICCR.bit.LOOPBKENA =0;

   SciaRegs.SCICTL1.all =0x0023;

   //SciaRegs.SCICTL1.bit.SWRESET =1;  

}

void fifo_init()

{

   SciaRegs.SCIFFTX.all =0xE060;

   SciaRegs.SCIFFRX.all =0xE065;

   SciaRegs.SCIFFCT.all =0x0000;

}

interrupt void scia_tx_isr(void)

{

  int i;

  for(i=0;i<16;i++)

    SciaRegs.SCITXBUF=message[i];

  PieCtrlRegs.PIEACK.all=PIEACK_GROUP9;

}

interrupt void scia_rx_isr(void)

{

  int i;

  char buffer[16];

  for(i=0;i<16;i++)

    buffer[i]=SciaRegs.SCIRXBUF.all;

  if(strncmp(buffer,"Texas",5)==0)

  {

    SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;

    SciaRegs.SCIFFTX.bit.TXINTCLR=1;

  }

   SciaRegs.SCIFFRX.bit.RXFIFORESET=0;

   SciaRegs.SCIFFRX.bit.RXFIFORESET=1;

   SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;

   PieCtrlRegs.PIEACK.all=PIEACK_GROUP9;

}

     在串口调试工具里发送Texas,等待dsp发送this is 2812\n\r,但是早调试工具里发送Texas,单步运行时,接收中断始终进不去,何解????

Jones Chen:

1. 如果您的软件调不通过,请尝试改写TI的F281x中的SCI历程。

2. 另外请确认您的硬件SCI串口与PC机之间,有电平转换的芯片。

赞(0)
未经允许不得转载:TI中文支持网 » 2812 串口调试问题
分享到: 更多 (0)