SPI学习笔记

总线介绍

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外设接口SPI协议主要作为主控芯片去配置外围芯片的接口协议。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步,串行,主从结构通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI仅定义了传输的信息,并未对传输的数据内容含义进行定义,用户需查阅相关产品的datasheet查看;

SPI知识点说明

总线说明

SPI存在四个接口;

  • SCK:时钟信号,同步传输,用以指示接收端接收数据;
  • SS_n:片选信号,在一主多从情况下,指示主机访问的是哪一个slave。一般为低有效数据;
  • MOSI:master output slave input。主机对外输出数据的端口,slave接收数据端口;
  • MISO:master input slave output.主机接收从机返回数据,从机输出数据;

时钟极性、采样设定

可通过设计完成在数据发送、接收与时钟沿的关系;

  • CPOL:表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1;
  • CPHA:表示对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿;

存在以下情况:

  • CPOL,CPHA == (0,0):即SCLK默认条件下为0,数据采样发送在第一个沿,也就是上升沿;对应的数据发送即为时钟下降沿。
  • CPOL,CPHA == (0,1):即SCLK默认条件下为0,数据采样发送在第二个沿,也就是下降沿;对应的数据发送即为时钟上升沿。
  • CPOL,CPHA == (1,0):即SCLK默认条件下为1,数据采样发送在第一个沿,也就是下降沿;对应的数据发送即为时钟上升沿。
  • CPOL,CPHA == (1,1):即SCLK默认条件下为1,数据采样发送在第二个沿,也就是上升沿;对应的数据发送即为时钟下降沿。

SPI数据含义

  1. spi协议仅定义了数据传输的途径,对该路径中传输的数据具体是什么含义没有做定义。如参考文档中spi中就存在起始位、数据位、操作位、地址等;但本身SPI并没有这些规定;
  2. SPI可以理解成信使仅负责将发送端期望发送的数据顺利的送到目的端,对应信件中的内容还是由发端、接收端的规则制定;

SPI和IIC的对比

  • SPI是全双工,而IIC是半双工。
  • IIC支持多主机多从机模式,而SPI只能有一个主机。
  • 从GPIO占用上来看,IIC占用更少的GPIO,更节省资源。
  • SPI的数据位宽更灵活,可以根据需要选择多位数据宽度。
  • SPI协议没有响应机制,主机无法得知从机是否接收到所发的数据,如果不采取一些方法的话可能会导致数据丢帧。
  • 正是因为没有复杂的响应机制,SPI协议可以做到非常高的速率(上百兆),每一个SCK都可以进行数据的传输,通过引入CRC校验等校验方法,可以即高速传输数据,又能保持数据的准确度。
  • IIC通过器件地址来选择从机,从机数量的增加不会导致GPIO的增加,而SPI通过CS选择从机,每增加一个从机就要多占用一个GPIO,当然也可以通过加入译码器来实现多从机控制。
  • 两者大多都应用于板内器件短距离通讯。

参考文献

深入理解SPi通讯协议,5分钟看懂!_哔哩哔哩_bilibili

SPI原理超详细讲解---值得一看-CSDN博客

一文看懂SPI协议 - 知乎 (zhihu.com)

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

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

相关文章

【vivado】 clock wizard 时钟IP

一、前言 MMCM和PLL是在FPGA设计中不可避免需要使用到的时钟资源,对于其功能及使用方法的理解是正确进行FPGA设计的前提。 二、Xilinx 时钟 IP配置 vivado中使用时钟向导(Clocking Wizard)配置时钟IP核,其框图如下: clk_in 输入时钟&#…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的的商品标签识别系统(Python+PySide6界面+训练代码)

摘要:开发商品标签识别系统在提升零售业运营效率和顾客购物体验中发挥着关键作用。本篇博客详细阐述了如何应用深度学习技术构建此类系统,并提供了完整的代码实现。该系统基于高效的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了性能对比&…

*Javaweb -- MyBatis*

一:介绍: 1.MyBatis是一个优秀的 ①持久层 ②框架,用于简化JDBC的开发! ①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责…

数字孪生+工业互联网标识解析,打造智能工厂新标杆!

