This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2538 SSI接口跟W5500芯片的SPI通信问题

Other Parts Discussed in Thread: CC2538, CC2538-SW, Z-STACK

SSI的IO口配置

SysCtrlPeripheralEnable(SYS_CTRL_PERIPH_SSI0);
SSIClockSourceSet(SSI0_BASE,SSI_CLOCK_PIOSC);

IOCPinConfigPeriphOutput(GPIO_A_BASE, GPIO_PIN_2, IOC_MUX_OUT_SEL_SSI0_CLKOUT);
IOCPinConfigPeriphOutput(GPIO_A_BASE, GPIO_PIN_5, IOC_MUX_OUT_SEL_SSI0_TXD);

// IOCPinConfigPeriphOutput(GPIO_A_BASE, GPIO_PIN_3, IOC_MUX_OUT_SEL_SSI0_FSSOUT);
IOCPinConfigPeriphInput(GPIO_A_BASE, GPIO_PIN_4, IOC_SSIRXD_SSI0);
GPIOPinTypeSSI(W5500_SPI_BASE, GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5);
GPIODirModeSet(W5500_SPI_BASE,GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5,GPIO_DIR_MODE_HW);

// IOCPadConfigSet(W5500_SPI_BASE,GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5,IOC_OVERRIDE_PUE);

GPIOPinTypeGPIOOutput(W5500_SPI_CS_PORT,W5500_SPI_CS);
GPIOPinTypeGPIOOutput(W5500_RESET_PORT,W5500_RST);
GPIOPinTypeGPIOOutput(W5500_INT_PORT,W5500_INT);

时钟源用的是SysCtrlIOClockGet();

SPI的子程序

uint8 SPI_SendByte(uint8 byte)
{
uint32 tmp=0;
SSIDataPutNonBlocking(SSI0_BASE,byte);
while(SSIBusy(SSI0_BASE));
SSIDataGetNonBlocking(SSI0_BASE,&tmp);
return (uint8)tmp;
}

从波形图上,只要连上MISO线,W5500的输出数据就不对了;这个波形图是CC2538测试出来的,ZSTACK的版本是HOME1.2.2a;

同样的模块,我原本怀疑W5500模块是不是有问题,所以就又用STM32的芯片测了一下W5500,结果正常,所以只能怀疑CC2538的问题;

求帮忙看下这个是不是哪里配置有问题啊,不连接MISO就没办法接收数据;搞了好久了;

产品是物联网用的产品;