SPI协议概括:

SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器(Central Processing Unit,CPU)有更多的时间处理其他事务。正是因为这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换。SPI是一个环形结构,通信时需要至少4根线(事实上在单向传输时3根线也可以)。
        SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
        (1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
        (2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
        (3)SCLK – Serial Clock,时钟信号,由主设备产生;
        (4)CS – Chip Select,从设备使能信号,由主设备控制。
        其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。
        接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。
        时钟信号线SCLK只能由主设备控制,从设备不能控制。同样,在一个基于SPI的设备中,至少有一个主设备。这样的传输方式有一个优点,在数据位的传输过程中可以暂停,也就是时钟的周期可以为不等宽,因为时钟线由主设备控制,当没有时钟跳变时,从设备不采集或传送数据。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。芯片集成的SPI串行同步时钟极性和相位可以通过寄存器配置,IO模拟的SPI串行同步时钟需要根据从设备支持的时钟极性和相位来通讯。
        最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

SPI总线工作的四种模式:

SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输出线MOSI,一条数据输入线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;总线竞争保护等。下图示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式 (实线表示):

SPI接口时序:

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;SPI主模块和与之通信的外设时钟相位和极性应该一致。SPI接口时序如图3、图4所示:

SPI协议概括、SPI总线工作的四种方式和SPI接口时序相关推荐

  1. 基础SPI协议的FPGA实现(兼顾SPI4种模式)—Verilog

    简要说明 看见许多博主都有编写SPI协议,但是大都是对一个指定的时序进行FPGA的实现.于是就想编写一个比较常见的SPI通信协议,而且兼顾4种模式和不同数据长度.主要是用来对常见SPI协议的应用,和辅 ...

  2. W ndows主进程已停止,windows主进程rundll32已停止工作的四种解决方法介绍

    操作系统出现:windows主进程rundll32已停止工作 这种出错的提示,一般是在Windows7操作系统之中,可能会有很多种原因导致的,所以还需要逐一排查,解决之. 这是一个很少见的问题,开机后 ...

  3. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结

    Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...

  4. 阻止跳转的四种方式,你知道吗?

    阻止跳转常见的有下面四种方式: 1. <a href="javascript:;" οnclick="action();">link</a&g ...

  5. JDBC 连接数据库的四种方式

    JDBC 连接数据库的四种方式 每博一文案 师傅说,人这一辈子总有许多遗憾,许多无可奈何. 其实有些事情不用太过执着,放下牵绊你的生活无畏执念,你会收获一个更为广阔的天地. 想开,看开,放开这六个字, ...

  6. 访问数据库的四种方式

    IRIS 中支持的四种方式: SQL.Objects.REST 和 GraphQL   卡济米尔·马列维奇,<运动员>(1932) > > "你当然无法理解! 习惯了 ...

  7. android java 多线程,Android多线程的四种方式

    当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在 ...

  8. pdf转换为html5,PDF转换为HTML5的四种方式

    原标题:PDF转换为HTML5的四种方式 这里有四种方法能让你把一个PDF文件转换为HTML5格式,但选择哪一种方式就取决于你的优先事项.IDR解决方案已经花费超过四年的时间来处理这个问题了.我们发现 ...

  9. python定时任务_Python3实现定时任务的四种方式

    最近做一个小程序开发任务,主要负责后台部分开发:根据项目需求,需要实现三个定时任务: 1>定时更新微信token,需要2小时更新一次: 2>商品定时上线: 3>定时检测后台服务是否存 ...

最新文章

  1. Python3中None用法
  2. 监听服务端口及邮件报警脚本
  3. mysql与dns_借助mysql和DNS view实现智能DNS(centos6.3 x64环境)
  4. 停止运行_锅炉停止运行应注意哪些事项?
  5. (3)QuartusII 封装网表文件(FPGA不积跬步101)
  6. [日志]08/19/2007
  7. 蓝桥杯综合实训平台 AIP15F2K61S2/STC89C52 定时器的基本原理与应用
  8. 如何手动彻底消除U盘使用痕迹
  9. Java线程状态RUNNABLE详解
  10. 按摩新方法(辅助药物治疗肝,肾,肺等慢性疾病)
  11. 一个北大毕业生决定去送外卖
  12. android6.0 framwork修改
  13. 会计专业计算机工具,会计工作需要用哪些工具
  14. 富而喜悦2023直播盛典 唐苓馨主题演说“特别的礼物”!
  15. Python基础(六):字符串、元组、列表习题
  16. 有道云笔记迁移到Obsidian的方法(保留文件创建时间)
  17. 最最最详细的springboot项目中集成微信扫码登入功能.步骤代码超级详细(OAuth2)
  18. 物联网开发板设计笔记 (1/7)__ 设计思路
  19. 设置git使用vimdiff比较差异
  20. Java 8: 元空间(Metaspace)

热门文章

  1. gulp的安装与使用
  2. FLV视频加密系统解决方案
  3. 利用Python识别txt文本并根据其内容进行文件分类
  4. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源...
  5. 项目笔记8(尚品汇)
  6. nginx 安装搭建及常用命令
  7. 初学spring aop 注解遇到的问题
  8. B - 爆零(×)大力出奇迹(√) HDU - 2093
  9. 硬件可信计算环境 计算困难性理论 对比
  10. 遇到的transform与Quaternion问题