SPI协议学习笔记

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


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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 同步传输与异步传输相比_以下效率最高的数据交换控制方式

    同步传输与异步传输相比_以下效率最高的数据交换控制方式在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。1.异步传输(AsynchronousTransmission):异步传输将比

    2022年9月15日
  • jetty idle timeout expired:30000/30000 ms

    jetty idle timeout expired:30000/30000 ms

    2021年9月13日
  • python自学笔记(一)

    python自学笔记(一)我没学过python,通过网上和一些图书资料,自学并且记下笔记。很多细节留作以后自己做项目时再研究,这样能更高效一些。python基础自学笔记一、基本输入和输出pthon3.0用input提示

    2022年7月5日
  • 时间单位换算表

    时间单位换算表 时间单位换算表   1毫秒=1/1,000秒(s)               1秒=1000毫秒(ms)1微秒(μs)=1/1,000,000秒(s)    1秒=1,000,000微秒(μs)1纳秒=1/1,000,000,000秒(s)       1秒=1,000,000,000纳秒(ns)1皮秒=1/1,000,000,000,000秒(s) 

    2022年7月11日
  • python数组操作方法_python 数组赋值

    python数组操作方法_python 数组赋值python列表数组类型,用中括号代表,具有顺序关系,可以修改,是最常用的数组bracket=[‘b’,’r’,’a’,’c’,’k’,’e’,’t’]pyhon元组数组类型,用小括号代表,具有顺序关系,不可以修改,是只读型数组,用来保护不需要改变的数据parentheses=(‘p’,’a’,’r’,’e’,’n’,’t’,’h’,’e’,’s’,’e’,’s’)python字典数组

    2022年8月13日

发表回复

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

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