SPI协议简单介绍

SPI协议简单介绍导言SPI是串行扩展总线。串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时系统的更改和扩充极为容易。常用的串行扩展总线有:I2C(InterICBus)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。一、SPI协议SPI总线是微控制器四线的外部总线。SPI没有明文标准,是一种事实总线,对通信操作的实现由芯片厂商和驱动开发者通过datasheet和applicat..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

导言

SPI是串行扩展总线。

串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时系统的更改和扩充极为容易。

常用的串行扩展总线有:I2C(Inter IC Bus)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。

一、SPI协议

SPI总线是微控制器四线的外部总线。SPI没有明文标准,是一种事实总线,对通信操作的实现由芯片厂商和驱动开发者通过data sheet和application notes沟通实现的细节。SPI是四根信号线协议,如下:

SPI协议简单介绍

SCLK:Serial Clock(Output from master);

MOSI:Master Output Slave Input(Outpt from Master);

MISO:Master Input Slave Output(Output from Slave);

SS:Slave Select(Active low,Output from Master);

二、 SPI协议通信

SPI是单主设备通信,总线中只有一个设备发起通信,能发起通信的设备称为主设备。当SPI主设备想读/写从设备时,首先拉低对应从设备的SS线SS是低电平有效);然后发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现写同时可以对MISO线采样实现读

三、SPI操作模式

SPI有四种操作模式:模式0、模式1、模式2、模式3。

这几个模式之间的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(即时钟信号无效时是高还是低)。每种模式由两个参数描述,称为时钟极CPOL(clock polarity)与时钟期CPHA(clock phase)。

Mode = Bit[CPOL]Bit[CPHA]

CPOL=0表示 SCK在空闲状态时为0;

CPOL=1表示 SCK在空闲状态时为1;

CPHA=0表示 在SCK第一个边沿时输入输出数据有效;

CPHA=1表示 在SCK第二个边沿时输入输出数据有效;

一般从器件的工作模式是固定的,主机要跟从机采用一样的工作模式,双方才能正常通信。如果有多个从设备,且从设备使用了不同的工作参数,那么主设备与不用的从设备通信时必须重新配置这些参数。

SPI协议简单介绍

3.1 Mode0

Mode0时,CPOL=0,CPHA=0,SCK空闲状态为低电平,主机数据在每个上升沿被从机采样,数据输出同理。 

SPI协议简单介绍

3.2 Mode1

Mode1时,CPOL=0,CPHA=1,SCK空闲时为低电平,在SCK第二个边沿时数据有效,即SCK下降沿有效。

SPI协议简单介绍

 3.3 Mode2

Mode2时,CPOL=1,CPHA=0,SCK空闲时为高电平,在SCK第一个边沿时数据有效,即SCK下降沿有效。

SPI协议简单介绍

3.4 Mode3

Mode3时,CPOL=1,CPHA=1,SCK空闲状态为高电平,主机数据在第二个边沿时有效,即每个上升沿被从机采样,数据输出同理。

SPI协议简单介绍

 四、SPI基本时序

SS为低电平时,表示对应的从机设备被使能,在每个SCK周期可以传输1Bit数据,采样时刻取决于器件支持的SPI mode,根据不同SPI器件的控制方法,在进行正式的数据读写操作前,一般需要先写入控制字,然后是寄存器地址和数据。

如下是FM25V05铁电存储器采用SPI模式0的写时序,SS(CS)被拉低,主机数据在每个上升沿被从机采样,Opcode是控制字,控制字采样结束后开始采样数据。

SPI协议简单介绍

 如下是FM25V05铁电存储器采用SPI模式0的读时序:

SPI协议简单介绍

 需要注意的是在SS下降沿和SCLK第一个边沿,或SS上升沿和SCLK最后一个边沿之间要留有一定的延迟时间,一般是0.5个SCLK周期。

参考:

 【1】关于SPI协议,看这一篇文章就够了!-面包板社区

 【2】总线I2C和SPI,工程师喜欢用哪一个?

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181639.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python进阶(22)pydantic–数据类型校验

    python进阶(22)pydantic–数据类型校验pydantic库的作用pydantic库是一种常用的用于数据接口schema定义与检查的库。Pydantic在运行时强制执行类型提示,并在数据无效时提供用户友好的错误信息。pydantic安

    2022年8月7日
    4
  • 解决定时器关闭不掉的问题,clearInterval无效

    解决定时器关闭不掉的问题,clearInterval无效1.环境问题,this.interVal是我定义的定时器如直接写clearInterval(this.interVal);不好用,需要换成window.clearInterval(this.interVal);2.关闭指令执行的定时器源头问题,如开启了多个定时器,再去清除定时器是无效的,因为无法定位到想清除的定时器上。解决办法,将定时器归一每次开启定时器时,判断一下定时器是否存在,这样万无一失。开启:if(!this.interVal){this.interVal=

    2025年8月14日
    3
  • PyTorch踩坑指南(1)nn.BatchNorm2d()函数

    PyTorch踩坑指南(1)nn.BatchNorm2d()函数前言最近在研究深度学习中图像数据处理的细节,基于的平台是PyTorch。心血来潮,总结一下,好记性不如烂笔头。BatchNormalization对于2015年出现的BatchNormalization1,2018年的文章GroupNormalization2在Abstract中总结得言简意赅,我直接copy过来。BatchNormalization(BN)isamile…

    2022年6月7日
    54
  • EVE模拟器使用说明

    EVE模拟器使用说明本着分享和共同学习的态度,希望能给有需要的人带来帮助。 转载于:https://blog.51cto.com/dashu666/1971728

    2022年6月5日
    53
  • 一维数组二分法查找_二分查找算法c语言

    一维数组二分法查找_二分查找算法c语言在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回

    2022年8月9日
    3
  • datagrip2021.5激活码【注册码】[通俗易懂]

    datagrip2021.5激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    153

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号