一楼提到的“MISO比EXTI有7--8us的延后”,已经有答案了, 即SCK打开后,STM32的SPI一直在发数据. 同步信号到来时, SPI一次16位的数据移位还没移完, 此时SPI的发送缓冲区为空, 但写SPI1->DR时, 其不马上发送DR的数据,而是把移位寄存器中的余下的几位数据发完后才再发送SPI1->DR中的数据.
主设备的缺省SCK时钟为2M, SPI 最快的发送速率小等于2Mbit. 时序图中: 当同步信号到来时, STM32检测到同步信号后, MISO必须在紧接的16个时钟连续给出16位完整的u16类型数据.(不能是上一次的SPI1 DR中的后几位和本次SPI1 DR中的前几位组成的16位数据).
同步信号及SCK信号由主设备提供. 筒子们帮帮忙啊.
|