RT1064学习笔记-LPSPI

Low Power Serial Peripheral Interface (LPSPI)

介绍

简介与特征

LPSPI是一个低功耗串行外围接口(SPI)模块,它支持一个有效的SPI总线接口作为主和/或从。LPSPI可以在停止模式下继续工作,只要有适当的时钟可用,并且设计为使用DMA卸载FIFO寄存器访问的低CPU开销。

  • 字大小=32bits
  • 16字大小的命令/传输FIFO
  • 16字大小的接收FIFO
  • 主机请求输入可以用来控制SPI总线传输的开始时间

系统框图

在这里插入图片描述

操作模式

模式 LPSPI操作
Run 正常模式
Stop 如果Doze使能位(CR[DOZEN])是明确的,并且LPSPI正在使用外部或内部时钟源,在停止模式下可以继续运行。
Debug (the core is in Debug/Halted mode) 如果设置了调试使能位(CR[DBGEN]),可以继续操作。

信号描述

信号 描述 I/O
SCK 串行时钟。从模式输入,主模式输出。 I/O
PCS[0] 外围芯片选择。从模式输入,主模式输出。 I/O
PCS[1] / HREQ 外设芯片选择或主机请求。当HREN=1, HRSEL=0时,选择Host Request pin。输入在从属模式或当用作主机请求时,输出在主模式。 I/O
PCS[2] / DATA[2] 外围芯片选择或数据引脚2在四数据传输。从模式输入,主模式输出,四数据接收传输输入,四数据传输输出。 I/O
PCS[3] / DATA[3] 外围芯片选择或数据引脚3在四数据传输。从模式输入,主模式输出,四数据接收传输输入,四数据传输输出。 I/O
SOUT / DATA[0] 串行数据输出。可配置为串行数据输入信号。用作四数据和双数据传输中的数据引脚0。 I/O
SIN / DATA[1] 串行数据输入。可配置为串行数据输出信号。用作四数据和双数据传输中的数据引脚1。 I/O

功能描述

时钟和重置

功能时钟
LPSPI功能时钟与总线时钟是异步的,如果它在低功耗模式下保持启用,则LPSPI可以在主模式和从模式下执行SPI总线传输和低功耗唤醒。LPSPI将功能时钟除以一个预分器,得到的频率必须至少比SPI外部时钟(LPSPI_SCK)的频率快两倍。

外部时钟
LPSPI移位寄存器由LPSPI_SCK时钟直接计时,LPSPI_SCK时钟要么在主模式内部生成,要么在从模式外部提供。

总线时钟
总线时钟只用于对控制和配置寄存器的总线访问。总线时钟频率必须足够支持LPSPI寄存器(包括fifo)的数据带宽要求。

芯片重置
LPSPI的逻辑和寄存器在芯片复位时被重置为它们的默认状态。

软件重启
LPSPI在控制寄存器中实现一个软件复位位。CR[RST]将重置所有的逻辑和寄存器到它们的默认状态,除了CR本身。

