我买了个SPI接口的网口模块,用STM32硬件SPI搞成功了。
现在我想用新定义板子RD8T36P48驱动,老是不成功。
有两个问题:
1.读写寄存器:
Write_W5500_1Byte(0x0001,192);
temp=Read_W5500_1Byte(0x0001);
正常应该读出192,可是我读出的是0xff。
2.
/*******************************************************************************
* 函数名 : Detect_Gateway
* 描述 : 检查网关服务器
* 输入 : 无
* 输出 : 无
* 返回值 : 成功返回TRUE(0xFF),失败返回FALSE(0x00)
* 说明 : 无
*******************************************************************************/
unsigned char Detect_Gateway(void)
{
unsigned char ip_adde[4];
ip_adde[0]=IP_Addr[0]+1;
ip_adde[1]=IP_Addr[1]+1;
ip_adde[2]=IP_Addr[2]+1;
ip_adde[3]=IP_Addr[3]+1;
//检查网关及获取网关的物理地址
Write_W5500_SOCK_4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值
Write_W5500_SOCK_1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式
Write_W5500_SOCK_1Byte(0,Sn_CR,OPEN);//打开Socket
Delay(5);//延时5ms
if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
{
Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
return FALSE;//返回FALSE(0x00)
}
Write_W5500_SOCK_1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式
do
{
u8 j=0;
j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
if(j!=0)
Write_W5500_SOCK_1Byte(0,Sn_IR,j);
Delay(5);//延时5ms
if((j&IR_TIMEOUT) == IR_TIMEOUT)
{
return FALSE;
}
else if(Read_W5500_SOCK_1Byte(0,Sn_DHAR) != 0xff)
{
Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//关闭Socket
return TRUE;
}
}while(1);
}
老是进到打开不成功,关闭Socket。真郁闷! |