【车载开发系列】SPI总线通信技术

news2024/10/6 1:37:23

【车载开发系列】SPI总线通信技术

【车载开发系列】SPI总线通信技术

  • 【车载开发系列】SPI总线通信技术
    • 一. 什么是SPI
    • 二. 应用范围
    • 三. 协议特点
      • 1)传输速率
      • 2)主要功能
      • 3)拓扑结构
      • 4)接口配置
    • 四. SPI总线原理
    • 五. 信号列表
    • 六. SPI传输时序
      • 1)模式0
      • 2)模式1
      • 3)模式2
      • 4)模式3
    • 七. 数据交换

一. 什么是SPI

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的,主从结构的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

二. 应用范围

SPI协议主要作为主控芯片去配置外围芯片的接口协议。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
它在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
★PCB(Printed Circuit Board)印刷电路板

三. 协议特点

SPI,是一种高速的,全双工,同步的,主从结构的通信总线。需要说明的是,SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

1)传输速率

SPI总线的传输速率需要自定义,没有具体的规定,一般为:400KHz~10MHz

2)主要功能

实现MCU与各种外接设备连接(芯片与芯片之间的连接),以串行的方式进行数据交换(串并转换)。

3)拓扑结构

一个SPI Master可以通过共享数据线的方式可以连接多个SPI Slave(一主多从);

4)接口配置

作为芯片与芯片之间互连的接口,通过配置寄存器实现主控芯片(SPI Master)对外围芯片(SPI Slave)的配置;

四. SPI总线原理

SPI是一个环形总线结构,遵循主从结构,SPI协议适用于一主多从的工作场景。  SPI通讯需要使用4条线:3条总线和1条片选线,物理连接如下:
在这里插入图片描述
时序其实很简单,主要是在SCLK的控制下,两个双向移位寄存器进行数据交换。

五. 信号列表

SS、SCK、MOSI信号均由主设备产生,MISO信号由从设备产生。在SS为低电平的前提下,MOSI和MISO信号才有效,在每个时钟周期MOSI和MISO传输一位数据。

信号名含义描述
SCKSerial Clock时钟信号线Master设备往 Slave设备传输时钟信号, 同步控制数据交换的时机以及速率
MOSIMaster Ouput SlaveInput、主设备输出从设备输入数据线
MISOMaster Input Slave Ouput、主设备输入从设备输出数据线在Master上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI从设备接收数据
SSSlave Select、从机选择线,低电平有效Master设备片选Slave设备, 使被选中的 Slave设备能够被Master设备所访问

六. SPI传输时序

SPI设备在进行通信的过程中, Master设备和 Slave设备之间会产生一个数据链路回环(Data Loop)。
SPI接口有四种不同的数据传输时序,取决于时钟极性(CPOL)和时钟相位(CPHA)的组合。

No含义描述
1相位(CPHA)表示时钟线空闲时的状态
2极性(CPOL)表示设备从数据线采样的时刻
_CPOL=0CPOL=1
CPHA=0时钟线在空闲时为低电平;在每个周期的第一个时钟沿采样时钟线在空闲时为高电平;在每个周期的第一个时钟沿采样
CPHA=1时钟线在空闲时为低电平;在每个周期的第二个时钟沿采样时钟线在空闲时为高电平;在每个周期的第二个时钟沿采样

1)模式0

CPOL= 0,CPHA=0。SCK串行时钟线空闲时为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换

2)模式1

CPOL= 0,CPHA=1。SCK串行时钟线空闲时为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换

3)模式2

CPOL= 1,CPHA=0。SCK串行时钟线空闲是为高电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换

4)模式3

