学者之家电子论坛--打造电子工程师共同致富的平台's Archiver

开发板之家 发表于 2010-1-9 14:18

[求助]eazy2812进行SCIA通讯时遇到问题,急(转)

我在9月8日买了easy2812的开发板。昨天在进行串口SCIA的通讯试验时板子的状态遇到了一些问题,想问一下是怎么回事。邮件的附件里是项目文件夹。
    我在使用SCI_test.c文件进行通讯发送与接收的试验。程序的流程是:1、禁止看门狗  2、采用查询的方式进行通讯处理  3、将波特率设为4800 bps、8为有效字符、不用奇偶校验、一位停止位的通讯格式设置(SysClkout = 150 MHz) 4、使能SCIA  5、向PC端发送“This is a test program!\n”的字符串  6、循环等待PC端向SCIRXBUF发送数据  7、将SCIRXBUF接收到的数据发送至板上LED显示(led地址为0x004100)
    现在出现的情况是:1、向PC端发送“This is ...”字符串,PC接收正常,但紧接着SCIA的RXRDY会显示已有数据接收到,但此时PC端并未向2812的SCIA发送数据  2、读出SCIRXBUF的数据(0x00)后,RXRDY清零,但马上又会置1,这样有产生了一次RXRDY已接收数据 3、第2次将其读出后(数据仍然为0x00),RXRDY为0,但此后无论怎样,PC端发送的数据都不能被2812的SCIA接收,RXRDY始终为0  4、使用其他的方法对SCIA进行了调试,例如使能LOOKBACK,SCIARX的接收状态正确、读出的反馈数据也正确  5、如果只进行SCIA的PC数据接收并将接收接收数据回传给PC的话,只要程序一运行,在未等PC向2812发送数据前,2812便将2个0x00发送到PC了,之后无论PC端如何向2812发送数据,RXRDY始终为0。
    我还使用了随板光盘里的EX11_RS232程序调试,结果情况依然相似:程序已开始运行,未等PC向2812发送数据,2812便将2个0x00发送向了PC,之后RXRDY一直为0,对PC端的数据不响应。
    我把我的工程打包发了过去,不知哪位高手能给看一下,我现在不知道到底是什么原因导致接收不能。
    时间有些急,因为想在最近使用2812进行一个产品的原理样开发,但没想到会遇到串口这样的问题,如能得到解答,将不胜感激:)  谢谢
此致


刚发现,发不上去文件啊

SCItest.c文件附上
#include "F2812_Device.h"                       \\自己改的头文件,其实和DSP28的类似
unsigned char string[] = "This is a test program!\n";
unsigned int * led = ( unsigned int * ) 0x4100;
void main(void)
{
unsigned int index = 0;
unsigned int s;
unsigned int delay;
struct SciVar_Structure SciAParameter = {4800,8,disable,ODD,1,IDLE,disable};    \\这个函数设置SCICCR,并使能发送和接收
DisableWatchDog();
DINT;
IER = 0x0000;
IFR = 0x0000;
DisablePIE;

SysClkInit(10);          //SysClkOut 150MHz

EALLOW;
SysClkCtrlRegs.LOSPCP.bit.LSPCLK = 2;     //LSPCLK  37.5 MHz
SysClkCtrlRegs.PCLKCR.bit.SCIAENCLK = 1;
SysClkCtrlRegs.PCLKCR.bit.SCIBENCLK = 1;
GpioCtrlRegs.GPFMUX.bit.SCIRXDA_GPF5 = 1;
GpioCtrlRegs.GPFMUX.bit.SCITXDA_GPF4 = 1;
EDIS;
SciAInit(150000000,SciAParameter);    //设置SCICCR的函数
while ( string[index] != '\0' )
{
SciACtrlRegs.SCITXBUF.all = string[index];
while ( SciACtrlRegs.SCICTL2.bit.TXEMPTY == 0 );
index++;
}
while (1)
{
delay = 20000;
if (SciACtrlRegs.SCIRXST.bit.RXRDY == 1)
{
s = SciACtrlRegs.SCIRXBUF.all;
* led = s;
}
else
* led = 0xffaa;
while ( delay-- );
}
}

开发板之家 发表于 2010-1-9 14:18

建议你先用随板光盘里的EX11_RS232程序调试,把串口先调通后再调试自己的程序,这样就能避免硬件方面的问题导致你瞎折腾浪费时间了,EX11_RS232程序我们测过应该不会有问题的,

从你所说的现象判断应该是串口干引扰起的,232不通可能是sp3232芯片虚焊,你把3232芯片补焊下试试,不行再把sp3232收发管脚短路让电脑自发自收测测芯片是不是好的

页: [1]

Powered by Discuz! Archiver 7.1  © 2001-2009 Comsenz Inc.

302 Found

302 Found


nginx/1.8.0