当前位置:首页 > 物联网 > 智能应用
[导读]在讨论SPI 数据传输时,必须明确以下两位的特点及功能:(1) CPOL: 时钟极性控制位。

SPI 是由摩托罗拉(Motorola)公司开发的全双工同步串行总线,是微处理控制单元(MCU)和外围设备之间进行通信的同步串行端口。主要应用在EEPROM、Flash、实时时钟(RTC)、数模转换器(ADC)、网络控制器、MCU、数字信号处理器(DSP)以及数字信号解码器之间。SPI 系统可直接与各个厂家生产的多种标准外围器件直接接口,一般使用4 条线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI 和低电平有效的从机选择线SSEL。

在讨论SPI 数据传输时,必须明确以下两位的特点及功能:(1) CPOL: 时钟极性控制位。该位决定了SPI总线空闲时SCK 时钟线的电平状态。CPL=0,当SPI总线空闲时,SCK 时钟线为低电平。CPL=1,当SPI总线空闲时,SCK 时钟线为高电平。(2) CPHA: 时钟相位控制位。该位决定了SPI总线上数据的采样位置。CPHA=0,SPI总线在时钟线的第1个跳变沿处采样数据。CPHA= 1,SPI总线在时钟线的第2个跳变沿处采样数据。

行外设接口 (SPI) 总线是一种运行于全双工模式下的同步串行数据链路。用于在单个主节点和一个或多个从节点之间交换数据。SPI 总线实施简单,仅使用四条数据信号线和控制信号线(请参见图 1)。


一种运行于全双工模式下的同步串行数据SPI总线链路介绍

图 1 基本的 SPI 总线

尽管表 1 中的引脚名称取自 Motorola 公司的 SPI 标准,但特殊集成电路的 SPI 端口名称通常与图 1 中所标示的名称有所不同。


一种运行于全双工模式下的同步串行数据SPI总线链路介绍

表 1 SPI 引脚名称分配

SPI 数据速率通常介于 1 到 70 MHz 之间,字节长度范围从 8 位和 12 位到这些数值的倍数位。

数据传输通常会包含一次数据交换。当主节点向从节点发送数据时,从节点也会向主节点发送数据。为此,主节点的内部移位寄存器和从节点被设置成环形(请参见图 2)。


一种运行于全双工模式下的同步串行数据SPI总线链路介绍

图 2 两个移位寄存器形成一个内部芯片环形缓冲器

在数据交换之前,主节点和从节点使其内部移位寄存器加载存储器数据。产生时钟信号时,主节点会通过 MOSI 线同步输出其移位寄存器。同时,从节点在 SIMO 处从主节点读取第一位,并将其存储到存储器中,然后通过 SOMI 输出 MSB。主节点会在 MISO 处读取从节点的第一位,并将其存储到存储器中以待稍后处理。整个过程将一直持续,直至交换完所有数据位,然后主节点使时钟空闲并通过 /SS 禁用从节点。

除设置时钟频率之外,主节点还会配置相对于数据的时钟极性和时钟相位。这两个选项分别称作 CPOL 和 CPHA,能够允许时钟信号实现 180 度相移且数据延迟半个时钟周期。图 3 显示了相应的时序图。


一种运行于全双工模式下的同步串行数据SPI总线链路介绍

图 3 时钟极性和相位的时序图

CPOL = 0 时,时钟在逻辑 0 处空闲:

如果 CPHA = 0,数据会在 SCK 的上升沿上读取,在下降沿上变化。

如果 CPHA = 1,数据会在 SCK 的下降沿上读取,在上升沿上变化。

CPOL = 1时,时钟在逻辑高电平处空闲:

如果 CPHA = 0,数据会在 SCK的下降沿上读取,在上升沿上变化。

如果 CPHA = 1,数据会在 SCK 的上升沿上读取,在下降沿上变化。


一种运行于全双工模式下的同步串行数据SPI总线链路介绍

图 4 主节点与独立从节点(左)以及菊花链式从节点(右)进行通信

