单片机通信协议(1):SPI简介

关于SPI

SPI(串行外设接口)是板载设备间通信接口之一。它是由摩托罗拉公司(飞思卡尔半导体)推出的。由于其简单性和通用性,它被纳入各种外围设备中,并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC的两线多,但传输速率可以升至20 Mbps或更高,具体取决于设备的能力(比IIC快5-50倍)。因此,它主要用于需要尽可能高数据传输速率的应用,ADC、DAC或通信IC。

SPI的结构

在这里插入图片描述

SPI的基本结构如上图所示。主设备和从设备通过SCLK(串行时钟)、MISO(主输入从输出)和MOSI(主输出从输入)三个信号线连接,两个8位移位寄存器的内容为与主设备驱动的移位时钟交换。另外,除上述三个之外的SS(从机选择)信号用于同步数据包或字节边界的开始,并用于同时实现多从机配置。大多数从机设备为 SPI 接口分配不同的引脚名称,例如 DI、DO 和 CS。对于单向传输器件,例如DAC和单通道 ADC,可以省略任一数据线。数据位首先以 MSB 方式移位。

当将一些从属设备连接到 SPI 时,从属设备并行连接,主设备的CS信号连接到每个从属设备。由CS信号选择的从属设备的数据输出被启用,而未选择的设备与MISO 断开连接。

SPI的传输时序

对于SPI,数据移位和数据锁存分别在相反的时钟沿进行,移位和锁存操作分开可以避免两个操作之间的关键时序,从而减轻芯片设计和电路板设计的时序考虑。但另一方面,由于时钟极性和时钟相位的组合,存在四种操作模式,主设备必须将其SPI接口配置为从设备所需的SPI模式。

模式0

时钟极性(CPOL)为0,时钟相位(CPHA)为0,SCK在空闲状态时为低电平,数据的采样和传输分别发生在SCK的上升沿和下降沿。即正脉冲,锁定,然后移位,如下图:

在这里插入图片描述

模式1

时钟极性(CPOL)为0,时钟相位(CPHA)为1,SCK在空闲状态仍保持低电平,但是数据的采样和传输分别发生在SCK的下降沿和上升沿。即:正脉冲,先移动,然后锁定,如下图:

在这里插入图片描述

模式2

时钟极性(CPOL)为1,时钟相位(CPHA)为0,SCK信号在空闲状态时为高电平,数据在SCK的下降沿被采样,并在上升沿传输。即:负脉冲,锁定,然后移动。如下图:
在这里插入图片描述

模式3

时钟极性(CPOL)为1,时钟相位(CPHA)为1,SCK在空闲状态为高电平,与模式2相反,数据在SCK的上升沿被采样,在下降沿进行传输。即:负脉冲。移位,然后锁存。如下图:
在这里插入图片描述

总结

这四种模式的主要区别在于如何在时钟信号的不同边缘采样和改变数据。CPOL参数规定了SCK时钟信号在空闲状态时的电平,而CPHA参数则规定了数据是在SCK时钟的上升沿还是下降沿被采样。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSPF状态机+SPF算法

OSPF状态机 1.点到点网络类型 down-->init-->(前提为可以建立邻接)exstart——>exchange-->若查看邻接的DBD 目录后发现不用进行LSA 直接进入ful。若查看后需要进行查询、应答先进入loading,在查询应答完后再进入 fuIl: 2.MA网络类型 down --&g…

【C++修行之道】类和对象(三)拷贝构造函数

目录 一、 概念 二、特征 正确的拷贝构造函数写法: 拷贝函数的另一种写法 三、若未显式定义,编译器会生成默认的拷贝构造函数。 四、编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了,还需要自己显式实现吗? 深拷…

Transformer 动画讲解:数据处理的四大关键步骤

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

读《Diffusion Models: A Comprehensive Survey of Methods and Applications》综述

读《Diffusion Models: A Comprehensive Survey of Methods and Applications》综述 关于此文,我的一个见解想法,重点关注他怎么描述 「Diffusion Model」的引用的,以及未来方向就好了。当然从这篇文章可以知道 「Diffusion Model」的一个基石…

【哈希】用哈希桶封装unordered_map unordered_set

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 用哈希桶封装 unordered_map & unordered_set 的相关内容。 如…

Linux系统使用Docker安装Drupal结合内网穿透实现远程访问管理后台