当前,工业4.0浪潮愈发澎湃,加快数字化、网络化、智能化发展成为了制造业转型升级的必然要求。 51WORLD基于数字孪生技术与工业互联网标识解析体系,打造了一个集协同化供应、个性化定制、智能化生产于一体的全连接产线孪生平台(以…

antv L7结合高德地图使用dome1

antv L7结合高德地图使用 一、设置底图二 、添加antv L7 中要使用的dome1. 安装L7 依赖2. 使用的dome 、以下使用的是浮动功能3. 运行后显示 自定义样式修改1. 设置整个中国地图浮动起来 自定义标注点1. 静态标注点2. 动态标注点(点位置需要自己改)3. 完…

Python笔记:函数

Python函数定义规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。return [表达式] 结束函数,选择性地返回一个值给调用方,不带表…

Windows系统中安装docker及镜像加速的配置

文章目录 一.安装wsl二.下载docker desktop三.更换Docker镜像引用出处 一.安装wsl 在安装wsl之前,先在Windows中配置WSL环境,步骤很简单,按照以下文章进行 Windows10/11配置WSL(Ubuntu)环境 以管理员身份打开Windows PowerShell,执行以下命…

模型驱动架构MDA

MDE 模型驱动工程(MDE, Model-Driven Engineering)是软件工程的一个分支,它将模型与建模拓展到软件开发的所有方面,形成一个多维建模空间,从而将工程活动建立在这些模型的映射和转换之上。[1] MDE的基本原则是将模型视…

2.Windows平台Python的下载、安装和配置环境变量——跟老吕学Python编程

2.Windows平台Python的下载、安装和配置环境变量——跟老吕学Python编程 一、下载Windows版Python1.Python官网2.Windows版Python下载网址 二、在Windows安装Python1.全自动安装Python(不推荐)1.1 启动安装1.2 安装进度1.3 安装完成1.4 查看版本 2.自定义…

Python sort从大到小排序面试题

在Python中,你可以使用内置的sorted()函数或者列表的sort()方法来对列表中的元素进行从大到小的排序。 使用sorted()函数: numbers [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers sorted(numbers, reverseTrue) # 设置reverseTrue实现从大到小排…

基于单片机的智能水位监控识别系统设计

摘 要:本文通过描述以STC12C5A60S2单片机作为MCU的智能水位监控系统的设计进行分析,对系统中的各电路原理进行简单概述,将系统通过液晶进行人机交互,并可通过按键对水位上下限进行调整,采用超声波检测模块对水位检测并具有水位情况预警功能。系统经过智能化的排水和注水操…

【GO】HTTP标准库1 - http协议基础知识

目录 一 http协议 1 http协议 2 http request 3 请求方法 4 URL 5 协议版本 6 请求头 7 Content-type 9 POST与GET区别 10 HTTP Response 11 常见的状态与话术 12 HTTP 响应头 13 完整的HTTP响应 14 HTTPS 一 http协议 1 http协议 HTTP(HyperText Tra…

Kubeadm部署K8s

Kubeadm部署K8s 集群规划: Master节点规划: Node节点规划: 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘…

CANopen转Profinet网关连接西门子PLC与变流器通讯

CANopen转Profinet网关(XD-COPNm20)在智能领域,变流器的应用非常广泛,变流器一般会采用CANopen协议。现场采用台达的变流器(支持CANopen协议)作为CANopen从站,S7-1500系列PLC做主站,…

表单进阶(3)-上传文件和隐藏字段

上传文件&#xff1a;<input type"file"> 隐藏字段&#xff1a;<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled&#xff1a;<button disabled"disabled">注册</bu…

Linux操作系统Shell脚本

一、shell脚本简介 shell 脚本类似 windows 的批处理文件,shel 脚本就是将连续执行的命令写成一个文件。shel 脚本提供数组、循环、条件判断的等功能。 二、shell脚本写法 shell脚本是一个纯文本文件&#xff0c;命令从上到下&#xff0c;一行一行的开始执行&#xff0c;shell…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理(Wireshark抓包分析)

继续蓝牙系列的研究。 在上篇博客&#xff0c;通过阅读BTStack的源码&#xff0c;大体了解了其框架&#xff0c;对于任何一个BTStack的应用程序都有一个main函数&#xff0c;这个main函数是统一的。这个main函数做了某些初始化之后&#xff0c;最终会调用到应用程序提供的btst…

kernel:NMI watchdog: BUG: soft lockup - CPU

Message from syslogdfat02 at Mar 11 14:11:49 ... kernel:NMI watchdog: BUG: soft lockup - CPU#72 stuck for 23s! [lt-swmr_sparse_:86901] 这条错误信息来自于系统的日志守护进程&#xff08;syslogd&#xff09;&#xff0c;具体报错信息是由内核发送的&#xff0c;涉…

【嵌入式】嵌入式系统稳定性建设:最后的防线

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

一文带你了解MySQL之B+树索引的原理

前言 学完前面我们讲解了InnoDB数据页的7个组成部分&#xff0c;知道了各个数据页可以组成一个双向链表&#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表&#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录&#xff0c;在通过主键查…