Spi 配置使用说明
大约 11 分钟约 3225 字2025/8/11配置工具
Spi 配置使用说明
简介
本手册详细介绍了如何使用灵犀配置KF32A158SQV芯片的Spi模块。
环境准备
确保已安装以下软件:
- 灵犀(版本需支持KF32A158SQV芯片)
- 支持KF32A158SQV芯片的MCAL(Microcontroller Abstraction Layer)软件包
创建项目
- 打开灵犀。
- 点击主界面上的“新建项目”按钮,如图所示

选择MCU型号
- 在“MCU型号选择”窗口中,选择“MCAL”项目类型。
- 在“快速选择MCU”下拉菜单中,选择“KF32A158SQV”。
- 点击“创建”按钮,如图所示

添加SPI模块
- 在灵犀主界面,点击左侧的“》”按钮打开模块添加界面,如图所示

- 在灵犀主界面,点击“Apply Module”按钮。
- 在“Module Manager”窗口中,从“unUsed”列表中选择“Spi”模块。
- 点击中间的“>”按钮,将“Spi”模块移动到“used”列表中。
- 点击“Apply”按钮,完成模块添加,如图所示

配置SPI模块
配置SpiDemEventParameterRefs
用于存放对DemEventParameter元素的引用,这些元素在发生相应错误时应通过API Dem_SetEventStatus进行调用。暂不支持
配置SpiGeneral
配置SPI通用信息。
SpiCancelApi:取消函数
Spi_Cancel开关。SpiChannelBuffersAllowed:允许使用多个通道缓冲区。
配置 功能描述 SPI_USAGE0(配置值0) 仅使用内部缓冲区(IB),由驱动程序管理。 SPI_USAGE1(配置值1) 仅使用外部缓冲区(EB),由应用程序管理。 SPI_USAGE2(配置值2) 同时支持内部缓冲区和外部缓冲区。 SpiDevErrorDetect:DET错误检测开关。
SpiHwStatusApi:硬件状态函数
Spi_GetHWUnitStatus开关。SpiInterruptibleSeqAllowed:可中断序列处理功能开启或关闭,仅适用于级别1或2(
SpiLevelDelivered配置为1或2)。SpiLevelDelivered:配置SPI的等级。
级别 功能描述 同步模式 异步模式 特点 SPI_LEVEL_0(配置值0) 简单同步传输 支持 不支持 同步阻塞调用,适合简单场景。 SPI_LEVEL_1(配置值1) 异步传输 不支持 支持 异步非阻塞调用,支持中断或轮询模式。 SPI_LEVEL_2(配置值2) 增强型传输 支持 支持 同时支持同步和异步模式,功能最全面。 异步模式目前都是配合DMA使用 SpiMainFunctionPeriod:配置SPI主函数的周期,在
Spi_Cfg.h中生成SPI_MAIN_FUNCTION_PERIOD信息。SpiSupportConcurrentSyncTransmit:指定是否应configurable同时调用Spi_SyncTransmit()以处理不同的序列。
SpiVersionInfoApi:获取SPI版本信息开关。
SpiEcucPartitionRef:配置SPI的ECUC分区。暂不支持
SpiKernelEcucPartitionRef:配置SPI的Kernel ECUC分区。暂不支持
SpiApiTailoring:定制信息配置
- SpiMasterSupport:SPI是否支持主模式。
- SpiSlaveSupport:SPI是否支持从模式。
- SpiDisableDemReportErrorStatus:禁用Dem报告错误状态。配置为
false表示启用该功能。 - SpiPrecompileSupport:配置SPI的预编译支持。设置为
true表示启用,调用初始化函数时,入参应为空指针;为false表示不启用,调用初始化函数时,入参为配置参数地址。 - SpiFifoUsed:配置SPI是否使用硬件FIFO,配置为
true表示启用该功能。(仅部分芯片有此选项)
配置SpiPublishedInformation
配置硬件单元个数。
- SpiMaxHwUnit:配置硬件单元个数,最大支持3个。
- 在KF32A158SQV配置中,此参数决定后续配置
SpiExternalDevice的最大个数。 - 在KF32A158NQVSF、KF32A138MQTSF配置中,此参数决定后续配置
SpiHwUnitConfig的最大个数,SpiExternalDevice的最大个数由SpiMaxJob决定。
- 在KF32A158SQV配置中,此参数决定后续配置
配置SpiDriver
配置SPI驱动信息。配置Sequence、Job、Channel信息。
- SpiMaxChannel:配置Channel最大个数。
- SpiMaxJob:配置Job最大个数
- SpiMaxSequence:配置Sequence最大个数。
- SpiChannel:配置Channel信息。
- 增加Channel