CPOL= 1,CPHA=1。SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换
在这里插入图片描述
其中比较常用的模式是模式0和模式3。为了更清晰的描述SPI总线的时序,下面展现了模式0下的SPI时序图:
在这里插入图片描述
上图清晰的表明在模式0下,在空闲状态下,SCK串行时钟线为低电平,当SS被主机拉低以后,数据传输开始,数据线MOSI和MISO的数据切换(Toggling)发生在时钟的下降沿(上图的黑色虚线),而数据线MOSI和MISO的数据的采样(Sampling)发生在数据的正中间(上图中的灰色实线)。

七. 数据交换

SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。
一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access)。所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上。
在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界-WEB-catcat-new

前言 .................. 开干 正文 信息收集 有意思 估计是权限不够导致无法访问 我们点击几只小猫看看有什么东西 好的,?File 试试看是否存在任意文件读取 思路 成功,接下来我们尝试获取历史记录 这里补充一下知识点 /proc/self proc是一个伪文件系统,它提…

PDF文档如何统计字数,统计PDF文档字数的方法有哪些?

在平时使用pdf阅读或者是处理文档的时候,常常需要统计文档的字数。pdf在查看文字时其实很简单。 PDF文档是一种常见的电子文档格式,如果需要对PDF文档中的字数进行统计,可以使用以下方法: Adobe Acrobat DC:Adobe Ac…

Linux 防火墙开放端口

启动防火墙服务:systemctl start firewalld 查看防火墙开放端口 :firewall-cmd --list-ports 开放3306端口:firewall-cmd --zonepublic --add-port2375/tcp --permanent 防火墙重启:firewall-cmd --reload

html+css+js气球消除小游戏

气球消除小游戏 消除15个就成功 源码在图片后 点赞加关注&#xff0c;谢谢 左上角的数字显示消除气球的数量 定时随机生成气球 &#x1f388;&#x1f388;&#x1f388; 图片 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset&…

2.3.2 主程序和外部IO交互 (文件映射方式)----IO Client实现

2.3.2 主程序和外部IO交互 &#xff08;文件映射方式&#xff09;----IO Client C实现 和IOServer主要差别&#xff1a; 1 使用Open_Client 连接 2 一定要先打开IOServer&#xff0c;再打开IO_Client 效果显示 1 C 代码实现 1.1 shareddataClient.h 头文件中引用 和sharedd…

0 TMS320F28379D 开坑

开坑原因 最近开始做实验&#xff0c;实验室的主控采用的是F2812FPGA&#xff0c;属于够用但不好用的状态。FPGA用于生成调制信号&#xff0c;DSP完成采样和控制。师兄师姐研究拓扑及调制策略&#xff0c;对驱动数量以及驱动逻辑有比较高的要求&#xff0c;因此不好脱离FPGA&a…

机器学习原理之 -- 支持向量机分类:由来及原理详解

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是统计学习理论的一个重要成果&#xff0c;广泛应用于分类和回归问题。SVM以其高效的分类性能和良好的泛化能力在机器学习领域中占据重要地位。本文将详细介绍支持向量机的由来、基本原理、构建过程及其优缺点。…

【Excel操作】Python Pandas判断Excel单元格中数值是否为空

判断Excel单元格中数值是为空&#xff0c;主要有下面两种方法&#xff1a; 1. pandas.isnull 2. pandas.isna判断Excel不为空&#xff0c;也有下面两种方法&#xff1a; 1. pandas.notna 2. pandas.notnull假设有这样一张Excel的表格 我们来识别出为空的单元格 import panda…

基于Hadoop平台的电信客服数据的处理与分析①项目准备阶段---项目技术预研(技术架构)

任务描述 掌握项目的总体功能&#xff0c;及实现流程。预习项目中所使用到的技术和知识点。 任务指导 一、项目效果展示 二、项目架构 1、总体架构&#xff1a; 2、技术架构 技术清单&#xff1a; 功能 组件 说明 消息中间件Kafka消息队列数据采集Flume日志采集工具存储…

js获取当前浏览器地址,ip,端口号等等

