最后更新:2022-05-22 10:12:36 手机定位技术交流文章
摩托罗拉的 SPI 协议( 连续近光界面) 是通信协议( 连续近光界面) 。半时/全时该界面可以设置为主模式,提供设备外部通信时钟,也可以配置多层主机,可用于若干应用,包括双线单体工人通过双向数据线同时传输,以及使用经《儿童权利公约》验证的可靠通信。
它通常用于ADC、LCD和其他装置和需要更高通信率的多边协调单位之间。
SPI经常每天24小时从两个方向进行交流:
同时收发数据双向程序不需要方向开关,它既需要发件人,也需要接收人,但它确实需要两条数据线。
SPI 通用通讯设备连接:
只有三条公共汽车线,所有关键装置或来自设备SCK、MOSI和MISO的信号线都同时连接到同一辆SPI公共汽车上。
(奴隶选择):从设备中选择信号线, 即选择片段的信号线, 也称为NSS, CS。 当设备通过多个 SPI 连接到 SPI 主机时,每个装置都有不同的NSS信号线此信号线是主机触发器之一的特有信号线, 即从设备中选择了多少个, 以及选择了多少个。 当主机从设备中选择时, 请取它从装置的NSS信号线 设定到低水平,该工具是选择的,主机启动与选定设备的 SPI 连接, 而该设备的其他未选中数据传输( NSS 到高级) 忽略了总线 。
SPI通信从低NSS线路开始,以高NSS线路结束。
SCK( 序列时钟) : 用于同步通信数据的时钟信号线 。只能由通讯主机产生,决定了通讯的速率由各种设备支持的STM32型SPI时钟的最高频率是fpclk/2,两个装置之间的通信仅限于低速设备。
MOSI(主输出,奴隶投入):初级设备产出/来自初级设备投入的指导。
主机发送来自机器的数据,接收来自机器的数据。
数据从服务器传输到主机,主机接收数据。
你的意思是不需要写首字母缩写?
NSS是机器专用的信号线
SPI使用MOSI和MISO信号线传输数据和SCK信号线同步数据。MOSI和MISO数据线在公共汽车上。SCK每时钟周期需要一个数据点 。数据输入和输出同时进行 这意味着我们当您发送一个数据时,您也将获得一个数据。MSB第一级或LSB第一级是不需要的,可以配置,但双向通信方法是不变的,MSB首先在大部分时间使用。
与其它协议一样,SPI协议保证在收集数据时数据稳定,并能够准备数据传输,以便在触发时进行下一次数据传输,但当收集到关于CPOL时钟两极分化的数据时,如何设置时钟。
SPI_CR登记册的PCOL和CPHA比特可用于形成四种不同的时间序列关系。
CCPOL( 时钟极) 位置设定在 :没有数据传输的时钟水平 。主要模式和模式设备都是如此。
如果CPL已经清除了"0",SCK已经启动并运行。空闲状态保持低电平;
如果CCPL设为“ 1 ”, SCK 将被激活 。空闲状态保持高电平。
如果CPHA 位元设为“ 1 ”, 则启动SCK 时钟 。第二个边沿为了保持数据稳定,数据比特被抽样并紧紧锁在第二钟上。
(如果是"0",就是"0",是"1",就是"1",就是了"0")
如果CPHA设为 '0', SSCK 时钟将被重置 。第一个边沿数据比位抽样,数据锁定第一时钟(数据稳定性)
(如果CBOL在“ 1” 中, 它在样本下方, 如果在“ 0 ” 中, 它在样本上方 。)
因此,根据CPOL和CPHA的数值(加上四项调查结果),不能完全确定数据是否一直在增加或下降。

参考上图即可,凌晨一点,只是CPHA,今天是第一天

总结:

拟使用的确切模型由双方支持连接的模型确定,如果我们任意配置主机,这一实验的FLASH支持模式0和3就足够了。
SPI框图:
SPI2和SPI3允许I2S通信,因为I2S协议与SPI协议相似,因此它们有一套相同的逻辑,即上面的SPI框架。
波特速率生成器控制SCK线的时钟信号, 以 BR [0: 2] 位元为基础, 在“ Control Repositor CR1” 中, 这是 fpclk 钟的分数频率系数, 以及 fpclk 输出时钟频率的频率, 即 SCK 页脚 。
STM32 SPI是作为主机和接口提供的,用于处理最高SCK时钟频率fpclk/2(STM32F103上的fpclk1为72兆赫,STM32F103上的fpclk2为36兆赫)。
SPI1附属于APB2大客车,最大传输速率为fpclk2/2=36Mbtis/s。
SPI2和SPI3被放置在APB1公共汽车上,通信率最高为Pklk1/2=18Mbits/s。
收到的数据在收到时保存在内部接收器缓冲器中。
在传送之前,数据将在发送时存放在内部发件人缓冲区内。
如果读取 SPI_DR 登记册, 接收缓冲内容将返回 。
写入 SPI_DR 登记册的数据存储在发件人缓冲器中。
理解以下图表至关重要:
为了制作时钟, 只有主机能提供数据 。因此,即使主机只接收数据,我们也必须从主机传输数据,只要它发送的数据被意外忽略。
MOSI的脚相互连接, MISO的脚相互连接。 这样数据就可以在主体和下一个主体之间相继传递( 前方的MSB ) 。主设备通过MOSI脚从设备中发送数据,通过MISO脚从设备中转发数据。。这表明数据输入和输出以同一时钟信号同步进行。主设备通过SCK脚提供时钟信号。
总结:
序列移动器通过MOSI信号线向机器发送字节,序列移动器的内容通过 MISO 信号线返回主机,交换两个移动器的内容。
所有标准书写和阅读操作都同步进行。
机器向主机传送数据信息,主机几乎肯定会得到另一个字节(可能毫无用处)。由于数据交换相当于两个装置的迁移内存,在数据发送时,数据交换传输了一个数据,并同时收到一个数据。
主机接收从机发送的数据时,由于为了制作时钟, 只有主机能提供数据 。驱动移位寄存器,所以要向从机发送一个空字节


以STM32主模式, 开始传输 。
重点看全双工模式:
我们平时都是全天候忙着这些花 谁会有时间?
• 全职(BIDIMIMDE=0和RXONLY=0)模式
- 将数据写入 SPI_DR 登记册(发送缓冲)时开始传输。
─数据从发送者平行发送到八位数移动登记册(可与仅一个时钟周期平行传输),然后在交付第一批数据的同时,依次移动到MOSI脚。;
─同时,MISO脚上收到的数据被相继转入八位数移动登记册,然后与SPI_DR登记册(收到缓冲)平行发送。
• 单向接收(BIDIMODE=0和RXONLY=1)
- 传送从SPE=下午1时开始。
- 仅启用接收器,MISO脚上收到的数据将逐步转入八位数的迁移登记簿,然后与SPI_DR登记簿(接收缓冲)平行发送。
• 双向交付(BIDIMODE=1和BDIMOE=1)
- 将数据写入 SPI_DR 登记册(发送缓冲)时开始传输。
- 初始数据由发送者发送,与八位数字移动器登记册平行,然后按顺序移动到MOSI脚上。
─ 不接收数据。
• 双向接收模式(BIDIMODE=1和BDIMOE=0)
- SPE=1,BIDIOE=0,开始传输。
- MOSI脚上收到的数据按顺序移入八位数移动登记册,并同时传送到SPI_DR登记册(收到缓冲)。
- 发射机失效,没有数据通过绳子传送到MOSI脚上。
准备工作:
理解以下形象至关重要:
总之,主机发送一个字节的数据并接收一个字节的数据。

TXE RXNE的第二项理解:
SPI_DR数据储存库与两个缓存库相关联:数据分发缓存和数据接收缓存。
当数据从发送者传输到移动内存时,将设置 TXE 标记(发送缓冲是空的)。下一个数据可由内部发送人接收。如果设置 SPI_CR2 登记册中的 TXEIE 位元, 此时会发生中断 。要清除 TXE 位元, 请向 SPI_ DR 注册处写入 。。
注1:在写给发件人缓冲符时,程序必须检查 TXE 符号为“ 1 ” ;否则,新数据将覆盖发件人目前的数据。
注1: 存于缓存中的数据只有在由一人,即一人,向移动登记册发送后,才会传送到移动登记册中。移民登记册的数据不会被覆盖。
在取样时钟的最后边缘随着数据从移动登记册传送到接收缓冲,将出现下列情况:设置 RXNE 指示器( 接收器缓冲区不是空的); 这表示数据是可用的 。可从 SPI_DR 登记册中读取;如果在 SPI_CR2 登记册中设置 RXNEIE 空格, 可以读取 。此时将发生中断;为了清除RXNIE标记,请阅读 SPI_DR 登记册。在一些设置中,BSY表示值可用于等待数据传输完成,同时传输最后的数据。

