您现在的位置是:首页 >技术教程 >SPI接口协议详解网站首页技术教程
SPI接口协议详解
                简介SPI接口协议详解            
            一、SPI总线简介
SPI总线是摩托罗拉公司开发的一种高速、全双工、同步的通信总线,它通常由四条线组成:
- CS 片选信号
- SCLK 时钟信号
- MOSI 主机输出从机输入接口
- MISO 主机输入从机输出接口
SPI分为主机和从机,主机提供通信所需的时钟信号。
二、SPI四种工作模式
SPI最重要的两个参数分别是时钟的极性(CPOL)和相位(CPHA)。
- CPOL:Clock Polarity 决定时钟空闲状态电平是高电平还是低电平
 CPOL = 0:时钟空闲时为低电平,时钟高电平时有效
 CPOL = 1:时钟空闲时为高电平,时钟低电平时有效
- CPHA:Clock Phase 决定数据传输采样和移位方式
 CPHA = 0 :在时钟信号SCK的第一个跳变沿采样
 CPHA = 1 :在时钟信号SCK的第二个跳变沿采样
时钟和相位的不同组合,形成了SPI的四种工作模式:
| 模式 | CPOL | CPHA | 
|---|---|---|
| Mode 0 | 0 | 0 | 
| Mode 1 | 0 | 1 | 
| Mode 2 | 1 | 0 | 
| Mode 2 | 1 | 1 | 
我们以stm32的spi总线为例:
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9OwUvZlb-1684380768088)(https://note.youdao.com/yws/res/c/WEBRESOURCE6fa0a4da0531edd907132ba7f118eecc)]](https://img-blog.csdnimg.cn/20922cd8903a425a96663fd92adef95d.png)
Mode 0:CPOL为0,CPHA为0时,数据在时钟第一个跳变沿(上升沿)采样;
 Mode 1:CPOL为0,CPHA为1时,数据在第一个跳变沿(下降沿)采样;
 Mode 1:CPOL为1,CPHA为0时,数据在第一个跳变沿(下降沿)采样;
 Mode 1:CPOL为1,CPHA为1时,数据在第一个跳变沿(上升沿沿)采样;
| 模式 | 相位极性 | 采样 | SCL空闲电平 | 
|---|---|---|---|
| Mode 0 | CPOL = 0, CPHA = 0 | 上升沿 | 低电平 | 
| Mode 1 | CPOL = 0, CPHA = 1 | 下降沿 | 低电平 | 
| Mode 2 | CPOL = 1, CPHA = 0 | 下降沿 | 高电平 | 
| Mode 2 | CPOL = 1, CPHA = 1 | 上升沿 | 高电平 | 
SPI slave设备SCL在空闲的时候是高电平还是低电平,决定了CPOL是0还是1。
三、SPI全双工和半双工
在使用stm32等mcu时,SPI通常会有全双工、半双工的选项。所谓全双工就是SPI在发送数据的同时也能够接收数据,所谓半双工就是SPI的发送和接收分时,即发送的时候不能接收数据,接收数据的时候不能发送数据。
四、应用电路
一对一:
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RNS6qVX4-1684380768089)(https://note.youdao.com/yws/res/3/WEBRESOURCEbcfee40b7104f052142da5dfae066243)]](https://img-blog.csdnimg.cn/3c1fcabb7c25436d8fa599d859f17fa5.png)
一对多:
 ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9y2IF3R-1684380768089)(https://note.youdao.com/yws/res/2/WEBRESOURCEb86351644c9f57c7454e667e86b48802)]](https://img-blog.csdnimg.cn/aa936ee91a7048c392259e4984329155.png)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。
        
    
        
     
            




 U8W/U8W-Mini使用与常见问题解决
U8W/U8W-Mini使用与常见问题解决 QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。... stm32使用HAL库配置串口中断收发数据(保姆级教程)
stm32使用HAL库配置串口中断收发数据(保姆级教程) 分享几个国内免费的ChatGPT镜像网址(亲测有效)
分享几个国内免费的ChatGPT镜像网址(亲测有效) Allegro16.6差分等长设置及走线总结
Allegro16.6差分等长设置及走线总结