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

TMS320C6748: 使用W5500实现UDP通信到电脑

Part Number:TMS320C6748

选用的是SPI0硬件,但是一直配置不成功,下面是相关函数,希望有人帮帮我

UINT32 TEST_spi_flash(void)
{
// UINT32 rtn;
// UINT32 i;

// 管脚复用配置
// RK6748_lpscTransition(PSC0, DOMAIN0, LPSC_SPI0, PSC_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_SPI0, PSC_POWERDOMAIN_ALWAYS_ON,
PSC_MDCTL_NEXT_ENABLE);
GPIOBankPinMuxSet();
// DSP 中断初始化
InterruptInit();
// SPI 初始化
SPIInit();
GPIOINIT();//用gpio模拟了reset
}

void SPIInit(void)
{
unsigned char cs = 0x08;
unsigned char dcs = 0x08;
unsigned int val = SIMO_SOMI_CLK_CS;

SPIReset(SOC_SPI_0_REGS);

SPIOutOfReset(SOC_SPI_0_REGS);

SPIModeConfigure(SOC_SPI_0_REGS, SPI_MASTER_MODE);

SPIClkConfigure(SOC_SPI_0_REGS, 228000000, 1500000, SPI_DATA_FORMAT0);

SPIPinControl(SOC_SPI_0_REGS, 0, 0, &val);

SPIDefaultCSSet(SOC_SPI_0_REGS, dcs);

// 配置 SPI 数据格式
SPIDataFormatConfig(SPI_DATA_FORMAT0);

// 配置 SPI 数据格式及片选信号
SPIDat1Config(SOC_SPI_0_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), cs);

// 映射中断到 INT1
SPIIntLevelSet(SOC_SPI_0_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL);

// 使能 SPI
SPIEnable(SOC_SPI_0_REGS);
}

//我的数据收发函数

uint8_t SPI_ReadWriteByte(uint8_t txData)
{
// while (SPI_I2S_GetFlagStatus(WIZ_SPIx, SPI_I2S_FLAG_TXE) == RESET);
while( HWREG(SOC_SPI_0_REGS + SPI_SPIBUF) & (0x20000000));
SPITransmitData1(SOC_SPI_0_REGS,txData);
while( HWREG(SOC_SPI_0_REGS + SPI_SPIBUF) & (0x80000000));
return SPIDataReceive(SOC_SPI_0_REGS);
}

Shine:

可以先使用SPI内部自环loopback模式,看SPI寄存器的配置有没有问题?

,

q q:

请问自环模式怎么用,我这方面没什么技术经验

,

Shine:

SPIGCR1寄存器里有个LOOPBACK位。可以看一下SPI手册上的2.11.1 SPI Internal Loopback Test Mode (Master Only) https://www.ti.com/lit/ug/sprugp2a/sprugp2a.pdf

,

q q:

配置没有问题了,但是收发函数有问题,怎么写都不能读到W5500正确回码

,

Shine:

请问有量过时序么?看一下时序上是否匹配?

,

q q:

量过了,配置正确了,但是收发函数不对,而且在sendto判断ok里面死循环了

,

Shine:

如果SPI通信这块没问题的话,那要问问W5500厂家是不是芯片的配置问题。

,

q q:

我的读写函数怎么写都不正确,所以会导致死循环,W5500的数据读取也不正确,持续好几天了没有进展,您方便加一下我的联系方式帮我看看代码指导一下嘛

,

Shine:

抱歉,我对W5500这款芯片不熟,所以只能从dsp的角度来回答。

首先,看一下DSP有没有正确地把数据写到W5500里,这些数据是不是能正确地配置W5500并让其正确地工作?

然后看一下W5500给DSP的数据是否正确,DSP这边是否能正确接收?

,

q q:

DSP无法正确写进去也读不出来,读写函数的配置有问题。我之前用的是把发送数据放到SPIDAT1,结束数据放到SPIBUF,但是在接受时常在判断RXEMPTY时死循环,读写出来全是一样的错误信息,后来我用了封装的读写函数,也不正确

,

Shine:

收和发分开来调试,DSP先发,如果时序是正确的,但W5500收不到数据话,要查W5500那边读的时序是否和DSP发的时序匹配。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: 使用W5500实现UDP通信到电脑
分享到: 更多 (0)