SPI通信协议

ops/2024/10/11 7:35:13/

目录

SPI%E7%AE%80%E4%BB%8B-toc" style="margin-left:0px;">一、SPI简介

二、寻址方式

三、通信过程

SPI%E8%AE%BE%E5%A4%87%E6%97%B6%E9%92%9F-toc" style="margin-left:0px;">四、SPI设备时钟

五、极性和相位

5.1 CPOL=0,CPHA=0

5.2 CPOL=0,CPHA=1

5.3 CPOL=1,CPHA=0

 5.4 CPOL=1,CPHA=1


                                                                       🌈你好呀!我是 程序猿

                                                                   🌌 2024感谢你的陪伴与支持 ~

                                                🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!


SPI%E7%AE%80%E4%BB%8B">一、SPI简介

        SPI(Serial Peripheral Interface),全称是“串行外围接口”,是由Motorola公司推出的一种高速全双工同步的串行的总线协议。SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4跟线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、SS/CS(片选);SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议。

二、寻址方式

        当主设备要和从设备进行通信时,主设备需要先将对应的从设备的片选线CS/SS上发送使能信号,即将对应从设备连接的CS管脚拉高或者拉低,表示选中的该从设备。

        使能信号为高电平还是低电平根据从机而定。

三、通信过程

        通信原理:SPI主设备和从设备都有一个串行移位寄存器,主设备通过向它的SPI串行寄存器写入一个字节来发起一次传输。

        SPI数据传输时先发高位后发低位,例如发送0xAA (10101010B),先发送高位1,发送顺序为 :1 0 1 0 1 0 1 0;
        数据线的高电平表示逻辑 1,低电平表示逻辑 0;
        SPI一个字节传送完成后,无需应答即可开始下一个字节的发送;
        SPI采用同步方式工作,时钟线在上升沿或者下降沿时发送器向数据线上发送数据,紧接着在下降沿或者上升沿时接收器从数据线上读取数据,完成一个数据的传输,8个时钟周期完成一个字节的数据传输。

SPI%E8%AE%BE%E5%A4%87%E6%97%B6%E9%92%9F">四、SPI设备时钟

        SPI时钟特点主要包括:时钟速率、时钟极性和时钟相位三方面。
        时钟速率SPI总线上的主设备必须在通信开始时候配置并生成相应的时钟信号。从理论上讲,只要实际可行,时钟速率就可以为任何速率,当然这个速率受限于每个系统能提供多大的系统时钟频率,以及最大的SPI传输速率。
        时钟极性:根据硬件制造商的命名规则不同,时钟极性通常写为CKP或CPOL。时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据。
        时钟相位 :根据硬件制造商的不同,时钟相位通常写为CKE或CPHA。顾名思义,时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿。

五、极性和相位

        既然是进行数据传输,双方就要明确从机在什么时刻去采样主机发出的数据,主机在什么时刻去读取从机发来的数据。对于STM32等MCU自带的硬件SPI外设来说,可能没有那么重要,只需要配置一下模式就行了,但是对于使用使用GPIO模拟或者FPGA来实现SPI的时序,这一点是非常重要的,这就涉及到SPI标准协议的工作模式了,通过CPOL(Clock Polarity)时钟极性和CPHA(Clock Phase)时钟相位的不同组合,可以分为4种工作模式。

一般从机器件的工作模式是固定的,主机需要采用一样的工作模式,双方才能正常“交流”。

        SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素。

        CPOL表示SCLK空闲时的状态:

                CPOL=0,空闲时SCLK为低电平;

                CPOL=1,空闲时SCLK为高电平;

        CPHA表示采样时刻:

                CPHA=0,每个周期的第一个时钟沿采样;

                CPHA=1,每个周期的第二个时钟沿采样。

5.1 CPOL=0,CPHA=0

        SPI mode0CPOL=0表示时钟信号的空闲状态为低电平,CPHA=0表示数据在上升沿采样,并且数据在时钟信号的下降沿移出。

5.2 CPOL=0,CPHA=1

        SPI模式1,CPOL=0表示时钟信号的空闲状态为低电平,CPHA=1表示数据在下降沿采样,并且数据在时钟信号的上升沿移出。

5.3 CPOL=1,CPHA=0

        SPI模式2CPOL=1表示时钟信号的空闲状态为高电平,CPHA=0表示数据在下降沿采样,并且数据在时钟信号的上升沿移出。

 5.4 CPOL=1,CPHA=1

        SPI模式3,CPOL=1表示时钟信号的空闲状态为高电平;CPHA=1表示数据在上升沿采样,并且数据在时钟信号的下降沿移出。

期待批评指正,共同进步~


http://www.ppmy.cn/ops/93066.html

相关文章

怎样才算精通 Excel?

最强AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 高赞回答很系统,但普通人这么学,没等精通先学废了! 4年前,我为了学数据分析&#…

无人机防炸宝典!!

四种易炸环境,你必须知道 避免在GPS信号不好的环境内飞行 在GPS信号弱或不稳定的环境中,无人机可能无法准确判断自身位置,导致飞行不稳定,甚至失控坠机。 注意细小物体 例如:树枝,电线等,这些细小物体往往…

Selenium + Python 自动化测试08(截图)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了滑块的操作方法,本篇文章我们讲述一下截图的操作方法。希望能够帮到爱学的小伙伴。 在实际的测试项目组中我们经常要截屏保存报错信息&#xff0c…

免费【2024】springboot 甘肃旅游工艺品商城的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

8.8 哈希表简单 1 Two Sum 141 Linked List Cycle

1 Two Sum class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {//给的target是目标sum 要返回vector<int> res(2,0);是在num中找加数//首先假设每个输入都是由唯一的结果&#xff0c;而且不适用相同的元素两次一共有n*(n-1)种…

1.mysql-DDL-数据库操作

DDL-数据库操作定义语言 DML-数据库操作语言 DCL-数据库控制语言 DQL-数据库查询语言 DDL-数据库操作 DDL-数据库操作- 查询 查询所有数据 SHOW DATABASES;查询当前数据库 SELECT DATABASE();DDL-数据库操作- 创建 CREATE DATABSE [IF NOT EXISTS] 数据库名 [ DEFAULT CHA…

c++_游戏_狼人杀

思路主要包括以下几个部分&#xff1a; 角色分配&#xff1a;代码中通过随机数的方式给狼人、平民、预言家和法师等角色进行分配&#xff0c;保证每个角色的数量和身份的随机性。 游戏进行&#xff1a;根据狼人、平民、预言家和法师等角色的身份&#xff0c;游戏进行了夜晚和白…

CSS的重绘和重排是什么?

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注。个人知乎 在CSS中&#xff0c;元素的某些属性的变化会触发浏览器的重绘&#xff08;Repaint&#xff09;或重排&#xff08;Reflow&#xff0c;也称为重渲染或回流&#xff09;。了解这些差异可以帮助开发同学优…