北京网站建设设计公司/seo教程书籍

北京网站建设设计公司,seo教程书籍,网站如何做邮箱订阅号,做网站怎么写工作日志1、协议介绍 SPI,是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线。主节点或子节点的数据在…

1、协议介绍

  SPI,是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。

  SPI,是一种高速的,全双工,同步的通信总线。主节点或子节点的数据在时钟上升沿或下降沿同步。主节点和子节点可以同时传输数据。SPI 接口可以是 3 线或 4 线。本文重点介绍流行的 4 线 SPI 接口

  串行外设接口 (SPI) 是微控制器与外设 IC(如传感器、ADC、DAC、移位寄存器、SRAM 等)之间使用最广泛的接口之一。


在这里插入图片描述

4 线 SPI 设备有四种信号:

  • 时钟(SPI CLK、SCLK)
  • 片选(CS)
  • 主节点输出,子节点输入 (MOSI)
  • 主节点输入,子节点输出 (MISO)

  产生时钟信号的设备称为主设备。主节点和子节点之间传输的数据与主节点产生的时钟同步。与 I2C 接口相比,SPI 设备支持的时钟频率要高得多(时钟频率和传输速度有着直接的关系)。用户应查阅产品数据手册以了解 SPI 接口的时钟频率规格。

  SPI 接口只能有一个主节点,可以有一个或多个子节点

  主节点的片选信号用于选择子节点。这通常是低电平有效信号,拉高可断开子节点与 SPI 总线的连接。当使用多个子节点时,主节点需要为每个子节点提供单独的片选信号。在本文中,片选信号始终是低电平有效信号。

  MOSI 和 MISO 是数据线,MOSI 将数据从主节点传输到子节点,MISO 将数据从子节点传输到主节点。

下表总结了 SPI 的关键特性:

特性规格
导线4
最大速度SPI 传输速度没有协议的限制,但会受硬件设计的影响。可能是 10MHz、50MHz、100MHz 等
同步或异步?同步
串行或并行?串行
最大主器件数1
最大节点数无限制

2、数据传输

  要开始 SPI 通信,主设备必须发送时钟信号并通过启用 CS 信号选择子节点。

主机没有数据传输(数据发送)的情况下,通常是没有 CLK 信号的

  通常,芯片选择是低电平有效信号;因此,主设备必须在此信号上发送逻辑 0 来选择子节点。SPI 是一个全双工接口;主节点和子节点可以分别通过 MOSI 和 MISO 线路同时发送数据。在 SPI 通信期间,数据同时传输和接收。串行时钟沿同步数据的移位和采样。

  SPI 接口为用户提供了灵活性,可以选择时钟的上升沿或下降沿来采样和/或发送数据。请参阅设备数据表以确定使用 SPI 接口传输的数据位数。

2.1 时钟极性

  极性,会直接影响 SPI CLK 总线空闲时的时钟信号是高电平还是低电平。

  • CPOL = 1:表示空闲时是高电平
  • CPOL = 0:表示空闲时是低电平

  当 CPOL 时钟极性控制位被拉低时,它会使 SCK 管脚产生一个稳定的低电平。如果 CPOL 时钟极性控制为被拉高,当没有数据传输时,它会使 CLK 管脚产生一个稳定的高电平。即确定 SCK 在不传输数据时,是默认高电平或者默认低电平

2.2 时钟相位

  一个时钟周期会有 2 个跳变沿。而相位,直接决定 SPI CLK 总线从那个跳变沿开始采样数据。

  • CPHA = 0:表示从第一个跳变沿开始采样
  • CPHA = 1:表示从第二个跳变沿开始采样

    在这里插入图片描述
SPI modeCPOLCPHA
000
101
210
311

可以参考 W25Q64FW 中使用 0x9f 命令读 ID 的传输过程示意图:
在这里插入图片描述

2.3 数据交换

  SPI 设备间的数据传输之所以又被称为数据交换,是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”。

  一个 Slave 设备要想能够接收到 Master 发过来的控制信号,必须在此之前能够被 Master 设备进行访问 (Access)。所以,Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上。 在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI 物理模块最终失效。因此,在程序中一般都会在 SPI 传输完数据后,去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的(虽然发送后紧接着的读取是无意义的,但仍然需要从寄存器中读出来)。

  • 如果不对接收进行读取操作可能会导致溢出,将使以后发送出的数据全部无效
  • 在每个 SPI 时钟周期内,都会发生全双工数据传输
  • SPI 只有主模式和从模式之分(提供时钟的为主设备 Master,接收时钟的设备为从设备 Slave),没有读和写的说法,因为实质上每次 SPI 是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据
  • 发一个字节任意值数据是为了在 CLK 总线上产生时钟,给从机的 SPI 信号提供时钟用的,从机 SPI 不会自己产生 CLK 信号的

