我用TM4C129X的SPI和其它单片机进行SPI通信,使用TM4C129的SSI0,引脚配置如下:
GPIOPinConfigure(GPIO_PA2_SSI0CLK);
GPIOPinConfigure(GPIO_PA3_SSI0FSS);
GPIOPinConfigure(GPIO_PA4_SSI0XDAT0); //TX
GPIOPinConfigure(GPIO_PA5_SSI0XDAT1); //RX
问题是:
当129作为主机的时候,TX与单片机的MOSI引脚相接,RX与单片机的SIMO引脚相接的时候可以正常发送数据。
但是如果129被配置为从机的时候,他的DATA0 也就是TX引脚的功能还是发送,并没有自动变成接收,而另外一个单片机被
配置成主机的时候,那个输入引脚的功能已经自动变成输出了,这样就得对接线进行调整才能正常接收数据。不方便进行软件的主从机切换。
是不是我129的配置有问题,应该配置成哪种模式才能自动切换输入输出功能呢?
请指教 谢谢。
xyz549040622:
这个还真心没有试过主从机的切换,还有一种可能,TM4C就不支持这样的模式。你试试切换为从机的时候,停止SPI,手动配置IO的输出输入模式试试。你另一个单片机是什么单片机呢?
yuan zhang5:
回复 xyz549040622:
现在的问题是,TM4C129的 SSI 的DATA0的功能在传统模式下被定死为接收功能,DATA1被定死为发送功能,即使切换主从他们还是原来的功能,并不能像传统SPI那样做主机和做从机的时候自动切换引脚功能,这就让我没办法切换主从。
另外一个单片机我是用STM32做实验的。这上面的SPI是很通用的SPI,SIMO,MOSI那种切换主从的时候功能也会自动切换。
xyz549040622:
回复 yuan zhang5:
这个确实没有试过,TM4C129x的SPI支持三种模式
Bi-SSI mode (0x1)■ Quad-SSI mode (0x2)■ Advanced SSI mode (0x3)
你试着这三种模式都配置下试试。看看是否都是这种情况呢?