STM32之SPI详细解析

      最后更新:2022-03-14 17:25:04 手机定位技术交流文章

      SPI介绍

      SPI协议是一个标准化的数据传输系统。

      SPI具有以下显著特征:

      • 主模式和从模式

      • 双向模式

      • 从模式选择输出

      • 发生模式失败时中断 CPU 并显示错误信息的能力

      • 双缓冲数据寄存器

      • 有可编程杆和序列的时钟被称为序列钟。

      • SPI活动的等待模式控制

      引脚描述:

      MOSI: 当配置为主模块时, 此脚用于从 SPI 模块传输数据, 从 SPI 模块接收数据 。 (主输入)

      MISO: 配置为 SPI 模块时, 从 SPI 模块传输数据, 配置为 主模块时接收数据 。 (主要出入口)

      当 SPI 模块被配置为数据传输的主控件时, 当 SPI 模块被配置为数据传输的主控件时, SPI 被配置为接收选中信号的输入的控制时, SS( 低效力) 用于将选中的信号从 SPI 模块导出到另一个外部设置 。
      那脚跟选择的一块一样

      SCK: 此脚用于输出 SPI 传输数据或接收连接在时钟上的时钟 。

      时序分析

      首先,我们必须理解两个概念:CCHA(钟阶段、钟阶段)和CPOL(钟政策、钟极)。

      1. 虽然SPI通信设备闲置,但时钟两极化被逆转。SCK信号线的平方信号(即当NSS线高、SPI通信开始时SCK状态)。CPOL=0 时,当SCK不受约束时,它的水平很低。CPOL=1 时,则相反。

      2. 当数据取样时, MOSI 或 MISO 数据行上的信号在 CHA=0 时在 SCK 钟线的“ 奇缘” 上取样。 当 CPHA=1 时, 数据行在 SCK 钟线的“ 偶边缘” 上取样 。

      因此,SPI有以下四个时钟配置情况:

      模式 CLK
      CPOL = 0;CPHA = 0 当SCK时钟是免费的,它是低水平的,数据线上的信号是沿着SCK时钟的奇特边缘取样的。
      CPOL = 1;CPHA = 0 当SCK是自由的,它是高层次的,数据线信号按照SCK时钟的奇特边缘取样。
      CPOL = 0;CPHA = 1 当SCK自由时,它是低水平的,数据线上的信号按照SCK时钟的平面进行抽样。
      CPOL = 1;CPHA = 1 当SCK自由时,它是高层次的,数据线上的信号按照SCK时钟的平面进行抽样。

      CPH = 时间序列1中的0

      在这里插入图片描述

      从时序图可以看出,当CPHA等于零的时候,不管CCPOL是多少平等,这是SAMPLE 列中的样本项( 橙色盒)。这一切都在奇怪的边缘, 这一切都在奇怪的边缘。这表明,CPHA是影响抽样比值的唯一因素。因此,在我们开始采样之前 我们必须减少党卫军即进行片选。

      CPH = 时间序列2中的1

      在这里插入图片描述

      从时序图可以看出,当CPHA等于1时,不管CCPOL是多少平等,这是SAMPLE 列中的样本项( 橙色盒)。所有样本都沿着直线边缘收集。这表明,CPHA是影响抽样比值的唯一因素。因此,在我们开始采样之前 我们必须减少党卫军即进行片选。

      综上所述,可以得出结论,SPI比IIC更加自由,使开发商有更大的自由匹配余地。

      例如,在写入 OLED 的 spi 时, 可能不需要将 MISO 添加到脚上, 而是将 DC (数据/ Command) 添加到脚上, 从而区分传输的数据和命令 。

      让我们看看硬件 SPI 和软件模拟 SPI 现在。

      SPI 硬件STM32

      让我们来看看一些SPM32硬件, 像STM32F103RCT6。

      功能框图

      在这里插入图片描述

      1. 如前所述,四个牵头机构是MOSI、MSISO、SCK和NSS。
      2. 从框架中可以看出,港口费率发电机SCK与港口费率发电机相连。那么可想而知,它被用于生成时钟信号。它被用于生成时钟信号。所以它必须和SSM32钟有关也有可能按这种方式 做频率或任何东西并且框图也指出,发射机SPI_CR1的BR[2,0]指向波特速率发电机。由数据手册得知,对于折叠时钟,这是分数频率系数。SSCK 脚脚的输出时钟频率是 fpclk 的分数频率 。fpclk 频率与 SPI 所在的 APB 频率相对应。
        计算结果如下:
      BR[0:2] SCK 频率(半频率)结果
      000 fpclk/2
      001 fpclk/4
      010 fpclk/8
      011 fpclk/16
      100 fpclk/32
      101 fpclk/64
      110 fpclk/128
      111 fpclk/256
      1. 数据控制模块:这一部分包括缓冲区接收、缓冲区发送和数据传输登记册。
        发送数据的时候,数据传输登记册在缓冲区内将数据从一个传送到另一个;在收到数据后,数据传输登记册一对一地读取缓冲区内收到的数据。“ Control Repositor CR1” 中的“ DFF 位元” 也可以用来将每个数据框的长度设置为 8 或 16 位 。设置“LSBFIRST 位元”以选择是移动更高(MSBs)还是更低(LSBs)。

        数据储存库(DR)可用于以书写SPI数据储存库的形式填充传输缓冲,接收缓冲可通过读取SPI数据储存库进入。

      2. 其余是与SPI有关的控制的一般配置。根据我们的配置,SPI变化的运作方法。除了与SPI有关的参数的基本配置外,还有SPI中断信号、DMA请求、NSS线设置等等。

      管理下从选择( NSS) 脚或 SS 脚中选择胶片

      有2种NSS模式:

      • 软件NSS模式:这是通过在 SPI_CR1 登记册中配置 SSM 位置来实现的。内部NSS 信号级别可以通过在 SPI_CR1 中写入 SSI 位子来控制,而 SSI 位子可以用作替代功能。

      • 硬件NSS模式,有两种选择:

      - 当STM32是主机时,将启用NSS输出。SPI_CR2登记册的 SSOE 位还启用了NSS 输出 。NSS退役后所有NSS制导脚都与这一初级SPI制导的NSS制导连接,并配置为NSS-SPI硬件装置。将自动变成从机。当SPI设备必须提供广播数据时,它会这样做。它必须减少NSS信号通知东道主的所有其他设备;如果它不能减少NSS,这表明,公共汽车上还有另一个主要装置。因此,将发生硬件故障错误(硬件故障)。

      _NSS 输出已被关闭:已授权在多个主机环境中运行。

      在这里插入图片描述

      通讯过程

      野火 STM32微控制器

      在这里插入图片描述

      以下是关于接收和接收程序和活动的主要模式的说明:

      (1) 指挥NSS信号线,该信号线产生第一个信号(没有在图片中显示),即首先删除NSS;

      (2) 输入要传送到DR的数据,该数据将在传送缓冲区中保存。

      (3) 通信开始,SCK时钟开始运行,MOSI一次从缓冲区发送数据,MISO一次将数据储存在接收缓冲区。

      (4) 在传输数据框架时,在“国家登记册SR”中,“TXE标记”将设为1。表示传输完一帧,分配缓冲区也空缺。一旦你收集到数据"RXNE标记"将放在一个位置表示传输完一帧,接收缓冲区不是空的;软件清除这两个标记。

      (5) 我们正等待“TXE标记”为1。如果您想继续发送数据,必须重复此进程。将数据再次写入数据存储库 DR; 等待“ RXNE 符号” 为 1 。读取“数据库DR”后,您将获得接收缓冲地带的内容。如果我们能阻止TXE或RXNE当 SPI 中断信号由 TXE 或 RXNE 设定为 1 时,输入与以前相同的中断服务功能。随着SPI服务计划的中断,登记册的位置可用于确定事件的性质。再分别进行处理。数据管理部也可接受数据存储库DR的数据并进行数据传输。

      初始化结构体

      关于其他SPI飞机,偶尔会提到机器的数据手册;这种机器往往分为两类:

      1. 在FLASH芯片中,只有W25Q64等进出数据;
      2. 发送和接收数据和指示,例如,通过额外使用DC来区分SPI数据和SRI数据,如OLED数据。

      软件SPI

      SPI软件是一种时间序列和通讯技术, 使用标准的 IO 嘴复制 SPI 。 我将用 SPM32CubeMX 来教你如何使用它 。

      GPIO配置

      DC 使用它来区分写入数据和写入命令。

      BLK 控制 LCD 背光灯 。

      CS即片选

      SCK即时钟

      SDA表示MOSI信号线。

      值得指出的是,在本案中,即使SCK时钟是高水平的,但免费的, 即CPOL=1, SCK=1, SCK=1, SCK=1, SCK=1, SCK=1, SCK=2, SCK=1, SCK=1, SCK=1, SCK=1。

      在这里插入图片描述

      模拟时序

      用于写入 8 位数据的共同函数,入口数据dat,首先选中LCD,进入循环,对 Dat 高位位数的检查得出值为 1 或 0 。已经决定,内政部将产生1或0个或0个。这一切都发生在时钟脉搏的空间里一次循环结束后,dat左移一位,这是第一次我听说过它, 我从来没有见过它。准备下个周期在8次循环过后,8比特数据的传播已经完成。事实上,液晶显示器正在使用中。SPI只是关注以下职能:该段的其余部分将进一步阐述这一点。(在取样时,奇边缘和偶边缘之间没有明显的区别。 )

      当然,可以从前一种推论中推断出,但是在LCD上没有MISO,所以简单地看一看。

      例如,考虑制作16位数的数据集。

      比如LCD写命令

      总结

      仅根据SPI的基本协议,SPI可能不如IC复杂。只是有四种不同的设计然而,基本SPI将扩大协议,这取决于不同的选择。这更使方案拟订工作复杂化。然而,这也改善了协定的独立性。速率方面的话,同一芯片的硬件SPI比软件SPI快得多。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/20098.html

          热门文章

          文章分类