28379使用SPI与w5500以太网芯片通信,使用w5500官方驱动库进行移植,在使用SPI读写数据时出现问题,数据可正确发送,但不能正确读取w5500的数据
读写函数如下
uint8_t spi_process(uint8_t dat)
{
uint8_t recvData =0;
while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG!=0); Sp
iaRegs.SPITXBUF=(dat<<8);
while(SpiaRegs.SPISTS.bit.INT_FLAG!=0)
{
recvData = (SpiaRegs.SPIRXBUF)&0xFF;
}
return(recvData); }

在配置w5500mac、ip等基本信息时,已将正确数据发送到w5500的地址里,但当读取时没有正确的数据,不是0就是1,认为是SPI读写函数出现了问题。
void w5500int(void)
{
uint8_t tmp;
uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注册SPI片选信号函数
reg_wizchip_spi_cbfunc(spi_process, spi_process); //注册读写函数
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1)
{
printf("WIZCHIP Initialized fail.\r\n");
while(1);
} /
do{
if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1)
{
printf("Unknown PHY Link stauts.\r\n"); }
}while(tmp == PHY_LINK_OFF);//连接失败
network_init();
}
开始时SPI读写函数分开定义,但查阅资料要求读写函数为一个函数体使用,可结果依旧读取不成功,想知道具体是什么问题,如果SPI读写函数错误,请大家帮忙纠正。
注:
SPI基本配置会影响上述问题吗?
谁能够提供好用的SPI的HAL库函数!
在stm32上可移植成功,现使用DSP28379芯片调试出现问题!
mangui zhang:先测测SPI总线上有没有回读数据如果有再排查SPI配置及函数调用的问题
建议下载controlSUITE参考一下例程
28379使用SPI与w5500以太网芯片通信,使用w5500官方驱动库进行移植,在使用SPI读写数据时出现问题,数据可正确发送,但不能正确读取w5500的数据
读写函数如下
uint8_t spi_process(uint8_t dat)
{
uint8_t recvData =0;
while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG!=0); Sp
iaRegs.SPITXBUF=(dat<<8);
while(SpiaRegs.SPISTS.bit.INT_FLAG!=0)
{
recvData = (SpiaRegs.SPIRXBUF)&0xFF;
}
return(recvData); }

在配置w5500mac、ip等基本信息时,已将正确数据发送到w5500的地址里,但当读取时没有正确的数据,不是0就是1,认为是SPI读写函数出现了问题。
void w5500int(void)
{
uint8_t tmp;
uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注册SPI片选信号函数
reg_wizchip_spi_cbfunc(spi_process, spi_process); //注册读写函数
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1)
{
printf("WIZCHIP Initialized fail.\r\n");
while(1);
} /
do{
if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1)
{
printf("Unknown PHY Link stauts.\r\n"); }
}while(tmp == PHY_LINK_OFF);//连接失败
network_init();
}
开始时SPI读写函数分开定义,但查阅资料要求读写函数为一个函数体使用,可结果依旧读取不成功,想知道具体是什么问题,如果SPI读写函数错误,请大家帮忙纠正。
注:
SPI基本配置会影响上述问题吗?
谁能够提供好用的SPI的HAL库函数!
在stm32上可移植成功,现使用DSP28379芯片调试出现问题!
wenchao li1:
回复 mangui zhang:
多谢您的回复,参考例程过于简单,内部自测收发ok,监视SPI总线上收发数据,可验证发送数据正常,接受数据错误,初步断定还是收发函数问题,待解决!
28379使用SPI与w5500以太网芯片通信,使用w5500官方驱动库进行移植,在使用SPI读写数据时出现问题,数据可正确发送,但不能正确读取w5500的数据
读写函数如下
uint8_t spi_process(uint8_t dat)
{
uint8_t recvData =0;
while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG!=0); Sp
iaRegs.SPITXBUF=(dat<<8);
while(SpiaRegs.SPISTS.bit.INT_FLAG!=0)
{
recvData = (SpiaRegs.SPIRXBUF)&0xFF;
}
return(recvData); }

在配置w5500mac、ip等基本信息时,已将正确数据发送到w5500的地址里,但当读取时没有正确的数据,不是0就是1,认为是SPI读写函数出现了问题。
void w5500int(void)
{
uint8_t tmp;
uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注册SPI片选信号函数
reg_wizchip_spi_cbfunc(spi_process, spi_process); //注册读写函数
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1)
{
printf("WIZCHIP Initialized fail.\r\n");
while(1);
} /
do{
if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1)
{
printf("Unknown PHY Link stauts.\r\n"); }
}while(tmp == PHY_LINK_OFF);//连接失败
network_init();
}
开始时SPI读写函数分开定义,但查阅资料要求读写函数为一个函数体使用,可结果依旧读取不成功,想知道具体是什么问题,如果SPI读写函数错误,请大家帮忙纠正。
注:
SPI基本配置会影响上述问题吗?
谁能够提供好用的SPI的HAL库函数!
在stm32上可移植成功,现使用DSP28379芯片调试出现问题!
wei liu40:
回复 wenchao li1:
同学你好我在做28377与w5500通信,程序没有头绪,您能把程序借我参考一下吗,谢谢了!
TI中文支持网



![TMS320F28379D: 导入例程出现故障Description Resource Path Location Type gmake: *** [gridconnectedinvlclfltr.obj] Error 1 gridConnectedInverterLCLFltr C/C++ Problem-TI中文支持网](https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_C2000_pastedimage1752114958744v1.jpg)