【主题】:详细解析FPGA与STM32的SPI通信(一)
【作者】:LinCoding
【时间】:2016.11.26
【声明】:转载、引用,请注明出处
昨天把SPI彻底的又搞了一遍,感觉之前学STM32时学的SPI只是皮毛,这次学习FPGA时候,才真正算是把SPI吃透了。
As we all know, SPI有四种模式,但是STM32与FPGA通信的话推荐使用SPI_CPOL_Low和SPI_CPHA_1Edge这个模式,也就是时钟信号线空闲为低,上升沿采样,因为这样更加适合FPGA进行处理。
使用SPI要注意以下几点:
1、时钟和片选是由主机提供,从机只负责接收。
2、对STM32来说,片选可选用硬件或软件,具体有什么区别请看数据手册。
3、SPI的通信速率不能太快,否则数据会出错。
4、如果进行双工通信的话,主机必须在发送完数据后多发送一个8位数据,笔者通常发送0xFF,这样从机才能将最后一个有效数据发过来,具体原因请百度,不多解释。
先说第一点和第二点:
主机给从机发数据进行单工通信的话很简单,因为时钟和片选是由主机提供的。
但是,从机给主机发数据进行单工通信的时,由于时钟和片选是由主机提供的,主机并不知道从机什么时候给主机发,也就不知道什么时候给从机提供时钟信号和片选信号,当然了,也不会知道从机什么时候已经发完数据,什么时候停止提供时钟信号和片选信号。那这该怎么办?
同样,如果是双工通