概述
数据传输
要开始SPI通信,主机必须发送时钟信号,并通过使能CS信号选择从机。片选通常是低电平有效信号。 SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送数据。在SPI通信期间,数据的发送(串行移出到MOSI/SDO总线上)和接收(采样或读入总线MISO/SDI上的数据)同时进行,通常都是MSB位先传输。串行时钟沿同步数据的移位和采样。 SPI接口允许用户灵活选择时钟的上升沿或下降沿来采样和/或移位数据。
时钟极性和相位
SPI通信中,主机可以选择时钟极性和时钟相位,可以将工作模式分为4种。
- CPOL:Clock Polarity 决定时钟空闲状态电平是高电平还是低电平
1=时钟空闲时为高,时钟低电平有效
0=时钟空闲时为低,时钟高电平有效 - CPHA:Clock Phase 决定数据传输采样和移位方式
1=数据采样发生在时钟偶数(2,4,6,…,16)边沿(包括上下边沿)
0=数据采样发生在时钟奇数(1,3,5,…,15)边沿(包括上下边沿)
根据这种分配,4种SPI工作模式如下所示:
SPI模式 | CPOL | CPHA | 空闲状态时钟极性 | 采样/移位时钟相位 |
---|---|---|---|---|
0 | 0 | 0 | 低电平 | 上升沿采样下降沿移位 |
1 | 0 | 1 | 低电平 | 上升沿移位下降沿采样 |
2 | 1 | 0 | 高电平 | 上升沿移位下降沿采样 |
3 | 1 | 1 | 高电平 | 上升沿采样下降沿移位 |
时序
以下是4种工作模式下的通信示例,在这些示例中,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样边沿用橙色虚线表示,移位边沿用蓝色虚线表示。 请注意,这些图形仅供参考。要成功进行SPI通信,用户须参阅产品数据手册并确保满足器件的时序规格。
-
模式0:
-
模式1:
-
模式2:
-
模式3:
注:
- SPI是一个很开放的接口,指令解析、帧大小、LSB/MSB(Least Significant Bit/Most Significant Bit)、传输速率等规则并没有一个完善的定义,不同的SPI设备在这些方面的定义会有不同。
- 不同SPI芯片,每次连续传输的数据量的大小(取决于MASTER、SLAVE中缓存最小的那个)常常不同。当一次连续通讯的的数据量超过帧的大小时,会出现数据丢失的现象。所以,每完成1帧的传输后,MASTER会停止接口时钟输出,master、slave读取处理收到的数据,然后进行下一帧的传输。
- 在SPI接口协议中,并没有中断的定义,但是实际应用中,我们可以使用接口中断提高接口通讯速度。比如SLAVE是负责数据数据加解密的,MASTER下发一组明文给SLAVE加密,如果此时有个SLAVE输出到MASTER的中断信号,那么MASTER可以清楚的知道何时SLAVE完成了数据处理并读出处理结果,不必通过查询一遍遍的等待结束。
参考
1. Serial Peripheral Interface - wikipedia
2. TI数字接口(续)— SPI 总线
3. Sparkfun-Serial Peripheral Interface (SPI)
4. SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)
5. SPI详解
6. SPI Block Guide V04.01
最后
以上就是爱听歌毛衣为你收集整理的SPI详解(二)的全部内容,希望文章能够帮你解决SPI详解(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复