关于2812的sci测试程序
我用合众达的SCI测试程序进行SCI 测试时出现一个问题,就是我觉得程序应该是将从上位机发送过去的字符返回来,但我以运行程序,没有从上位机向dsp发送字符就可以从串口调试助手上看到DSP 发送过来一大堆字符。<br />而且即使我把程序停止掉 ,甚至dsp断电,上位机还是老是接收到字符。。不知道是什么原因,哪位大哥帮帮忙。。谢谢!!!<br />代码如下:<br />#include "DSP28_Device.h"<br />unsigned int Sci_VarRx;<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 = 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 />多半是波特率问题
干扰问题!
"甚至dsp断电,上位机还是老是接收到字符"<br /><br />1,有可能是干扰问题,PC RS232的通信线太长<br /><br />2,有可能你将RS232的RX和TX端接线搞反了,要确保PC端RS232的TXD端与DSP的RXD端连接,PC端的RXD端与DSP的TXD端正确连接.多谢,我换一根串口线看看
好,多谢了。我试一试看看。字符显示时接收到的都是乱码,
换了一个串口线还是不行。。。不知道是什么原因啊还有
好像把仿真器的拔下来(热插拔)就可以,接上去后又不断往外发送数据(从串口调试精灵接收端看到)。有人知道吗?
对了,是DSP一上电就会发字符,断电就没有了。接到别人的电脑上也是这样,不知道怎么回事,没有哪位大虾知道啊??自己顶一下!
咋就没有人回复一下呢?都不知道吗?抑或是谁发个正确的sci2812的程序给我看看啊,感激不尽啊!xzl_grame@163.com这个应该不是程序问题!
这个应该不是程序问题,看了你的程序,好像在例程的基础上没有改动!<br />首先看看你的接口有没有搞错。我刚刚用例程试过了,没有问题!所以很有可能是其他原因造成的问题。开关电源的问题
好像遇到过这个问题<br /><br />因为我的仿真器和串口线通过开发板构成了电流的回路。<br /><br />可以换开发板电源插头方向,换其他仿真器试试,电源插头方向怎么换啊?
楼上的说"可以换开发板电源插头方向"是什么意思啊???,仿真器只有一个怎么换啊,搞好了没有
搞好了没有?如果硬件没有问题,软件是不难的。 请问你现在解决了吗?我现在也碰到这种问题了
页:
[1]