TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28379D与W5500通信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芯片调试出现问题!

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通信,程序没有头绪,您能把程序借我参考一下吗,谢谢了!

赞(2)
未经允许不得转载:TI中文支持网 » TMS320F28379D与W5500通信SPI读写问题
分享到: 更多 (0)