目录 前言 1. Docker安装Drupal 2. 本地局域网访问 3 . Linux 安装cpolar 4. 配置Drupal公网访问地址 5. 公网远程访问Drupal 6. 固定Drupal 公网地址 前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Linux系统使用Docker安装Drupal…

python在cmd中运行.exe文件时报错:不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法

添加系统环境变量: 设置环境变量,在用户变量里面添加 【PATH:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Windows\SysWOW64】 在系统变量里面添加,【变量名:ComSpec】 【变量值:%SystemRoo…

ROS2从入门到精通2-1:launch多节点启动与脚本配置

目录 0 专栏介绍1 ROS2的启动脚本优化2 ROS2多节点启动案例2.1 C架构2.2 Python架构 3 其他格式的启动文件3.1 .yaml启动3.2 .xml启动 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的…

适合能源企业的文档安全外发系统应该是什么样的?

能源企业是市场经济中的重要组成,也是社会可持续长远发展的关键组成之一,能源行业在开拓新能源业务线、提升产能的日常经营中,也需要与外部合作伙伴、客户间进行密切的业务往来,文档可能涉及多个领域多个类型。 能源供应合同&…

IDEA2023.2单击Setting提示报错:Cannot get children Easy Code

1、单击Setting,不能弹出对话框 2、打开IDE Internal Errors发生错误 原因: 报错信息 "Cannot get children Easy Code" 通常指的是 IntelliJ IDEA 在尝试访问或操作 Easy Code 插件的子设置时遇到了问题。 主要检查是有网络(断断…

【排序算法】选择排序以及需要注意的问题

选择排序的基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 第一种实现方法: void SelectSort(int* arr, int n) {for (int j 0…

安装 Android Studio 2024.1.1.6(Koala SDK35)和过程问题解决

记录更新Android Studio版本及适配Android V应用配置的一些过程问题。 安装包:android-studio-2024.1.1.6-windows.exe原版本:Android Studio23.2.1.23 Koala 安装过程 Uninstall old version 不会删除原本配置(左下角提示) Un…

数据结构第二篇【关于java线性表(顺序表)的基本操作】

【关于java线性表(顺序表)的基本操作】 线性表是什么?🐵🐒🦍顺序表的定义🦧🐶🐵创建顺序表新增元素,默认在数组最后新增在 pos 位置新增元素判定是否包含某个元素查找某个…

如何解决研发数据传输层面安全可控、可追溯的共性需求?

研发数据在企业内部跨网文件交换,是相对较为普遍而频繁的文件流转需求,基于国家法律法规要求及自身安全管理需要,许多企业进行内部网络隔离。不同企业隔离方案各不相同,比如银行内部将网络隔离为生产网、办公网、DMZ区&#xff0c…

Linux编程基础 8.4:epoll工作模式

1 简介 poll机制的工作原理及流程与select类似,但poll可监控的进程数量不受select中第二个因素——fd_set集合容量的限制,用户可在程序中自行设置被监测的文件描述符集的容量,当然poll在阻塞模式下也采用轮询的方式监测文件描述符集&#xf…

相对位姿估计

相对位姿估计 示意图 理论推导 离线数据库: P的位置 P [ X , Y , Z ] T P[X,Y,Z]^{T} P[X,Y,Z]T 相机内参 k 1 k_{1} k1​ 安卓手机: 相机内参 k 2 k_{2} k2​ 两个像素点位置 : p 1 和 p 2 p_1和p_2 p1​和p2​ 公式一:…

Python魔法之旅-魔法方法(04)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…

2年go蓝炎科技、爱诗科技面试经历,期望薪资22K

广州蓝炎科技一面 1、简单自我介绍?用的什么技术栈? 2、go的map是线程安全的吗? 3、Channel一般会在什么场景下使用?往一个未初始化的channel发送数据,会怎样? 4、关于go里头的随机数是线程安全的吗&am…

网卡配置基础知识

1、网络设置方式 首先科普下Virtual Box虚拟机的几种主流的网络设置方式,官方文档: 2解释 Host-only:仅主机模式 虚拟机和宿主机、虚拟机之间能互通,但是不能访问外网,虚拟机和宿主机同网段的其他主机不能互通这种…

VScode远程连接linux服务器开发,误删了文件怎么找回。

因为远程服务器大家都在用,没有足够权限去折腾。找遍了没找到方法,就告诉我远程的文件本地没有缓存啊!我就差点开始重写代码了,后来被我发现了TIMELINE功能,这个功能真的好啊!!!关键…