什么是网站风格坂田网站建设费用明细
2026/2/7 11:53:21 网站建设 项目流程
什么是网站风格,坂田网站建设费用明细,中上网站建设,58同城最新消息招聘引言本次继UART、IIC后#xff0c;继续学习一种新的通信协议——SPI通信协议。个人理解来看#xff0c;该协议像是稍微结合了前两者的优缺点产生的一种更高效、但硬件变复杂、协议变简单的一种高速通信协议。本次#xff0c;我们先来学习一下关于SPI的基础知识#xff0c;为…引言本次继UART、IIC后继续学习一种新的通信协议——SPI通信协议。个人理解来看该协议像是稍微结合了前两者的优缺点产生的一种更高效、但硬件变复杂、协议变简单的一种高速通信协议。本次我们先来学习一下关于SPI的基础知识为后续深入学习STM32中的SPI打基础。一、SPI概述SPI即Serial Peripheral Interface串行外围设备接口。根据名字可以看出这也是一个串行通信协议。然后SPI最初是由Motorola即摩托罗拉公司首先在其开发的MC68HCXX系列处理器上定义而来的。应用上SPI接口主要用于EEPROM、FLASH、各种传感器AD转换器网络通讯等如下图所示。SPI有哪些特点呢SPI是一种高速的、全双工、同步的串行通信总线。与前面学习的UART串口以及IIC进行对比理解UART串口是双向两线制的异步串行全双工通信属于点对点连接的通信速率较低一般100多k左右但属于异步即没有时钟线需要双方使用波特率约定IIC是一种双向两线制的同步串行半双工通信总线一根时钟线和一根数据线通信速率稍微高一点点双方通过时钟线同步传输可一主多从但需要传输设备地址确定从机由于协议层相对复杂其实传输速率也不算高相比UART和IICSPI其实协议层复杂度几乎为0当然其硬件上相对复杂一点但因为传输协议上的简易其传输效率得到的极大的提升且硬件复杂其实是增加了接线使得以全双工因此这样直观来看SPI至少有一条时钟线、两条数据线加之多个从设备时的判断可能会有其他复杂度的上升当然为保证传输速度该复杂度仍然放在了硬件设计上相关内容后续介绍。总的来说由于协议层变得简单、硬件接线复杂度提高实现了IIC没有的全双工和UART没有的同步得到了UART和IIC没有的通信速率因此SPI是一种高速全双工同步串行通信总线。二、SPI物理层接下来先介绍一下SPI通信的物理层也就是硬件接线上的内容。1个SPI设备一般至少有4条线分别是SCK、MOSI、MISO以及SS线简单来说即时钟线、主输出从输入线、主输入从输出线以及芯片选择线。1、SCK时钟信号线顾名思义与前面IIC一样的时钟线用于通信数据同步双方通过时钟信号线连接实现数据收发的同步。时钟信号由主机MCU如STM32产生时钟频率决定通信的速率。不同设备支持的最高时钟频率不一样在STM32中包含的SPI接口有两个分别分布在不同的外设总线上手册规定STM32上SPI的时钟频率最大为所在外设总线上时钟频率的一半即fpclk/2如SPI若在APB1上则SPI的时钟频率最高为36/218MHz若SPI在APB2上则SPI的时钟频率最高为72/236MHz。同时俩设备进行通信时通讯速率将受限于低速设备。2、MOSIMaster Output Slave Input的缩写即主设备输出/从设备输入引脚。即主机上数据经过MOSI引脚输出给从机从机上主机数据会经过MOSI引脚被从机读取换句话说从机通过MOSI线读取主机发送的数据。即MOSI线上数据的传输方向为主机-从机。3、MISOMaster Input Slave Output的缩写即主设备输入/从设备输出引脚。即主机上从机上发来的数据经过MISO被主机读取也就是主机通过MISO获取从机那边过来的数据从机上数据经过MISO线输出给主机。即MISO线上数据的传输方向为从机-主机。4、SS线SPI Select线标准写法为CSChip Select片选信号线有时候也称NSS线。由于SPI通信支持一主多从且SPI通信时各个设备不像IIC设备会有地址因此为了区分不同的从机设备并尽可能保证传输速率故产生了SS线用于确定主机和哪个设备通讯。主机与从机通信时对应从机的SS线会置为低电平反之默认拉高通过将从机的片选引脚与主机的GPIO引脚相连即可判断通信的从机是哪一个了。即多从机进行SPI通信时主机将与从多个从机片选线分别相连换句话说一主多从时就需要连接多条片选线。主从设备之间连接示意图如下图所示。由图可见SCK、MOSI、MISO都是以总线方式连接了多个从机即主机以并联连接多个从机然后片选线则是单独专线专用几个从机则主机上几个片选线引脚。需要注意的是SPI只能主从设备之间进行通信从与从之间是无法进行通信的。三、SPI协议层接着我们再介绍一下SPI的协议层。其实SPI的协议复杂度几乎为零也就是说协议层其实几乎没有复杂的时序控制逻辑。即协议层主要介绍一下SPI通信时主从设备之间在时钟同步时进行数据交换的时序逻辑。这里所述的是数据交换而不是数据收发原因在于SPI通信时主机与从机之间的数据传递是同步的换句话说主机发送数据的同时从机也会发送数据给主机。3.1 数据交换过程分析下图为SPI通信的主从设备的数据交换简化框图。从上图可见主机和从机在包含物理层介绍的引脚外其内部一般还包括移位寄存器以及接收缓冲区其实还包括发送缓冲区即类似串口中的TDR和RDR发送接收数据寄存器。只不过这里示意图没画出来实际是存在的也就是数据会从发送缓冲区给到移位寄存器然后进行数据交换每交换8位数据后给到接收缓冲区。具体过程分析如下首先移位寄存器是用于临时存储要交换的数据即来自发送缓冲区接收缓冲区是存储最终得到的值。当主设备在SCK上产生一个时钟上升沿信号时主机和从机将分别把自己高位的值经过移位寄存器左移出来即SPI一般高位先行接着主设备在SCK上产生一个时钟下降沿信号时主机和从机分别读入数据存储到各自移位寄存器的低位......经过8次重复的操作就完成一个字节的数据交换最后从接收缓冲区就可读出数据了。当然了这里可能存在一些疑问即SPI通信时主从设备总是进行数据交换那我想只是主机发送一下数据或者只是接收一下从机发来的数据咋办呢这其实很好解决既然我只想主机发送数据那就相当于不管主机接收到的数据呗即可以让从机随便发送一串数据过来就行了我们不管认为此时从机发来的数据无效或者是MISO传输的数据无效即可同理我们只想主机接收数据那就相当于不管主机发送给从机的数据即可以让主机随便发送一串数据过去就行了我们不管认为此时主机发给从机的数据无效湖州市MOSI传输的数据无效就好。总结一句话我们只需要让我们想要接收或者发送的数据是正常的数据即可。所以由上述分析可见SPI的协议部分非常简单主要就是对时钟信号的控制根据时钟信号的边沿信号来完成数据的采集即可同时数据的发送是高位先行。3.2 时钟极性和相位因为前面介绍SPI协议层数据交换过程时重点在于分析SPI通信过程中主从设备进行数据交换的过程因而对时钟控制部分进行了简化描述而在实际情况下主从设备允许进行数据读取即数据采样的跳变沿是由明确的规定的即和设置的时钟极性和相位密切相关。简单来说时钟的极性就是表示SPI通信时空闲状态没有数据采集的电平状态时钟的相位表示的是SPI通信时出现什么跳变沿时可以进行数据采样。3.2.1 时钟极性首先介绍时钟极性即CPOLClock Polarity的缩写翻译过来就是时钟极性的意思。因为SPI通信的整个过程无非是采样数据即读数据和不读数据即空闲时刻这两种状态所以时钟极性的配置决定的主要是空闲时刻所在的时钟电平状态。当CPOL0时空闲状态下SCK时钟信号处于低电平换句话说此时SCK为高电平时可进行数据采样当CPOL1时空闲状态下SCK时钟信号处于高电平换句话说此时SCK为低电平时可进行数据采样当然了光设置一个时钟极性是不足以判断什么跳变沿时可以进行数据采样因为当初考虑到可能空闲状态刚刚出现跳变沿时可能主从设备还没有准备好进行数据采样可能需要等一个跳变沿以后再开始因此便有了时钟相位的配置。3.2.2 时钟相位时钟相位即CPHAClock Phase的缩写就是时钟相位的意思。配置时钟相位将直接决定SPI总线从哪个跳变沿开始采样数据。当CPHA0时表示从空闲状态的电平转变后的第一个跳变沿开始采样。比如空闲为低电平时出现上升沿表示可以开始数据采样了。当CPHA1时表示从空闲状态的电平转变后的第二个跳变沿开始采样。比如空闲为低电平时出现下降沿表示可以开始数据采样了。由此可见只有同时配置时钟极性和相位才可确定实际可以进行数据采样的跳变沿。也就是说SPI通信的时钟配置一个存在4种不同的配置决定最终空闲状态的时钟信号线电平状态以及数据采样开始的跳变沿。3.2.3 时钟配置模式通过配置不同的时钟极性和时钟相位排列组合可得出四种不同的时钟配置模式如下表所示。ModeCPOLCPHA空闲时刻电平数据采样开始的跳变沿mode 000低电平空闲态转变后的上升沿mode 101低电平空闲态转变后的下降沿mode 210高电平空闲态转变后的下降沿mode 311高电平空闲态转变后的上升沿当然最初设计SPI的人员考虑比较全面所以设计出了那么多模式但是实际情况下并不会使用那么多。当前很多设备支持都支持的是模式0和模式3而我们大多选择模式0就行了。以上便是本次文章的所有内容欢迎各位朋友在评论区讨论本人也是一名初学小白愿大家共同努力一起进步吧鉴于笔者能力有限难免出现一些纰漏和不足望大家在评论区批评指正谢谢

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询