最近自己写了一个SPI双机通信的工程,遇到了点问题。
需求:两块stm32f4的板子通过SPI进行全双工通信,主机可以向从机写入数据或者读取数据。设计方案:
主机写入从机:发送包含实际数据的完整帧,发送完后等待从机的确认字节,完成任务;
主机读取从机:发送包含所要数据的信息的指令帧,从机接收到后准备好包含实际数据的完整帧,在主机的驱动下返回;
主机采用软件片选,从机采用硬件片选。(这一块花了蛮久时间搞懂)
整个机制建立在中断基础上:主机初始化时仅使能接收中断,从机初始化时使能发送接收中断,所以从机初始化后会立即向发送缓冲区填入一个字节。当主机想要发送一帧时,在准备好实际的数据后,使能发送中断就可以将整个帧数据逐字节的发送出去。
问题描述:
初始化时分频系数最低到16可以正常工作,但4和8均会出现丢失数据导致无法正常通信。
主从机代码采用预编译的方式写在同一个工程中,下面贴代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>