我的NPI项目之嵌入式总线系列(一) -- SPI 总线

SPI总线很有意思

如我的NPI项目之Android 安全系列 -- 外挂SE集成(SPI)接口-CSDN博客

提到SPI的接口,基本的电气特性已经给出。这边文章就针对协议部分进行详细解析。从协议网找到了原文:SPI protocol 还有wilipedia SPI

主要涉及一下几个方面

数据传输

        1. 数据传输之前,主设备首先通过CS(低有效)选择需要进行通信的从设备。

        2. 数据传输是一个全双工的过程。在每个SPI时钟周期内,主设备在MOSI线上发送一个位,从设备在MISO线上发送一个位,然后这两个设备分别读取相应的传入位。即使进行的是一个单向的数据传输,也会按照这个顺序模式进行。这是一个典型的全双工的实例。

        3.当总线上只有单个从设备进行通信的时候是一个最典型的例子,通常是多位传输,我们以8位数据类型传输为例。这里会涉及到主设备和从设备的移位寄存器。通常数据,首先移出最高有效位MSB。在时钟的边沿,主寄存器和从寄存器都移出其对应的一位。在下一个时钟沿,每个接收器对传输的位进行采样,并将其作为新的最MSB进行存储,所有的位移出和移入后,主寄存器和从寄存器就完成了数据交换。如果需要交换更多数据,那么就可以重复该过程。这样的传输可以持续任意数量的时钟周期。完成后,主设备停止切换时钟信号,并通常取消选择从设备,就是将CS片选型号拉高。

        在某些时候,从设备允许的情况下,可以将CS片选信号固定为逻辑低电平。

        对于,多个从设备情况下。多点配置的模式时候,需要每个子设备从主设备获取独立的CS片选信号。对于,菊花链的模式时候,仅仅需要一个CS片选信号(使用场景目前没有遇到过,暂时按下不表)。

        4.SPI总线上未被选择的设备都应该忽略MOSI和CLK信号。为了防止MISO争用,从属设备需要具有三态逻辑的特性,所以当器件未被选中时,它们的MISO讯号变为高阻抗(逻辑断开)。没有三态输出的器件不能与其他器件共享SPI总线段,但是可以使用外接的三态逻辑缓存来解决这个问题。

时钟极性和相位

       作为主设备,除了设定时钟,还需要设定有关数据的时钟极性和时钟相位。简称CPOL和CPHA,这个是由摩托罗拉定义。借用wikipedia的一段描述:

工作模式组合

拓扑类型

        一对一,一对多。

优点

  • SPI协议默认是全双工通信。
  • 与漏极开路输出相反,SPI的推挽输出可以提供良好的信号完整性和高速度。
  • 比IIC有更高的出输带宽。不限于任何最大时钟频率,可以实现高速运行。
  • 简单的线路连接,没有仲裁或者相关的失败模式。

缺点

  • 三线/四线的SPI也比IIC多IC线路。
  • 没有带内寻址,共享总线上需要带片选信号。
  • 不支持动态添加节点,不支持热插拔。没有从设备检测机制,主机无法检测是否已经与从设备断开。
  • 必须通过带外信号来实现中断,或者通过类似USB1.1或者USB2.0的定期轮询来模拟中断。这点和IIC也是一样的。

传输速率

        SPI总线的传输速率取决于多种因素,包括SCK的频率、数据位数以及特定的硬件设计。一般来说,SPI总线的传输速率可以达到几Mbps到几百Mbps。而IIC的SCK大概是100K~400K之间

总之

学习一种总线,理解一种总线,发散到其它总线,最后由点到面的精通一个嵌入式系统。

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

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

相关文章

(五)【Jmeter】使用代理录制HTTP脚本操作步骤及注意事项

前置信息 软件版本Jmeter5.6.3服务网址备注drupalhttp://192.168.88.88:18080/(二)【Jmeter】专栏实战项目靶场drupal部署 用户名密码test1test1test2test2实操记录 1、启动jmeter,操作顺序见下图 2、在视图面板添加如下信息,点击开始