并行,然后从发件人发送到移动登记册(平行传输需要一个时间周期)串行转入MOSI脚(序列转移需要一个时钟周期)。串行然后转到8位数的移动登记册。并行SPI_DR 登记册(接收缓冲)已移交。总而言之,同时把登记簿转到缓存处,内存转到领先线。
重点来了:
事实上,你们知道你们面前的是什么,这幅图象没有问题。

SPI_Direction
等我们做了彻底的介绍 再说吧
SPI_Mode
此元素配置 SPI 任务, 从主机模式( SPI_ Mode_ Master) 或机器模式( SPI_ Mode_ Slave) 从主机生成时钟信号 。如果从机器模式STM32中设置为 SPI 外部, 它将会接受外部 SSCK 信号 。
SPI_DataSize
此成员可以指定 SPI 通讯的数据框架大小是 8 位( SPI_ DataSize_ 8b) 还是 16 位( SPI_ DataSize_ 16b) 。
SPI_CPHA和SPI_CPOL SPI_CPHA和SPI_CPOL SPI_CPHA 和SPI_CPOL SPI_CPHA 和SPI_CPHA SPI_CPPI

SPI_NSS
此组件配置 NSS 脚的操作模式 。您可以选择使用硬件模型( SPI_ NSS_ Hard) 或软件模型( SPI_ NSS_ Soft) 。在硬件模式中,SPI视频选择信号由SPI硬件自动生成。此外,软件模型需要我们人工增加或降低相关的GPIO端口,以便提供非狙击和电影选择信号。实际上,有更多的软件模型应用。
SPI_BaudRatePrescaler
SPI_FirstBit
这一结构的成员可编入STM32 SPI模块,以控制这一功能。
这是以多种方式执行SPI的《儿童权利公约》核查工作。如果我们使用CRC检查,这是首次允许成员使用该成员的参数(多个公式)。计算了CRC值。根据这些结构各组成部分的配置,要将这些参数写入登记册, 我们必须使用 SPI_ Init 函数 。实
当前 SPI 在使用 SPI_ cmd 启用 SPI 之前先初始化 。
下面的作为了解:
状态标志:
该方案可以利用三个状况指标彻底监测斯皮尔斯公共汽车的状况。
发送空缓冲指示( TXE) 。
此符号为“ 1 ”, 以信号显示发报机是空的, 您可以将下一个数据传送到缓冲。 在写入 SPI_ DR 时, TXE 标记将被删除 。
无空接收缓冲(RXNE)
此符号是“ 1 ”, 表示接收器缓冲中存在有效的接收数据。 此符号通过读取 SPI 数据登记册被删除 。
忙(Busy)标志
SPI电信层用BSY表示,用硬件设置和删除(写作无效)。
当设定为“ 1 ” 时, 它表示 SPI 进行通信, 只有一个例外: 在主要模式双向接收模式( MSTR=1, BDM=1, 和 BDOE=0) 接收时, BSY 标记保持低位 。在软件关闭 SPI 模块并进入模式( 或关闭设备钟) 之前, BSY 标记可用于识别传输的结束, 防止中断先前的传输, 要求严格遵守以下程序 :。
在多领域系统中,BSY标记也可以用来避免书面冲突。
除了主模式的双向接收模式(MSTR=1、BDM=1和BDOE=0)外,BSY符号在传输开始时设置为“1”。
如果符合下列任何条件,标记将删除为“0”。
• 传输终止(主要模式,除非使用连续通信);
关闭 SPI 模块时;
• 当主要生产方式(MODF=1)失败时。
如果信息通报不是连续的,则数据项传输之间的BSY指标较低。。
当通信是连续时:
• 在主模式下,BSY信号在传播期间保持高位;
• 从模式上看:每个数据项目传输之间的SPI时钟周期,BSY标记低。
关闭SPI
通信完成后, 关闭 SPI 模块。 清除 SPE 位元并关闭 SPI 。
如果转让未完成,某些装置可能关闭SPI模块和停机模式,造成当前传输中断和对BSY标识失去信心。
为了避免这种情况,建议在关闭SPI模块时采取下列程序:
进入或脱离模式(BIDIMODE=0,RXONLY=0)
1. 等待RXNE=1并获得最新数据;
2 TXE=1正在等待;
3.等待BSY=0;
四. 关闭 SPI(SPE=0)并输入关闭模式(或关闭模块的时钟)。
溢出错误
当主设备发送数据字节时出现溢出错误, 而前一数据字节创建的 RXNE 不从设备中删除 。
• OVR设为“1”;当ERRIE设为“1”时,即出现中断。
目前,接收器中的缓冲数据不是主设备提供的新数据。 请检查 SPI_ DR 登记册 。归还了以前所有未见的数据,并删除了今后所有通信。
要清除孤儿和易受感染者,请按顺序阅读SPI_DR和SPI_SR。
总之,读取缓存就是原始未读数据,如果发送溢出错误后收到的数据被删除的话。
这就是为什么我们必须在传输之前获得一个数据。因为我们要给闪电侠发一个指令 比如说仅一个空字节( 应该是 0xFF), 由闪光的第一个字节返回 。此时RXNE置位,如果我们不读的话 我们就在你后面
FLSAH内存也称为闪存库。它有EPROM和EPROM,这是一种记忆,在停电期间不会丢失数据。然而,FLASH的储存能力往往大于EPROM,而EPROM是世界上最大的。其地位基本上已被取代。U磁盘、SD卡、SSD固态硬盘以及用于在我们的STM32处理器中存储程序的设备,我们在日常生活中使用这些程序。所有这些都是FLASH储存装置。在存储控制上,主要区别是,FLASH芯片只能写在一块巨大的土地上。我们还在第一章C节中听说了EPROM擦擦字节。
NM25Q64EV芯片与W25Q64BV非常相同。

