刚才用逻辑分析仪做了测试
时序如下 https://i-blog.csdnimg.cn/blog_migrate/db5302cb71043b8ab0c1072cf8e08e0a.gif 反复试验,发现SPI_NSS引脚的自动硬件控制与想象的不同,无论是否外加上拉,只要一使能SPI,SPI_Cmd(SPI1, ENABLE); SPI_NSS引脚就一直处于低电平,直到SPI_Cmd(SPI1, DISABLE);这个需要用程序来控制。 而用过其他芯片则是发送完成自动会拉高,这点是要注意的 我说的就是做主机的时候 SPI_SSOutputCmd(SPIx,ENABLE) 在soft模式时这句话有必要吗?我的理解是当hard模式,需要multimaster的时候,才应该要开启这个output功能,这点从我的截图上可以看出。 我觉得,这里只要把SPI_InitStructure.SPI_NSS = SPI_NSS_Soft 写上,然后把对应的IO管脚设置成输出,再用 GPIO_ResetBits去拉低选择slave,通信结束后再用GPIO_SetBits去拉高告诉slave通信结束就可以了,和SPI_SSOutputCmd(SPIx,ENABLE)没有关系。 |