我用合众达的SCI测试程序进行SCI 测试时出现一个问题,就是我觉得程序应该是将从上位机发送过去的字符返回来,但我以运行程序,没有从上位机向dsp发送字符就可以从串口调试助手上看到DSP 发送过来一大堆字符。<br />而且即使我把程序停止掉 ,甚至dsp断电,上位机还是老是接收到字符。。不知道是什么原因,哪位大哥帮帮忙。。谢谢!!!<br />代码如下:<br />#include "DSP28_Device.h"<br />unsigned int Sci_VarRx[100];<br />unsigned int i,j;<br />unsigned int Send_Flag;<br /><br />void main(void)<br />{<br /><br /> /*初始化系统*/<br /> InitSysCtrl();<br /><br /> /*关中断*/<br /> DINT;<br /> IER = 0x0000;<br /> IFR = 0x0000;<br /><br /> /*初始化PIE中断*/<br /> InitPieCtrl();<br /><br /> /*初始化PIE中断矢量表*/<br /> InitPieVectTable(); <br /> <br /> /*初始化SCIA寄存器*/<br /> InitSci();<br /> for(i = 0; i < 100; i++)<br /> {<br /> Sci_VarRx = 0;<br /> }<br /> i = 0;<br /> j = 0;<br /> Send_Flag = 0;<br /> <br /> #if SCIA_INT<br /> /*设置中断服务程序入口地址*/<br /> EALLOW; // This is needed to write to EALLOW protected registers<br /> PieVectTable.TXAINT = &SCITXINTA_ISR;<br /> PieVectTable.RXAINT = &SCIRXINTA_ISR;<br /> EDIS; // This is needed to disable write to EALLOW protected registers<br /><br /> /*开中断*/<br /> IER |= M_INT9;<br /> #endif<br /> EINT; // Enable Global interrupt INTM<br /> ERTM; // Enable Global realtime interrupt DBGM<br /><br /> for(;<br /> {<br /> if((SciaTx_Ready() == 1) && (Send_Flag == 1))<br /> {<br /> SciaRegs.SCITXBUF = Sci_VarRx;<br /> Send_Flag = 0;<br /> i++;<br /> if(i == j)<br /> {<br /> i = 0;<br /> j = 0;<br /> }<br /> }<br /> <br /> <br /> #if !SCIA_INT<br /> if(SciaRx_Ready() == 1)<br /> {<br /> Sci_VarRx[j] = SciaRegs.SCIRXBUF.all;<br /> Send_Flag = 1;<br /> j++;<br /> if(j == 100)<br /> {<br /> j = 0;<br /> }<br /> }<br /> #endif<br /> }<br /><br />} <br /><br /><br />//===========================================================================<br />// No more.<br />//===========================================================================<br /><br /><br /><br />void InitSci(void)<br />{<br /> // Initialize SCI-A:<br /> *UART_MODE = 0x44;<br /> <br /> EALLOW;<br /> GpioMuxRegs.GPFMUX.all = 0x0030;<br /> EDIS;<br /> /* loopback 8 bit data */<br /> SciaRegs.SCICCR.all = 0x07;<br /> <br /> SciaRegs.SCICTL1.all = 0x03;<br /> SciaRegs.SCICTL2.all = 0x03;<br /> <br /> SciaRegs.SCIHBAUD = 0x00;<br /> SciaRegs.SCILBAUD = 0xF3;<br /> <br /> SciaRegs.SCICTL1.all = 0x23;<br /> <br /> PieCtrl.PIEIER9.bit.INTx1 = 1;<br /> PieCtrl.PIEIER9.bit.INTx2 = 1;<br /> //tbd...<br /> <br /><br /> // Initialize SCI-B:<br /><br /> //tbd...<br />}<br /><br />/********************************************************************************<br /> name: int SciaTx_Ready(void)<br /> input: none<br /> output: i 1: ready<br /> 0: busy<br />*********************************************************************************/<br /><br />int SciaTx_Ready(void)<br />{<br /> unsigned int i;<br /> if(SciaRegs.SCICTL2.bit.TXRDY == 1)<br /> {<br /> i = 1;<br /> }<br /> else<br /> {<br /> i = 0;<br /> }<br /> return(i);<br />}<br /><br />/********************************************************************************<br /> name: int SciaRx_Ready(void)<br /> input: none<br /> output: i 1: new data<br /> 0: none<br />*********************************************************************************/<br /><br />int SciaRx_Ready(void)<br />{<br /> unsigned int i;<br /> if(SciaRegs.SCIRXST.bit.RXRDY == 1)<br /> {<br /> i = 1;<br /> }<br /> else<br /> {<br /> i = 0;<br /> }<br /> return(i);<br />}<br /><br /><br /> <br />//===========================================================================<br />// No more.<br /> |
|