在 CS 片选有效的情况下才会有数据传输,有一种特殊情况,如果 CS 片选无效,设备硬件 FIFO 中的数据都会丢失。如果两次写操作中间 CS 一直有效,设备硬件 FIFO 中的数据不会丢失。这里要注意


  特别要注意的是,关于 Transfer Mode,是一个很奇怪的东西。这个玩意违背了“发送就一定需要接收”的逻辑,即上面所说“数据交换”的逻辑在一定程度上是问题的。这也给 SPI 总线驱动、包括 SPI 设备驱动带来了很多变数。所以,写设备驱动前,最好对总线驱动的发送与接收过程有个了解。

例如 rk3568 SPI 控制器中的 SPI_CTRLR0 寄存器:

在这里插入图片描述

  • Transmit & Receive(就是我们上面提到,只要有发送,就一定会有接收,即使是脏数据,也需要读出来):

In transmit-and-receive mode,both transmit and receive data are valid. The transfer continues until the transmit FIFO is empty. Data received from the external device are stored into the receive FIFO memory, where it can be accessed by the host processor

  • Transmit Only:

In transmit-only mode,data received from the external device is not valid and is not stored in the receive FIFO memory; it is overwritten on the next transfer

  • Receive Only:

In receive-only mode,transmitted data are not valid. After the first write to the transmit FIFO,the same word is retransmitted for the duration of the transfer

  • EEPROM Read:

In eeprom-read mode, receive data is not valid while control data is being transmitted. When all control data is sent to the EEPROM, receive data becomes valid and transmit data becomes invalid. All data in the transmit FIFO is considered control data in this mode. This transfer mode is only valid when the DW_apb_ssi is configured as a master device


还有一个 SPI_CTRLR1 寄存器:
在这里插入图片描述
  这个只针对于 Receive Only 模式和 EEPROM Read 模式有效。该寄存器含义是指定 SPI 控制器一次连续接收的数据帧数量。通常情况下,是需要接收的帧数 -1 。

例如 EEPROM Read 模式:发送数据用于传输命令码和地址到 EEPROM 设备,一般需要 3 个数据帧(8-bit 操作码,8-bit 高位地址,8-bit 低位地址)。在操作码和地址传输的过程中,控制器不会从串行总线上接收数据。当发送 FIFO 中的条目发送完毕,接收数据才开始被采样,采样的数据帧数是 NDF+1(也就是上面的 ndm 寄存器值 + 1)。

2.4 关于帧长度

  在发起一个 SPI 传输前,通常还需要设置本次传输的帧长度( Data Frame Size ) ,通常是 8 或 16 位。

struct spi_message {......unsigned		frame_length;......
};

  SPI 协议本身并没有帧长度(Frame Length)的固定概念,因为 SPI 是一种流式(streaming)传输协议,它是一个基于主从模式的时钟同步串行通信协议,只关心 时钟脉冲(SCK)和数据位(MOSI、MISO) 的同步,并不会主动分割数据。然而,在具体的 SPI 控制器、驱动程序或某些应用场景下,帧长度的概念被引入。这里要注意。

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

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

相关文章

我爱学算法之——滑动窗口攻克子数组和子串难题(上)

现在来学习"滑动窗口"这一算法思想。 至于什么是"滑动窗口"呢?简单来说就是同向双指针;现在来通过题目来了解什么是"滑动窗口" 一、长度最小的子数组 题目链接:长度最小的子数组 题目解析 先来看题目&#…

ora-600 ktugct: corruption detected---惜分飞

接手一个oracle 21c的库恢复请求,通过Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)脚本检测之后,发现undo文件offline之后,做了resetlogs操作,导致该文件目前处于WRONG RESETLOGS状态 尝试恢复数据库ORA-16433错误 SQL> recover datafile 1; ORA-00283:…

20. Excel 自动化:Excel 对象模型