请标记你的龙年心愿关键词

昨天外孙陪我游了崇州市白头镇、道民镇(竹艺村),见我心情愉悦,今天再陪我去饱览其他风景名胜,所以笔者——本“人民体验官”特别推广人民日报官方微博文化产品《2024年第一批春花开了》《#大年初七#,标记你…

【Linux取经路】文件系统之被打开的文件——文件描述符的引入

文章目录 一、明确基本共识二、C语言文件接口回顾2.1 文件的打开操作2.2 文件的读取写入操作2.3 三个标准输入输出流 三、文件有关的系统调用3.1 open3.1.1 比特位级别的标志位传递方式 3.2 write3.2.1 模拟实现 w 选项3.2.2 模拟实现 a 选项 3.3 read 四、访问文件的本质4.1 再…

ArduPilot开源飞控之硬件SBC分析

ArduPilot开源飞控之硬件SBC分析 1. 源由2. Companion Computer2.1 APSync【不推荐,无更新】2.2 DroneKit【不推荐,无更新/SDK】2.3 FlytOS【不推荐,闭源】2.4 Maverick【不推荐,闭源】2.5 ROS【专门讨论,开源/复杂】2…

保育员线上考试答案查找?分享8个有手机就能搜题的工具 #经验分享#其他

市面上搜题软件不少,大部分都挺好用的,今天小编在这里给大家分享几个好用的搜题工具,都拥有丰富的题库资源;而且搜题功能也都很完善,手机端、网页端均有,有需要的小伙伴赶紧码住! 1.题老大 这…

Rust 数据结构与算法:4栈:用栈实现进制转换

2、进展转换 将十进制数转换为二进制表示形式的最简单方法是“除二法”&#xff0c;可用栈来跟踪二进制结果。 除二法 下面实现一个将十进制数转换为二进制或十六进制的算法&#xff0c;代码如下&#xff1a; #[derive(Debug)] struct Stack<T> {size: usize, // 栈大…

MySQL安装问题:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题。

出现的问题&#xff1a; 解决&#xff1a;由于没有安装微软常用运行库合集64位导致的问题 下载vcredist_x64 https://www.microsoft.com/zh-CN/download/details.aspx?id40784 下载完成后&#xff0c;点击运行解决问题。

【知识图谱--第四讲知识图谱的抽取与构建】

知识图谱的抽取与构建 实体识别与分类关系抽取与属性补全概念抽取事件识别与抽取 实体识别与分类 关系抽取与属性补全 概念抽取 事件识别与抽取

【开源】SpringBoot框架开发农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

【Windows】删除 VHD 虚拟磁盘时提示“文件已在 System 中打开”的解决方法

一、原因 正如显示的那样&#xff0c;虚拟磁盘仍在被系统占用。因此我们需要断开磁盘与系统的连接。 二、解决方法 1. 在“开始”菜单中搜索“磁盘管理”&#xff0c;选择“创建并格式化硬盘分区”。 2. 右键点击需要删除的虚拟磁盘&#xff0c;选择“分离 VHD”。 3. 点击“…

一款基于MSSQL数据库注入的利用工具-SqlmapXPlus

一、基本介绍 在众多的地区性攻防演练中&#xff0c;SQL Server数据库堆叠注入仍有较高的爆洞频率&#xff0c;但因为一些常见的演练场景限制&#xff0c;如不出网、低权限、站库分离、终端防护、上线困难、权限维持繁琐等&#xff0c;仅一个–os-shell已经难满足我们的需求。…

《区块链公链数据分析简易速速上手小册》第7章:数据获取和分析的挑战(2024 最新版)

文章目录 7.1 数据准确性和完整性验证7.1.1 基础知识7.1.2 重点案例&#xff1a;验证加密货币交易数据准备工作实现步骤步骤1: 从 API 获取比特币交易数据步骤2: 数据转换和初步校验步骤3: 验证交易数据的格式和范围 结论 7.1.3 拓展案例 1&#xff1a;使用哈希校验数据完整性准…