用STM8S的SPI接口控制W5500,硬件是没有问题的,硬件复位W5500之后,写入IP地址、掩码。。。之后,能PING通
说明参数已经成功写入了,问题是读W5500总是死机,下面贴出读代码
void SPI_Send_Byte(u8 wByte)
{
volatile u8 i;
SPI->DR = wByte; //写1个字节数据
while((SPI->SR & SPI_FLAG_TXE) == 0x00); //等待发送完毕
while((SPI->SR & SPI_FLAG_RXNE) == 0x00); //等待收到一个字节数据
i = SPI->DR;
}
void SPI_Send_Short(u16 wShort)
{
SPI_Send_Byte((u8)(wShort >>8));
SPI_Send_Byte((u8)(wShort));
}
//读W5500指定通用寄存器的1个字节数据
u8 Read_W5500_CommonReg_1Byte(u16 reg)
{
u8 i;
W5500_SELECT();
{
SPI_Send_Short(reg);
SPI_Send_Byte(COMMON_R | RWB_READ | FDM1);
SPI_Send_Byte(0x00); //发送读数据脉冲
//等待收到数据
while(SPI_GetFlagStatus(SPI_FLAG_RXNE) == 0x00); //?????????总是死在改处
i = SPI->DR;
}
W5500_DESELECT();
return i;
}
上面的代码,程序怎么老是死在?????????处呢,我用这个函数读VERR,就是读W5500的版本信息,最简单的读取动作都读不出来? |