spi是全双工通讯,收发同时进行。这句话怎么理解?
如上图所示:主机产生一组时钟信号,并通过mosi输出8位数据。这个时候,虽然从机没有返回数据(持续低电平),但是因为是 收发同步,所以此时主机已经采集了此次的miso数据。
就是说,无论你的目的是发送还是接受,每产生一组时钟信号,就会发送一组数据同时接受一组数据。
时钟信号由主机产生,从机回复数据需要通过主机发送数据产生的时钟信号。
所以,如上图所示,共两组数据。从机回复数据时,可以通过主机随便发一个无效的数据过来。
stm32库用总是有发送和接受两个函数,单独调用接收函数,并不会产生时钟信号。所以,想要接收还得靠发送数据产生时钟信号。
2023.02.14:单独调用下面两个函数其一 都会产生一个时钟信号。
HAL_SPI_Transmit(&hspi1, ®, 1, 1000);
HAL_SPI_Receive(&hspi1, &data, 1, 1000);
如果使用:下面的收发一体函数 只能产生一个时钟信号
HAL_SPI_TransmitReceive(&hspi1, ®, &data, 1, 1000);
STM库 两个时钟信号之间间隔有3.5us