最后更新:2022-04-01 07:56:13 手机定位技术交流文章
摩托罗拉提出了SPI协议,这是一项通信协议(连续近距离接口)。这是连环外围设备接口。这是辆全时高速通讯巴士它通常在ADC、LCD和其他装置以及MCU之间使用。= 要求采用高通信率。这就是冰冷的对比。iic的速率较低,通信往往是低速装置之间的通信。
以下是共同的SPI硬件连接图:
相关引脚说明如下:
标准 SPI 时间序列看起来是这样的:
以下是对本协定程序的说明:
下图说明从逻辑分析器和LSB第一线数据中收集MSB第一线数据与LSB第一线数据之间的差别:
下面为MSB先行:
我也使用Logo Analyzer的数据来描述这种情况,数据从开始和结束的信号开始。当时钟信号降到某一阈值以下时,该工具即启动并准备进行通讯!
现在,关注我们的数据比特, 我们可以看到, 恒定线每8个数据变化 与我们的数据对应一个字节, 数据随着上升开始变化, 数据在下降时被读取, 这就是我们在通信过程中获得和接收的数据!
当然,在 SPI 下, 每个数据传输单位可以是 8 位或 16 位, 每个传输单位的数量无限。 这是我们必须准备的 。 我们只是以最传统的方法为例!
当然,SPI只是一种通信方法,有四种通信方式,关键区别在于CSK的时钟状况,即公共汽车是免费的,以及数据取样的时间。CPOL 时钟和时钟钟对配对的概念。
这在CUBEMX设置页面上显而易见,
虽然SPI通讯装置闲置,但CDOL是SCK信号线的平面信号。也就是SCK条件 当NSS线高 和SPI通信开始时对不起,但我不知道。CPOL=0,SCK是低的,平的, 当CPOL=1,SCK是高的,平的。
CPHA的时钟阶段表示数据抽样的时间。根据CHP=0,MOSI或MISO数据线上的信号在SCK时钟线的“奇缘”取样。当CPH=1时,数据线在SCK时钟线的“偶边缘”取样。。
CPHA = 0,由于时钟两极变化,数据传输各异
我们不在乎是CPOL=0还是1 因为我们设定了时钟 CPHA=0如图所示,样本时间在SCK奇特边缘。。注意当当时钟等于零时,时钟的奇特边缘上升,而时钟的奇特边缘则沿着时钟的奇特边缘下降,时钟的奇特边缘等于1时。。因此,SPI的取样时间不受上下轴的制约。在SCK的奇特边缘 MOSI和MOISO数据线的有效信号保持恒定数据信号将在SCK奇特边缘进行取样。在非采样时刻,MOSI和MOISO的有效信号被交换。
CPHA=1,由于时钟两极差异,数据传输各异
上图还显示,当CHP=1不受CPUL影响时,在SCK的平面周围对数据信号进行取样。
我要把它输入逻辑分析器 这样我就能直观地想象这个过程
如下表所示,由于两个地点之间存在差异,人口价格指数将有四个模式:
| SPI模式 | CPOL | CPHA | 空闲时SCK时钟 | 采样时刻 |
|---|---|---|---|---|
| 0 | 0 | 0 | 低电平 | 奇数边沿 |
| 1 | 0 | 1 | 低电平 | 偶数边沿 |
| 2 | 1 | 0 | 高电平 | 奇数边沿 |
| 3 | 1 | 1 | 高电平 | 偶数边沿 |
STM32是微型控制器的例子。它基本上转移了所有SPI的能力然后,我完成了一些辅助工作。例如,我们并不总是需要它来阅读数据。你要做的就是写数据什么的相反,你只需要得到数据。这样的,Stm32 的硬件spi 已被修改以适应此功能 。下文简要叙述每项职能。
现在,我们学会了使用或无缘无故使用的东西, 这里有一个典型的SPI设备的例子, W25Q64 微处理器, 在一个标准的开发板上。
这里可以看到FLASH芯片。FLSAH内存也称为闪存库。它有EPROM和EPROM,这是一种记忆,在停电期间不会丢失数据。然而,FLASH的储存能力往往大于EPROM,而EPROM是世界上最大的。其地位基本上已被取代。在存储控制上,EPROM和FLASH芯片之间的根本区别是,EPROM只能写在一块巨大的土地上。EEPROM也可能在单字节上擦擦。
让我们看看标准的W25Q64指令
例如,根据上面的订单表,读取设备标识,发送了9FH,表示他需要设备标识:
当他返回时,他说:
主机 FLASH 芯片将第一个字节数据传输到“ 9F h ”, 当 FLASH 芯片获得数据时, 它被视为向它发布“ JDEC 命令” 的主机, 它回应 :将供应商身份(M7-M0)和芯片类型(ID15-0)发送给东道主。,主机会收到可核实的指令响应。
让我们先看一看他的图表,如下表所示。
在立方体中,适当的安排如下:
我们会根据这里的示意图 构建一个构件
这就是我们基本设置的结束。 这里就是代码的来源。 让我们来看一下上面提到的 I. D. 读数。 这是视频是如何被选中的。 如果您使用软件, 您必须每次阅读或写作时都减少它, 然后举起它 。
下次我们检查闪存芯片是否繁忙, 我们特别关心他的号码0, 当这是"1"时, 它表明FLASH芯片是活跃的, 可能正在“清理”或“数据写入”内部存储矩阵。
之后,有一个读写功能。它很可能是一个清洁, 然后是一个地址, 然后是写下来的, 最后我们读了它, 在我们最初指定的地址。
接下来,我们将在主函数初始化中添加下面的代码。
将软件下载到开发委员会,其效果如下:
w25q64.c
w25q64.h
本文由 在线网速测试 整理编辑,转载请注明出处。