首页 > 其他分享 >SPI

SPI

时间:2022-10-09 15:05:15浏览次数:75  
标签:CPOL 引脚 SPI NSS 设备 时钟

链接:SPI协议详解(图文并茂+超详细) - 知乎 (zhihu.com)

1、SPI协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。

2、SPI特征

(1)三线全双工同步传输

(2)8位或16位传输帧格式选择

(3)主或从模式

(4)可编程的数据顺序,MSB在前或LSB在前

(5)可编程的时钟极性CPOL和相位CPHA

(6)主模式和从模式下均可以由软件或硬件进行NSS管理:主/从操作模式的动态改变

(7)支持可靠通信的硬件CRC

在发送模式下,CRC值可以被作为最后一个字节发送;

在全双工模式中对接收到的最后一个字节自动进行CRC校验;

(8)可触发中断的主模式故障、过载以及CRC错误标志

(9)支持DMA功能的1字节发送和接收缓冲器:产生发送和接收请求

3、

 

 4、SPI通过4个引脚与外部器件相连:

MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据;

MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据;

SCK:串口时钟,作为主设备的输出,从设备的输入;

NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

5、从选择(NSS)脚管理

有2中NSS模式:

软件NSS模式:可以通过设置SPI_CR1寄存器的SSM位来使能这种模式。在这种模式下NSS引脚可以用作它用,而内部NSS信号电平可以通过写SPI_CR1的SSI位来驱动。

硬件NSS模式:(1)NSS输出被使能:当STM32F10XXX工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS引脚拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。

当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其他的设备它是主设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这时将产生一个硬件失败错误。

(2)NSS输出被关闭:允许操作于多主环境。

 

 注:(1)这里的NSS引脚设置为输入

MOSI脚相互连接,MISO脚相互连接。这样,数据在主和从之间串行地传输。通信总是由主设备发起。主设备通过MOSI脚把数据发送给从设备,从设备通过MISO引脚回传数据。这意味着全双工通信的数据输出和数据的输入是用同一个时钟信号同步的;时钟信号由主设备通过SCK脚提供。

6、时钟信号的极性和相位

SPI_CR寄存器的CPOL和CPHA位,能够组成四种可能的时序关系。CPOL(时钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果CPOL被清‘0’,SCK引脚在空闲状态保持低电平;如果CPOL被置1,SCK引脚在空闲状态保持高电平。

如果CPHA(时钟相位)位被置‘1’,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存。如果CPHA位被清‘0’,SCK时钟的第一边沿(CPOL位为‘0’时就是上升沿,CPOL位为‘1’时就是下降沿)进行数据为采样,数据在第一个时钟边沿被锁存。

所以CPOL和CPHA的组合选择数据捕捉的时钟边沿。

注:在改变CPOL/CPHA位之前,必须清除SPE位将SPI禁止

        主和从必须配置成相同的时序模式,也就是时钟、数据锁存边沿必须一致。

        SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL=1,空闲时应上拉SCK为高电平;CPOL=0,空闲时应下拉SCK为低电平)

       数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接收的数据长度。

标签:CPOL,引脚,SPI,NSS,设备,时钟
From: https://www.cnblogs.com/shengxiaose/p/16771704.html

相关文章

  • SPI(硬件)---OLED&SSD1306的使用
    先说结论:proteus貌似不是很支持硬件I2C和硬件SPI。。两次试验都没成功但基本的原理还是记录一下 工具软件:Keil、CUBEMX、Proteus 硬件:单片机---STM32F103C6......
  • sping-boot 项目搭建
    创建项目在线创建地址 SpringInitializr 解压导入idea使用mave导入依赖  定制banner,项目resource新建banner.txt文件复制艺术字 定制艺术字地址: http:......
  • STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]
    SPI是我最常用的接口之一,连接管脚仅为4根;在常见的芯片间通信方式中,速度远优于UART、I2C等其他接口。STM32的SPI口的同步时钟最快可到PCLK的二分之一,单个字节或字的通信时间......
  • SPI总线学习笔记
      SPI是串行外设接口(SerialPeripheralInterface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间......
  • 1、spingIOC+IDEA+Maven
    1、先配置spring、springmvc通用xml文件的头部信息spring、springmvc通用xml文件的模板内容如下:1<?xmlversion="1.0"encoding="UTF-8"?>2<beansxmlns="http://www.spr......
  • [Oracle] LeetCode 54 Spiral Matrix 模拟
    Givenanmxnmatrix,returnallelementsofthematrixinspiralorder.Solution点击查看代码classSolution{public:vector<int>spiralOrder(vector<ve......
  • 源码角度了解Skywalking之SPI在SKywalking中应用
    源码角度了解Skywalking之SPI在SKywalking中应用上篇文章中我们说到SKywalking的启动流程是怎样的,其中有一步是利用JDK的SPI机制来启动插件服务,今天我们就看一下具体是怎么......
  • 国产GP232RL兼容FT232RL USB转UART 采用两线SPI 可节省IO资源
    GP232RL是一款高度集成的USB到UART桥接控制器,提供了一种简单的解决方案,可以使用极少的元器件和PCB空间,将RS232接口转换为USB接口。GP232R包括一个USB2.......
  • spiffe
    TLSMutualAuthenticationEachmicroservicewillhaveitsowncertificatetoproveitsidentityHowdoweprovisioncertificatestoeachmicroservice?Ho......
  • 踩坑 - mybatispilus中saveorupdate
    @ApiOperation(value="新增或者修改设备")@PostMapping("saveOrUpdateDevice")publicvoidsaveOrUpdateDevice(@RequestBodyDeviceInfodeviceInfo){......