FIFO复位
LPSPI实现只写控制位,重置发送/命令FIFO (CR[RTF]和接收FIFO (CR[RRF])。FIFO复位后为空。

主机模式

发送和控制FIFO

传送和命令FIFO是一种结合了传送数据和命令字的FIFO。通过写入发送命令寄存器,命令字被存储到发送/命令FIFO。传输数据字通过写入传输数据寄存器存储到传输/命令FIFO。
当一个命令字位于发送/命令FIFO的顶部时,可以发生以下操作:

  • 如果LPSPI在帧之间,命令字从FIFO取出并控制所有后续传输。
  • 如果LPSPI正忙,现有的CONT位是清除的,或者新的conc值是清除的,则SPI帧将在现有字的末尾完成,忽略FRAMESZ配置。然后从FIFO提取命令字并控制所有后续传输(或直到对命令字的下一次更新)。
  • 如果LPSPI正忙着和现有控制设置和新CONTC值设置,命令词从现有的FIFO过去LPSPI_SCK脉冲帧(基于FRAMESZ配置)和帧继续使用其他框架的新命令值(或直到下一次更新命令词)。当设置了CONTC时,只更新命令字的下24位。

可以通过读取传输命令寄存器来读取现有命令字的当前状态。它需要至少三个LPSPI功能时钟周期,以便发送命令寄存器在写入后更新(假设FIFO为空),并且LPSPI必须启用(CR[MEN]设置)。
写入发送命令寄存器不会启动SPI总线传输,除非设置了TXMSK位。设置TXMSK后,新的命令字将在现有帧结束时加载(基于FRAMESZ配置),TXMSK位在传输结束时清除。

下表描述了由命令字控制的属性。

Field Description Modify During Transfer
CPOL 配置LPSPI_SCK引脚极性。CPOL值的任何改变都将导致LPSPI_SCK引脚上的转换。 N
CPHA 配置传输时钟相位。 N
PRESCALE 配置用于划分LPSPI功能时钟的预分度器,以生成SPI总线传输的计时参数。与PCS一起改变PRESCALE允许LPSPI以不同的频率连接到不同的从设备。 N
PCS 配置LPSPI_PCS断言传输的极性,LPSPI_PCS的极性是静态的,由PCSPOL配置。如果设置了PCSCFG,则不应该选择PCS[3:2]。 N
LSBF 配置是否先发送/接收LSB(位0)或MSB(位31,32位字)。 Y
BYSW 在传输和接收数据时,在每个32位字上启用字节交换。当连接到将数据组织为大端的设备时可能很有用。 Y
CONT 配置一个连续传输,使PCS在帧之间断言(由FRAMESZ配置)。一个新的命令字是必需的,以使PCS否定。还支持在帧大小边界更改命令字。 Y
CONTC 指示这是现有连续传输的新命令字。当在帧边界上没有写入发送/命令FIFO时,CONTC位被忽略。 Y
RXMSK 屏蔽接收数据,不存储到接收FIFO或执行接收数据匹配。用于半双工传输或配置接收数据匹配期间比较哪些字段。 Y
TXMSK 屏蔽传输数据,这样数据就不会从传输FIFO中取出,输出数据引脚被三态化(除非由OUTCFG配置)。对于半双工传输有用。 Y
WIDTH 配置每个LPSPI_SCK脉冲上移位的比特数。•1位传输支持半双工或全双工数据格式的传统SPI总线传输。•2位和4位传输对于接口到QuadSPI内存设备是有用的,并且只支持半双工数据格式(必须设置TXMSK或RXMSK至少一种)。 Y
FRAMESZ 配置帧大小的位数等于(FRAMESZ + 1)。•最小帧大小为8位。•如果帧大小大于32位,则将帧分成多个32位的字;每个字分别从发送FIFO加载并存储在接收FIFO中。•如果帧的大小不能被32整除,那么发送FIFO的最后一个负载和接收FIFO的存储将包含剩余位。例如,一个72位的传输将由3个字组成:第1个字和第2个字32位,第三个字是8位。•最小字大小为2位;不支持33位(或类似)的帧大小。 Y

当数据写入发送FIFO、HREQ引脚断言(或禁用)和LPSPI使能时,LPSPI启动SPI总线传输。SPI总线传输使用在发送命令寄存器中配置的属性和时钟配置寄存器中的计时参数来执行传输。一旦达到FRAMESZ配置,或者当一个新的发送命令字位于发送/命令FIFO的顶部时,SPI总线传输结束。HREQ输入只在下一次LPSPI空闲时被检查(完成当前的传输和传输/命令寄存器为空)。
发送/命令FIFO还支持循环FIFO特性。这允许LPSPI主机(定期)重复短数据传输,可以适应传输/命令FIFO,而不需要额外的FIFO访问。当循环FIFO使能时,FIFO读指针的当前状态被保存,状态标志不更新。一旦发送/命令FIFO被认为是空的,LPSPI是空闲的,FIFO读指针被恢复为保存的版本,所以当循环FIFO模式启用时,发送/命令FIFO的内容不会永久地从FIFO中取出。

从机模式

中断和DMA请求

外围触发器

时钟介绍

在这里插入图片描述
这里选择PLL2作为LPSPI的时钟源,PLL2=528M,对PLL进行3分频作为LPSPI_CLK_ROOT=176M

模块时钟||时钟源||模块时钟门控使能||模块覆盖使能
在这里插入图片描述

PCS=Peripheral Chip Select=外围芯片选择

寄存器介绍

寄存器总列表
在这里插入图片描述

控制寄存器

在这里插入图片描述
bit0:模块使能位
bit1:软件重置
bit2:使能Doze模式
bit3:使能Debug模式
bit8:重置发送FIFO
bit9:重置接收FIFO

状态寄存器

在这里插入图片描述
在这里插入图片描述
bit0:发送数据状态标志位。当发送FIFO中的字数等于或小于FCR[TXWATER] (FIFO控制寄存器)时,设置发送数据标志。
bit1:接受数据状态标志位。
bit8:单词完成标志位。采样接收到的单词的最后一位时,将设置单词完成标志
bit9:帧完成标志位。当PCS否定时,框架完整的标志将在每个帧传输结束时设置。
bit10:传输完成标志位。在主模式下,当LPSPI返回到空闲状态时,通过传输FIFO空,传递完整的标志将设置。
bit11:发送错误标志位。
bit12:接收错误标志位。
bit13:数据匹配标志位。
bit24:模块繁忙标志位。

中断使能寄存器

在这里插入图片描述
在这里插入图片描述

DMA使能寄存器

在这里插入图片描述

配置寄存器0

在这里插入图片描述
在这里插入图片描述
bit0:主机请求启用。当在主模式中启用时,LPSPI将只在断言主机请求输入时启动一个新的SPI总线传输。 当LPSPI忙时,主机请求输入将被忽略。
bit1:主机请求极性。配置主机请求引脚的极性。
bit2:主机请求选择。选择主机请求输入的源。 使用LPSPI_HREQ引脚使能主机请求功能时,禁用LPSPI_PCS[1]功能。
bit8:循环FIFO使能位。当启用时,传输FIFO读指针被保存到临时寄存器。发送FIFO将被清空,但当LPSPI空闲且发送FIFO为空后,读指针的值将从临时寄存器中恢复。读取指针的这种恢复将导致传输FIFO的内容反复循环。
bit9:只接收匹配数据。当Receive Data Match Only使能时,所有不设置SR[DMF]的接收数据将被丢弃。

配置寄存器1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bit27:外设芯片选择配置位。如果执行4位传输,必须设置外设芯片选择配置位。
bit26:输出配置位。配置输出数据是否在两次访问之间三状态化(LPSPI_PCS被否定)。
bit24-25:引脚输出位。配置在单比特传输期间用于输入和输出数据的引脚。
bit18-16:匹配的配置。配置将导致DMF设置的条件。
bit11-8:外围芯片选择极性。配置每个外设芯片选择引脚的极性。
bit3:没有拖延位。在主模式下,当发送FIFO为空或接收FIFO为满时,LPSPI将停止传输,确保没有发送FIFO欠运行或接收FIFO溢出可能发生。 设置No Stall位将禁用此功能。
bit2:自动PCS
bit1:样本点位。当设置时,LPSPI主控程序将在延迟的LPSPI_SCK边缘上对输入数据进行采样,这提高了采样数据时的设置时间。
bit0:主从模式选择位。

数据匹配寄存器0

在这里插入图片描述

数据匹配寄存器1

在这里插入图片描述

时钟配置寄存器

在这里插入图片描述在这里插入图片描述
bit31-24:SCK-to-PCS Delay。master模式:配置从最后一个SCK边缘到PCS否定的延迟时间。
bit23-16:SCK-to-PCS Delay。master模式:配置从PCS断言到SCK第一个边缘的延迟时间。
bit15-8:延迟之间的转移位。
bit7-0:SCK分频器

FIFO控制寄存器

在这里插入图片描述

bit19-16:接收FIFO水印。当接收FIFO的字数大于RXWATER时,将设置接收数据标志。 写入等于或大于FIFO大小的值将被截断。
bit3-0:发送FIFO水印

FIFO状态寄存器

在这里插入图片描述
bit20-16:接收FIFO计数器。返回存储在接收FIFO中的字
bit4-0:发送FIFO计数器

传输控制寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bit31:时钟极性位。
bit30:时钟相位。
bit29-27:预分频数值。
bit25-24:外围芯片选择
bit23:LSB First。低8位优先
bit22:字节交换
bit21:持续传输
bit20:持续控制
bit19:接收数据掩码
bit18:传输数据掩码
bit17-16:传输位
bit11-0:帧长度

传输数据寄存器

在这里插入图片描述

接收状态寄存器

在这里插入图片描述
bit1:接收FIFO空
bit0:帧起始位

接收数据寄存器

在这里插入图片描述

库函数介绍

猜你喜欢

转载自blog.csdn.net/m0_56116736/article/details/124334824