前言&#xff1a; js获取当前浏览器地址&#xff0c;ip&#xff0c;端口号等等 window.location属性查询 具体属性&#xff1a; 1、获取他的ip地址 window.location.hostname 2、获取他的端口号 window.location.port 3、获取他的全路径 window.location.origin 4、获取…

机器学习 C++ 的opencv实现SVM图像二分类的测试 (三)【附源码】

机器学习 C 的opencv实现SVM图像二分类的测试 (三) 数据集合下载地址&#xff1a;https://download.csdn.net/download/hgaohr1021/89506900 根据上节得到的svm.xml&#xff0c;测试结果为&#xff1a; #include <stdio.h> #include <time.h> #include <o…

25.labview数据采集中的读取和写入文本文件和Excel表格文件

①本文将会讲解labview读取和写入文本文件和Excel文件的几种不同方式&#xff0c;讲解程序的基本原理&#xff0c;并提出具体的实施方案&#xff0c;本文内容如下所示。 ②本文文章结束会提供大家 文本和表格读取写入的源程序 &#xff0c;以便于大家学习和使用。 本文中可能用…

商城小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…

HUAWEI MPLS 静态配置和动态LDP配置

MPLS(Multi-Protocol Label Switching&#xff0c;多协议标签交换技术)技术的出现&#xff0c;极大地推动了互联网的发展和应用。例如&#xff1a;利用MPLS技术&#xff0c;可以有效而灵活地部署VPN(Virtual Private Network&#xff0c;虚拟专用网)&#xff0c;TE(Traffic Eng…

昇思第7天

模型训练 模型训练一般分为四个步骤&#xff1a; 构建数据集。 定义神经网络模型。 定义超参、损失函数及优化器。 输入数据集进行训练与评估。 数据集加载 import mindspore from mindspore import nn # 从 MindSpore 数据集包中导入 vision 和 transforms 模块。 # visio…

肝癌-图像分类数据集

肝癌-图像分类数据集 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/18r-JS1FIv6BiyvlqDpUE0w?pwdrw5w 提取码&#xff1a;rw5w 数据集信息介绍&#xff1a; 文件夹 恶性 中的图片数量: 1008 文件夹 良性 中的图片数量: 882 所有子文件夹中的图片总数量: 1…

微软账户和本地账户有什么区别?如何切换登录账户?

Windows 操作系统是目前世界上比较流行的操作系统之一&#xff0c;在使用 Windows 系统的时候都需要我们进行登录&#xff0c;其中我们可以使用微软账户或者本地账户进行登录&#xff0c;那本地账户和微软账户有什么区别&#xff1f;下面就带大家了解一下微软账户和本地账户。 …

请不要在 Vue 中滥用“watch”功能,拜托了!

随着 Vue 3 的 Composition API 风格的普及&#xff0c;使用 watch 的成本越来越低。 现在&#xff0c;我们可以在任何地方使用 watch 来监听响应式数据。随着业务的推进&#xff0c;你可能会在代码中看到大量的 watch。 当你接手修改这些充满 watch 代码时&#xff0c;我相信…

电梯修理升级,安装【电梯节能】能量回馈设备

电梯修理升级&#xff0c;安装【电梯节能】能量回馈设备 1、节能率评估 15%—45% 2、降低机房环境温度&#xff0c;改善电梯控制系统的运行环境&#xff1b; 3、延长电梯使用寿命&#xff1b; 4、机房可以不需要使用空调等散热设备的耗电&#xff0c;间接节省电能。 欢迎私询哦…

使用PID算法实现DAC模拟量输出的快速调节

目录 概述 1 系统框架和算法 1.1 框架结构介绍 1.2 PID算法实现 1.2.1 理论介绍 1.2.2 离散化位置式PID 1.2.3 位置式PID算法 2 STM32Cube 配置项目 2.1 配置参数 2.2 GENERATE项目 3 功能实现 3.1 ADC采样数据功能 3.2 DAC数据转换 3.3 PID相关的调制函数 4 …