一 Excel 对象模型是什么 Excel对象模型是Excel图形用户界面的层次结构表示,它允许开发者通过编程来操作Excel的各种组件,如工作簿、工作表、单元格等。 xlwings 是一个Python库,它允许Python脚本与Excel进行交互。与一些其他Python库&#x…

IIS 服务器日志和性能监控

Internet Information Services (IIS) 是 Microsoft 提供的一款功能强大、灵活且可扩展的 Web 服务器,用于托管网站、服务和应用程序。IIS 支持 HTTP、HTTPS、FTP、SMTP 和更多用于提供网页的协议,因此广泛用于企业环境。 IIS 的…

12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)

文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…

oracle 基础知识之 多表查询

多表查询定义:当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。 1.等值连接 等值连接也称为简单连接&#xf…

Prims region.Views 为null

原因: 导航未完成或异步问题 解决方式:使用回调确认导航完成后再操作视图 _regionManager.RequestNavigate("MonitorRegion", "MonitorView", nps, navigationResult > {if (navigationResult.Result true){var region _regio…

reconstruct_3d_object_model_for_matching例子

文章目录 1.获取om3文件2.准备可视化3.准备3D可视化4.读取3D模型5.显示成对注册结果16.显示成对注册结果27.联合注册模型8.处理图像8.1子采样8.2 图像计算与平滑8.3 三角测量 9.基于表面做3D匹配10.评估模型准确度10.1 在场景中找到模型10.2 计算模型和场景之间的距离 11.立体系…

软件安全性测试的重要性和常用工具介绍,软件测试服务公司推荐

在当今数字化快速发展的时代,软件已经成为各行各业不可或缺的一部分。然而,随着软件系统的复杂性增加,安全性问题也愈发突出,因此软件产品生产周期中安全测试必不可少。软件安全性测试是指对软件系统进行评估,以发现潜…

使用 ESP8266 和 Android 应用程序实现基于 IOT 的语音控制家庭自动化

使用 ESP8266 实现基于 IOT 的语音控制家庭自动化 欢迎来到另一个令人兴奋的项目,我们将使用 Wi-Fi 模块构建一个语音控制ESP8266家庭自动化系统,您可以在其中通过语音通过 Android 应用程序从世界任何地方控制您的家用电器。是的,您只需使用语音命令即可打开或关闭负载(L…

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解 一、三者的区别与关系 1. 官方迭代过程为: CustomDialog 》 OpenCustomDialog 》 DialogHub 迭代过程表明,弹框的调用越来越便捷,与UI解耦&…

【C++】stack和queue的使用及模拟实现(含deque的简单介绍)

文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍(引入…

开源PACS(dcm4che-arc-light)部署教程,源码方式

目录 文件清单下载地址安装概述OpenLDAP、Apache Directory StudioWildflydcm4che 安装部署MySQL源码编译dcm4cheedcm4chee-arc-light OpenLDAP安装ApacheDirectoryStudio安装配置WildFly服务器 部署完成 文件清单 下载地址 Apache directory studio - linkOpenLDAP - linkdcm…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

C语言动态内存管理(下)

欢迎拜访:雾里看山-CSDN博客 本篇主题:C语言动态内存管理(下) 发布时间:2025.3.18 隶属专栏:C语言 目录 动态内存常见错误内存泄漏(Memory Leak)典型场景后果解决方案 悬挂指针(Dangling Pointe…

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪(Surface-Tracking)是指机器人通过实时感知工件曲面的三维形貌,动态调整运动轨迹和位姿,以精确跟随曲面进行加工(如打磨、抛光、喷涂等)的技术。 力 - 位姿协同控制 力控模式&#xff…

【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节

目录 一、事务标签(Transaction Label)机制 1.1 事务标签核心规则 1.2 事务标签作用域与并发性 1.3 实现建议与陷阱规避 1.4 协议设计思考 1.5 调试与验证 二、消息分片(Fragmentation)机制 2.1 分片触发条件 2.2 分片支…

harmonyOS NEXT开发与前端开发深度对比分析

文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…

OpenWebUI:一站式 AI 应用构建平台体验

🚀 大家好,今天给大家分享一个超棒的 AI 应用构建工具——OpenWebUI!体验下来,只能说丝滑!必须强烈推荐! 🔥 听说过阿里巴巴的 Qwen 吗?他们最新的 Qwen Chat 网站就是用 OpenWebUI…