从节点独立寻址时,主节点必须提供多个从选择信号。该结构一般用在数据采集系统中,其中的多个模数转换器 (ADC) 和数模转换器 (DAC) 都必须单独接入。

菊花链式从节点需要主节点提供唯一的从选择信号,因此该结构要求同时启用所有从节点,以确保菊花链内通过所有移位寄存器的数据流不会中断。典型的应用为工业级 I/O 模块中的级联多通道输入串行器和输出驱动器。

目前的项目中使用了SPI总线接口的FLASH存储器存储图像数据。FLASH的SPI总线频率高达66M,但MCU的频率较低,晶振频率 7.3728M,SPI最大频率为主频1/2。对于320*240*16的图像读取时间为333ms,而且还忽略了等待SPI传输完成、写显存、地址坐标设定等时间。实际测试约为1s。成为GUI设计的极大瓶颈。由于TFT驱动是自己FPGA设计的,资源尚有余量,决定把SPI控制器(主)及写图像部分逻辑放入FPGA中用硬件完成。

首先接触到的是SPI的SCK时钟频率问题。FPGA的频率是48M,未使用PLL。能否以此频率作为SCK频率呢?要知道所有的MCU提供的 SPI频率最大为主频的1/2!为什么呢?查过一些资料后发现,SPI从机接收数据并不是以SCK为时钟的,而是以主频为时钟对SCK和MISO进行采样,由采样原理得知SCK不能大于1/2主频,也就有了MCU提供最大master频率是1/2主频,最大slaver频率是1/4主频。FPGA在只作为主机时能否实现同主频一样频率的SCK呢??答案貌似是肯定的!但我还是有点担心,用组合逻辑控制SCK会不会出现较大毛刺影响系统稳定性呢?

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统中,Flash存储器因其非易失性、高密度和低成本特性,成为代码存储和关键数据保存的核心组件。然而,MCU驱动Flash读写时,开发者常因对硬件特性理解不足或操作流程疏忽,陷入性能下降、数据损坏甚至硬件损坏的陷...

关键字: MCU驱动 Flash

深圳2025年4月24日 /美通社/ -- 4月23日,2025上海国际车展盛大启幕,全球汽车产业的目光聚焦于这场科技与创新的盛宴。在众多展示亮点中,汽车AI+应用无疑是最大的热点之一,“驾控超级大脑”技术概念、车机交互...

关键字: GB EMMC Flash PS

在自动驾驶、机器人与工业检测领域,激光雷达作为环境感知的核心传感器,其技术路线正从机械式向固态化演进。MEMS、OPA与Flash作为固态激光雷达的三大主流架构,分别通过微机电系统、光学相控阵与泛光面阵技术实现扫描与探测...

关键字: MEMS OPA Flash

在嵌入式系统开发中,外部存储介质的选择和管理至关重要。SPI Flash以其高容量、低功耗、高速率等特点,成为众多嵌入式设备的首选存储方案。然而,如何高效管理SPI Flash存储,避免数据丢失、提高读写性能,是开发者必...

关键字: 嵌入式SPI Flash LittleFS

STM32单片机作为一种高性能、低功耗的嵌入式微控制器,广泛应用于各种电子设备中。在实际应用中,为了扩展存储空间或实现数据的持久化存储,经常需要使用外部FLASH存储器。本文将详细介绍STM32单片机如何读写外部FLAS...

关键字: STM32 Flash

在嵌入式系统和存储设备领域,Flash和EEPROM(电可擦可编程只读存储器)因其非易失性存储特性而被广泛应用。这些存储设备能够在断电后保持数据,对于需要长期保存配置参数、程序代码或用户数据的应用来说至关重要。然而,关于...

关键字: Flash EEPROM

在现代电子系统中,单片机(MCU)作为核心控制单元,其性能与存储容量直接影响整个系统的功能与可靠性。随着物联网、智能家居、工业自动化等领域的快速发展,单片机系统需要存储越来越多的数据、程序代码和日志文件,而内置的Flas...

关键字: 单片机 Flash MCU
关闭