- SpiChannelId:配置Channel的ID。在
Spi_Cfg.h生成配置信息,用于上层使用,新增Channel时,该值自动加一。 - SpiChannelType:配置Channel的类型。
特性 IB(Internally Buffered Channels) EB(Externally Buffered Channels) 缓冲区来源 由驱动程序提供(配置 SpiBufferDescriptor)由用户提供 缓冲区大小 固定 动态可配置 数据一致性 驱动程序不保证 用户负责 适用场景 短数据传输、性能要求高 大数据传输、需要灵活管理缓冲区 配置方式 配置文件指定缓冲区大小 用户通过 API 设置缓冲区地址和长度 读写接口 Spi_WriteIB、Spi_ReadIBSpi_SetupEB - SpiDataWidth:数据宽度,8\16\32。
- SpiDefaultData:配置默认数据。使用IB接口时,
Spi_WriteIB第二个参数为空指针时,将使用此默认数据。 - SpiEbMaxLength:配置EB缓冲区最大长度。
Spi_SetupEB接口入参判断使用。 - SpiIbNBuffers:配置IB缓冲区大小。
- SpiTransferStart:数据方向选择位。
- SpiBufferDescriptor:配置Channel的缓冲区信息,IB模式才需要使用配置。
- SpiBufferTX:配置IB发送缓冲区信息。
- SpiBufferRX:配置IB接收缓冲区信息。
- 增加Channel
- SpiExternalDevice:配置与Job关联的硬件单元信息。
- SpiBaudrate:配置硬件单元的波特率。暂不支持,需要配置具体寄存器值
- SpiCsIdentifier:配置硬件单元的CS引脚编号。应填入"SS0"~"SS3",部分芯片仅支持SS0,则该配置项固定不可修改。
- SpiCsPolarity:配置硬件单元的CS引脚电平。暂不支持
- SpiCsSelection:配置硬件单元的CS引脚选择。GPIO或硬件CS。
- SpiDataShiftEdge:配置硬件单元的数据位移边沿。
- SpiShiftClockIdleLevel:配置硬件单元的时钟空闲电平。
SpiDataShiftEdge SpiShiftClockIdleLevel 功能描述 SPI 模式 时序特点 应用场景 LEADING HIGH 数据在时钟上升沿采样,时钟空闲为高电平 SPI 模式 0 数据在时钟上升沿采样,空闲时钟为高电平 适用于大多数 SPI 设备,数据在时钟上升沿采样 LEADING LOW 数据在时钟上升沿采样,时钟空闲为低电平 SPI 模式 3 数据在时钟上升沿采样,空闲时钟为低电平 适用于需要在时钟低电平时保持数据稳定的设备 TRAILING HIGH 数据在时钟下降沿采样,时钟空闲为高电平 SPI 模式 1 数据在时钟下降沿采样,空闲时钟为高电平 适用于需要在时钟下降沿采样的设备 TRAILING LOW 数据在时钟下降沿采样,时钟空闲为低电平 SPI 模式 2 数据在时钟下降沿采样,空闲时钟为低电平 适用于需要在时钟低电平时保持数据稳定的设备,且数据在下降沿采样 - SpiEnableCs:配置硬件单元的CS引脚使能。暂未使用
- SpiHwUnit:配置硬件单元的ID。
CSIBn即SPIn,实际可选项取决于芯片。 - SpiTimeClk2Cs:配置硬件单元的CS引脚使能时间。暂未使用
- SpiDriverTailoring:定制化信息配置。(仅适用于部分芯片,其余部分芯片的相关配置项位置有变更)
- SpiHwClkSrc:配置硬件单元的时钟源。
- SpiHwClkDiv:配置硬件单元的时钟分频。
Fck = SpiHwClkSrc/SpiHwClkDiv - SpiBaudRatePrescaler:配置硬件单元的波特率分频。

- SpiHwLineMode:SPI线模式。
- SpiDisableCSFcn:配置
SpiCsSelection为GPIO模式时,需要配置先关片选的操作函数。 - SpiEnableCSFcn:配置
SpiCsSelection为GPIO模式时,需要配置先关片选的操作函数。
- SpiDmaConfig:DMA配置。异步模式必须开启DMA(部分芯片,其余部分芯片的此配置项在
SpiHwUnitConfig配置项下)- SpiRxPriority:接收通道优先级。
- SpiTxPriority:发送通道优先级。
- RxDmaSource:接收通道配置,根据手册信息配置。
- TxDmaSource:发送通道配置,根据手册信息配置。
DMA通道选择需与实际SPI硬件单元匹配,其具体对应关系参见用户手册DMA章节
- SpiBaudRatePrescaler:配置硬件单元的波特率预分频。(部分芯片,其余部分芯片的此配置项在
SpiDriverTailoring配置项下) - SpiDisableCSFcn:配置
SpiCsSelection为GPIO模式时,需要配置关闭片选的操作函数。(部分芯片,其余部分芯片的此配置项在SpiDriverTailoring配置项下) - SpiEnableCSFcn:配置
SpiCsSelection为GPIO模式时,需要配置使能片选的操作函数。(部分芯片,其余部分芯片的此配置项在SpiDriverTailoring配置项下) - SpiDeviceEcucPartitionRef:设备分区。暂不支持
- SpiJob:JOB配置。
- SpiJobEndNotification:JOB完成通知回调函数。
- SpiJobId:JobID。在
Spi_Cfg.h生成配置信息,用于上层使用,新增Job时,该值自动加一。 - SpiJobPriority:Job优先级。
- SpiDeviceAssignment:硬件单元选择。只能选择已配置的SpiExternalDevice
- SpiChannelList:配置Channel列表。
- 增加通道选择,根据实际使用情况增加Channel选择数量

