高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-2
|
感谢大家
我利用咱们野火W5500开发模块,程序我现在将STM32的TCPS程序,修改成IAP15w4k61单片机的连接程序,我测试了下,但是有时是好的,有时回来的是乱码,我已经不知道去哪找问题了。大家帮我分下吧,一些关键的程序部分我一点没有修改,只是修改了SPI通讯部分
我想下面修改应该是对的吧,不然也不会时好时坏吧
/*
**************************************************************************************************
* @file w5500_conf.c
* @author WIZnet Software Team
* @version V1.0
* @date 2015-02-14
* @brief 配置MCU,移植W5500程序需要修改的文件,配置W5500的MAC和IP地址
**************************************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include"w5500_conf.h"
#include"w5500.h"
#include"spi.h"
/**
*@brief 写入一个8位数据到W5500
*@param addrbsb: 写入数据的地址
*@param data:写入的8位数据
*@return 无
*/
void IINCHIP_WRITE( uint32 addrbsb, uint8 dataa)
{
WIZ_SCS=0;//置W5500的SCS为低电平
SPI_Send_Byte( (addrbsb & 0x00FF0000)>>16);// 写入地址段高8位Address byte 1
SPI_Send_Byte( (addrbsb & 0x0000FF00)>> 8);// 写入地址段低8位Address byte 2
SPI_Send_Byte( (addrbsb & 0x000000F8) + 4);//以写模式写入控制段
SPI_Send_Byte(dataa);
WIZ_SCS=1; //置W5500的SCS为高电平
}
/**
*@brief 从W5500读出一个8位数据
*@param addrbsb: 写入数据的地址
*@param data:从写入的地址处读取到的8位数据
*@return 无
*/
uint8 IINCHIP_READ(uint32 addrbsb)
{
uint8 dataa = 0;
WIZ_SCS=0;//置W5500的SCS为低电平
SPI_Send_Byte( (addrbsb & 0x00FF0000)>>16);// 写入地址段高8位Address byte 1
SPI_Send_Byte( (addrbsb & 0x0000FF00)>> 8);// 写入地址段低8位Address byte 2
SPI_Send_Byte( (addrbsb & 0x000000F8)) ;//以读模式写入控制段
dataa = SPI_Read_Byte(); // 写入数据段
/*SPI主从接口相当于一个循环串行移位寄存器,
主机(STM32)发送数据 0×00,从机(W5500)就会接手0×00,
并移数据到主机当中,该函数返回值就是读的数据*/
WIZ_SCS=1; //置W5500的SCS为高电平
return dataa;
}
/**
*@brief 向W5500写入len字节数据
*@param addrbsb: 写入数据的地址
*@param buf:写入字符串
*@param len:字符串长度
*@return len:返回字符串长度
*/
uint16 wiz_write_buf(uint32 addrbsb,uint8* buf,uint16 len)
{
uint16 idx = 0;
WIZ_SCS=0;//置W5500的SCS为低电平
SPI_Send_Byte( (addrbsb & 0x00FF0000)>>16);
SPI_Send_Byte( (addrbsb & 0x0000FF00)>> 8);
SPI_Send_Byte( (addrbsb & 0x000000F8) + 4);
for(idx = 0; idx < len; idx++)
{
SPI_Send_Byte(buf[idx]);
}
WIZ_SCS=1; //置W5500的SCS为高电平
return len;
}
/**
*@brief 从W5500读出len字节数据
*@param addrbsb: 读取数据的地址
*@param buf:存放读取数据
*@param len:字符串长度
*@return len:返回字符串长度
*/
uint16 wiz_read_buf(uint32 addrbsb, uint8* buf,uint16 len)
{
uint16 idx = 0;
WIZ_SCS=0;//置W5500的SCS为低电平
SPI_Send_Byte( (addrbsb & 0x00FF0000)>>16);
SPI_Send_Byte( (addrbsb & 0x0000FF00)>> 8);
SPI_Send_Byte( (addrbsb & 0x000000F8));
for(idx = 0; idx < len; idx++)
{
buf[idx] = SPI_Read_Byte();
}
WIZ_SCS=1; //置W5500的SCS为高电平
return len;
}
利用wireshark抓包出现个IPA,搞不懂这是什么
我以没办法找出问题,特来请教各位。谢谢啦
|
|