SPI协议学习笔记

SPI协议学习笔记SPI优点与缺点优点:支持全双工,通信简单,数据传输速率快缺点:在数据可靠性上存在一定的缺陷,因为它不像I2C一样有ACK应答机制SPI总线的构成及信号类型SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯:1)MOSI–Master数据输出,Slave数据输入2)MISO–Master数据输入,Slave数

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

Jetbrains全系列IDE稳定放心使用

SPI优点与缺点
优点:支持全双工,通信简单,数据传输速率快
缺点:在数据可靠性上存在一定的缺陷,因为它不像I2C一样有ACK应答机制
SPI总线的构成及信号类型
SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯:
1)MOSI – Master数据输出,Slave数据输入
2)MISO – Master数据输入,Slave数据输出
3)SCK – 时钟信号,由Master产生
4)/CS – Slave使能信号,由Master控制。
这里写图片描述
每个SPI的slave和MCU都有一个i/o口连接,当我们的Master和某个slave通信时将需
要将从设备对应的片选引脚电平拉低或者是拉高。
通信模式
SPI通信有4种不同的模式,通信双方必须是工作在同一模式。不同的从设备可能在出厂是就是配
置为某种模式,不可改变;所以一般要将Master的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制Master的通信模式。
时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA 是用来配置数据采样是在第几个边沿,具体如下::
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿
在一个SPI时钟周期内,会完成如下操作:
1) Master通过MOSI线发送1位数据,同时Slave通过MOSI线读取这1位数据
2) Slave通过MISO线发送1位数据,同时Master通过MISO线读取这1位数据
Master和Slave各有一个移位寄存器,如图4所示,而且这两个移位寄存器连接成环状。依照SCK的变化,数据以MSB first的方式依次移出Master寄存器和Slave寄存器,并且依次移入Slave寄存器和Master寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。
这里写图片描述
SPI注意点
1)Slave的时钟极性和相位决定了Master时钟极性和相位,在时钟极性的配置上一定要确定Slave是在SCK的下降沿还是上升沿输出数据,是在SCK的上升沿还是下降沿接收数据,就是说,Master的通信模式要向Slave看齐
2)Slave时钟频率小于Master时钟频率时,如果Master的SCK的速率太快,会出现Slave接收到的数据不正确,而SPI接口又没有应答机制确认Slave是否接收到数据从而导致通信传输数据错误。

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

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

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


相关推荐

  • IDEA 2018.2.5最新版破解到2100年图解教程

    先看下我破解后的效果图把下载的破解补丁放在你的idea的安装目录下的bin的目录下面(如下图所示),本文示例为F:\ProgramFiles\JetBrains\IntelliJIDEA2018.2\bin\JetbrainsCrack-3.1-release-enc.jar(破解补丁文末有百度网盘链接)打开IDEA软件,点击免费试用,然后确定在这里添加-javaagent:F:\Pr…

    2022年4月16日
    67
  • ConcurrentModificationException异常解决办法

    1、在开发自己的第一款app,在操作存放子弹的ArrayList时,报出java.util.ConcurrentModificationException异常,因为该异常是非捕获型异常而且很少见,所以费了些时间才找到问题所在.查询了很多资料,终于调通了.原代码是这样的,synchronized(mCowBoys){ for(CowBoySprite cowBoy: mCowBoys)

    2022年3月9日
    42
  • Codeforces 110B-Lucky String(技能)

    Codeforces 110B-Lucky String(技能)

    2022年1月8日
    51
  • Xilinx原语ODDR的使用

    ODDRisXilinxHDLLanguageTemplate。ODDR:OutputDoubleDataRate(DDR)。在介绍ODDR之前,我们先简单了解一下OLOGIC。OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的专用同步块。OLOGIC资源的类型有OLOGIC2(位于HPI/Obanks)和OLOGIC3(位于…

    2022年4月7日
    449
  • 树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

    树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」1、树的定义树是n个结点的有限集合,有且仅有一个根结点,其余结点可分为m个根结点的子树。2、树的概念结点的度:一个结点拥有子树的个数称为度。比如A的度为3,C的度为2,H的度为0。度为0的结点称为叶子节点(D,F,G,H)。树的度是树中所有结点的度的最大值,此树的度为3。 树中结点的最大层次成为树的深度或高度。此树的深度为4。 父节点A的子结点B,C,D;B,C,D也是兄弟节点…

    2022年7月13日
    18

发表回复

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

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