在用上位机烧写好以后,程序配置如下:
EALLOW;
SysCtrlRegs.SCSR = 0x04;//WDRST模式复位。 EDIS;
EDIS;
EALLOW;
SysCtrlRegs.WDCR = 0x002f; //设置预定标器,注意101位!!!
EDIS;
开看门狗,不喂狗使之复位。
关键不是这里,是我网口芯片的配置没有写好。
现在说一下我用的是W5300,然后采用的是中断方式,在数据进行数据交换的时候的配置没有写好。
改好的配置如下。
loopback_tcps(0,5000,data_buf,0);
这是调用自带的demo。
然后下面是我自己改的地方。
if((getSn_SSR(0) & 0x00ff) == 0x1c)
{
disconnect(0);
close(0);
socket(0,Sn_MR_TCP,5000,0);
listen(0);
}
if(((getSn_SSR(0) & 0x00ff) == 0x00))
{
close(0); // close the SOCKET
socket(0,Sn_MR_TCP,5000,0);
listen(0);
}
if(((getSn_SSR(0) & 0x00ff) == 0x1b)||((getSn_SSR(0) & 0x00ff) == 0x18)||((getSn_SSR(0) & 0x00ff) == 0x1d))
{
close(0); // close the SOCKET
socket(0,Sn_MR_TCP,5000,0);
listen(0);
}
if((getSn_SSR(0) & 0x00ff) == 0x13)
{
listen(0);
}
这个是将通信后的寄存器状态改变,不然通信就断了,无法在进行下一次通信。
然后再将对应的寄存器清0,才能进行通信。
|