原理图:

硬件SPI协议逻辑

第一,在写入数据之前必须将其删除。
二. 在删除数据时,将所有数据位数重置为 1。
三. 当数据被写入时, 只有 1 可更改为 0 。 (这就是为什么您在写入数据前必须擦拭 。)
四区(4KB字节)加1是最小的清除单位。
我们的正常指挥是红色标志



返回的是 16H
9FH指令
52217H返回。
90H指令
5216H返回。
记住当我们返回 Flash 返回的 ID 时, 主机必须将空字节( 0x00) 传送给 Flash, 因为只有主机才能生成将 Flash 驱动回主机的时钟( 这是 ID ) 。
使用相同的时钟对传输和接收进行操作,主机在接收来自机器的数据时发送空字节( 这是 ID ) 。)
读取状态登记簿 1, 看看 FLASH 芯片是否有效( 擦拭或写入数据 ) 。

S7S0 / S15-S8 / S16-S23 命令代码“ 05H” / “35H” / “15H” 的等效输出状态内存槽S7S0 / S15-S8 / S16-S23 。
只要我们拿到数据 就能看FLASH芯片是否繁忙
我们必须检测当我们写数据时闪存芯片是写还是删除,或者当闪存擦去自己的数据时。
为什么有24个地址?因为24个地址足够8M字节

在您可以写入数据以闪光或删除您自己的数据之前,首先必须开发一个推进器。
闪光灯通过将其设置为 1 来抹去数据,与写入操作相同。
页写入特点:
一. 最多可同时写出256字节的数据。
二。 超过 256 字节不会写入 。
三。 写入 256 (Addr% 256=0) 地址
四. 无法写入少于256个不匹配地址数的更多数据。
此地址自动增长到每个地址后下一个更高的地址数据字节。 因此, 整个内存可以使用单个读取数据字节读取( 读取) 指令。 当地址计数器达到最大地址时, 它会滚动到 0 。
数据总是可以读取的,但只有时钟才能被驱动。
输入断电指令(DP),以确保该装置不处于深度封闭模式,并且不理会任何书面/方案/审查指令。
解除掉电模式
RDP(断电释放令)和RDI(阅读设备ID)多用途命令用于恢复设备停机状态或检索设备电子身份号码。
当命令只是用来获取设备识别码而不关闭时,它就通过将 CS# foot 驱动到最低水平,然后移动命令代码“ABH”,然后是三个虚拟字节(空字节)。
这就是全部。写这个代码并不难,它是一个时间图。
SPI数据应写入FLASH芯片,并宣读供核查**。
其指数脚CS/CLK/DIO/DO与STM32挂钩,用于对NSS/SCK/MOSI/MOISO的SPI指导。STM32NSS是一个标准的GPIO。不是SPI独特的NSS踢球因此,我们必须将软件控制纳入应用中。PA2作为我们的NSS,控制通信的启动和完成。

spi_flash.h
spi_flash.c
main.c
USATR、I2C和SPI协议都至关重要。这是一个合同 有很多相似之处。例如,数据可以平行传输。例如,数据发射机和转移地点。有着异曲同工之妙,因此,当我们了解这些通讯议定书时,我们必须反其道而行之。从中学习对其他通信协定极为有益。
本文由 在线网速测试 整理编辑,转载请注明出处。