SPI通信过程简述:
两根数据线:对应于通信双方的各自数据发送端和接收端
一根时钟线:用于通信的同步
一根NSS线:简单来说其作用是使能
通信过程
双方数据通过时钟的电平边沿保持同步:(SPI只利用了其中一种边沿:即要么上边沿要么下边沿)
因此对于时钟信号来说,最低要求就是要有边沿的变化,而要产生边沿的变化,有多种选择:
当然,通信双方的上述配置要相同
再具体些:
当时钟信号的有效边沿到来时,在MOSI和MISO上发生了如下事情:
MOSI:主发从收
MISO:从发主收
由此完成了一个位数据的交换,接着双方等待下一个有效边沿的到来,如此循环
再具体些:
这里的所谓的“发”,不过是把数据线设置成对应的电平,而“收”就是检测一下数据线的电平。显然,收要在发之后,因此——————>在时钟信号的有效边沿到来前,发送方就要准备好数据(即提前设置数据线的电平),边沿到来时接收方检测一下就行了
主和从的区别是什么?
主:提供时钟信号
NSS详解:
Before:
NSS有两种模式:
- 软件模式:类似于用一个寄存器代表实际的引脚状态
- 硬件模式:实际引脚状态
从设备:
NSS信号为低时才能通信(包括软件和硬件)
主设备:
NSS又分输入和输出模式:
输入:输入模式的作用就是两个字——检测
检测NSS是否为高,若为低表示总线被占用,工作失败,自动切换至从模式(检测对象可为软件模拟引脚或实际引脚,若采用软件,则SSI位作为引脚的模拟就要被置1,官方库中指定mode为SPI_Mode_Maste时就同时设定了SSI为1)
输出:拉低NSS 以片选从设备(此时若配置为软件模式,作用对象是什么?)
其它设置:
关于中断(类似于串口):
原文:http://www.cnblogs.com/2cats/p/3687480.html