我想用MOSI、SCK实现两个STMS103之间的通信,软件切换主从模式,主模式只发送,从模式只接受
单片机1检测到单片机2连上(通过拉低一个IO口电平实现)则主动发送读取单片机2内部ID,单片机2接到读取命令返回ID数组
通信上之后,单片机1还会发送其他命令让单片机2动作,单片机2接到命令解析,如有长时间的动作则返回接受OK的包,同时做相关动作,动作完成后主动切换到主模式发送动作结果
测试发现,两个单片机通信上之后,如果是发送简单命令(单片机1发送命令,单片机2收到明了后马上切换为主模式发送OK包)基本都能通信成功
但单片机1发送命令(命令发完后立即切换到从模式接受状态),单片机2发送接受OK包后动作(也会切换到从模式),执行动作完成后再切换为主模式发送结果会有很大概率成功不了
同时单片机2断电后上电也有一定概率收不到单片机1的读取ID命令,而且单片机1循环发送都不能成功
切换过程,先检查SPI_BUSY位,发现这个位有可能一直为1,后来我加了一定超时,超时后强行关闭SPI,再切换模式,还是不能成功,搜了一下之前也有些帖子谈论SPI_BUSY位,但没有实际的解决方案。
恳请ST单片机高手或ST的技术支持帮忙解答,不甚感激!
|