本帖最后由 电子人steve 于 2018-5-23 14:19 编辑
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就没办法接收数据;搞了好久了;
产品是物联网用的产品;