- SpiChannelIndex:Channel索引。暂不支持
- SpiChannelAssignment:Channel选择。只能选择已配置通道
- 增加通道选择,根据实际使用情况增加Channel选择数量
- SpiSequence:Sequence配置。
- SpiInterruptibleSequence:此参数允许或不允许另一个序列挂起此序列。暂不支持
- SpiSeqEndNotification:Sequence完成通知回调函数。
- SpiSequenceId:Sequence ID。在
Spi_Cfg.h生成配置信息,用于上层使用,新增Job时,该值自动加一。 - SpiInterruptable:是否可中断。
- SpiJobAssignment:Job选择。
- 增加Job选择,根据实际使用情况增加Job选择数量

- SpiJobAssignment:Job选择。只能选择已配置Job
- 增加Job选择,根据实际使用情况增加Job选择数量
- SpiHwUnitConfig:SPI硬件单元配置。(仅部分芯片有此配置项)
- SpiHwUnit:配置硬件单元的ID。
CSIBn即SPIn,实际可选项取决于芯片。 - SpiHwClkSrc:配置硬件单元的时钟源。
- SpiHwClkDiv:配置硬件单元的时钟分频。
Fck = SpiHwClkSrc/SpiHwClkDiv - SpiHwLineMode:SPI线模式。
- SpiDmaConfig:DMA配置。异步模式必须开启DMA
- SpiRxPriority:接收通道优先级。
- SpiTxPriority:发送通道优先级。
- RxDmaSource:接收通道配置,根据手册信息配置。
- TxDmaSource:发送通道配置,根据手册信息配置。
DMA通道选择需与实际SPI硬件单元匹配,其具体对应关系参见用户手册DMA章节
- SpiHwUnit:配置硬件单元的ID。
- SpiSlaveHwConfig:从机模式配置,需要打开
SpiSlaveSupport- SpiHwUnit:配置硬件单元的ID。
CSIBn即SPIn,实际可选项取决于芯片。 - SpiHwClkSrc:硬件时钟源选择。
- SpiHwClkDiv:硬件时钟分频。
- SpiHwLineMode:SPI线模式。
- SpiSlaveCsPin:从机片选引脚选择。
- SpiSlaveClkMode:相位模式选择。
模式名称 CPOL CPHA 时钟空闲电平 数据采样边沿 数据变化边沿 SPI_CPOL_0_CPHA_00 0 LOW(低电平) 上升沿 下降沿 SPI_CPOL_0_CPHA_10 1 LOW(低电平) 下降沿 上升沿 SPI_CPOL_1_CPHA_01 0 HIGH(高电平) 下降沿 上升沿 SPI_CPOL_1_CPHA_11 1 HIGH(高电平) 上升沿 下降沿 - SpiSlaveBitOrder:位顺序(最高位/最低位)。
- SpiDataTransferCompletionCallback:数据传输完成回调函数。
- SpiSlaveDmaConfig:从机DMA配置。
- SpiRxPriority:接收通道优先级。
- SpiTxPriority:发送通道优先级。
- RxDmaSource:接收通道配置,根据手册信息配置。
- TxDmaSource:发送通道配置,根据手册信息配置。
DMA通道选择需与实际SPI硬件单元匹配,其具体对应关系参见用户手册DMA章节
- SpiHwUnit:配置硬件单元的ID。
设置项目路径及名称
- 点击“Setting”按钮。
- “Project Name”是配置的工程名称
- 在“Project Path”设置工程保存路径。
- “Configuration Code Folder Name”配置文件存放的文件加名称。
- 点击“Confirm”保存设置,如图所示

保存配置并预览代码
- 点击“Save”按钮,保存配置。
- 点击“Preview Code”按钮,查看生成的代码文件列表,如图所示

- 点击相应的文件名,可以预览文件内容,如图所示

生成代码
- 点击“Generate code”按钮,生成相关配置文件,如图所示

查看生成代码
- 生成代码后,可以在项目路径下找到生成的源文件。
- 使用代码编辑器打开这些文件,进行查看或进一步编辑,如图所示

