TI中文支持网
TI专业的中文技术问题咨询交流网站

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

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就没办法接收数据;搞了好久了;

产品是物联网用的产品;

Viki Shi:

请参考CC2538 Foundation Firmware中的SSI例程,地址:http://www.ti.com/tool/cc2538-sw

zhijun wang1:

回复 Viki Shi:

发送都没啥问题,就是接收很奇怪,连接和不连接MISO,接收的数据就是不一样,我是参考SWRU325A.pdf里面的API来做的,但是,没啥效果,试了各种方法,就是不行,只要连着,每次接收的数据都不是一样的,感觉是2538的MISO管脚配置错了,但是该配置的都配置过了,不该配置的也都试过了,没啥用,网上找了好多配置方法也试过了,都没啥用;有没有推荐的配置方法,我再试试;反正只要不插MISO线都是好的,插了就不行了 。

zhijun wang1:

回复 miffy:

5脚是发送脚吧,发送没问题啊,发送完全正常,就是接收也就是第四脚,看了下代码,都没有用到GPIO4的,除了我自己的程序,应该是没用到才对,这个接口默认好像就是给SPI用的样子,程序版本的原始版本是官网下载的 ZSTACK HOME 1.2.2A

zhijun wang1:

回复 miffy:

我测了一下,更换成其他PORT口,还是一样的现象,跟GPIO被占用应该是没关系,应该不可能全部都被用了吧

qian wang6:

回复 zhijun wang1:

请问您的问题解决了吗,我也遇到了同样的问题,您是怎么解决的

miffy:

回复 qian wang6:

Z-Stack里面的IO口的配置,不在同一个地方,所以很混乱。

必须确保同一个IO口不能在不同的地方配置为不同的功能,否则就会出问题。

qian wang6:

回复 miffy:

您好,谢谢您的回复,我是用的协议栈是Z-Stack Home1.2.2a, MISO引脚配置为PC6脚,我检测协议栈中没有用到该引脚的地方,请问您知道哪里用到了这个引脚吗?

miffy:

回复 qian wang6:

你最好用示波器抓一下MISO的信号,看看高电平是否能到3.3V,低电平是否能到0V,另外看一下clock脚的波形

qian wang6:

回复 miffy:

MISO上始终为低电平,无3.3V输出,CLK,CS,MOSI上数据均正常,请问这是什么原因导致的

赞(0)
未经允许不得转载:TI中文支持网 » CC2538 SSI接口跟W5500芯片的SPI通信问题
分享到: 更多 (0)