本文遵循autosar标准:R22-11
1 简介及功能概述
SPI 提供对通过 SPI 总线连接的设备进行读取和写入的服务。它为多个用户提供对 SPI 通信的访问(例如 EEPROM、看门狗、I/O ASIC)。它还提供配置片上 SPI 外设所需的机制。
该规范描述了单片 SPI 的 API。该软件模块包括处理和驱动功能。该单片 SPI 的主要目标是充分利用每个微控制器的功能,并允许根据静态配置进行实现优化,以尽可能 满足 ECU 的需求。因此,该规范定义了可选择的功能级别和可配置特性,以允许设计利用微控制器特性的高可扩展模块。
要配置 SPI ,应遵循以下步骤:
- 应选择 SPI 功能级别并配置可选功能。
- SPI 通道应根据数据使用情况进行定义,它们可以在 SPI (IB) 内部缓冲或由用户 (EB) 提供。
- SPI 作业应根据硬件属性 (CS) 进行定义,并且它们将包含使用这些属性的通道列表。
- 作为最后一步,应定义作业序列,以便以排序方式(按优先级排序)传输数据。
SPI可以根据调用的API函数和选择的功能级别以异步或同步方式传输数据帧。该规范涵盖了合并在一个模块中的处理程序/驱动程序功能。一是 SPI 处理部分,用于处理对可能位于ECU 抽象层的总线的多次访问。另一部分是直接访问微控制器硬件的 SPI 驱动程序,该驱动程序可能位 于微控制器抽象层中。
2 首字母缩写词和缩写词
3 相关文档
3.1 输入文件
[1]分层软件架构:AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[2] SPAL需求:AUTOSAR_SRS_SPALGeneral.pdf
[3]基础软件模块总体要求:AUTOSAR_SRS_BSWGeneral.pdf
[4] 默认错误跟踪器:AUTOSAR_SWS_DefaultErrorTracer.pdf
[5] ECU配置规格:AUTOSAR_TPS_ECUConfiguration.pdf
[6] SPI 处理程序/驱动程序的要求:AUTOSAR_SRS_SPIHandlerDriver.pdf
[7] 诊断事件管理器文档:AUTOSAR_SWS_DiagnosticEventManager.pdf
[8]术语表:AUTOSAR_TR_Glossary.pdf
[9] MCU驱动文档:AUTOSAR_SWS_MCUDriver.pdf
[10] PORT驱动文档:AUTOSAR_SWS_PORTDriver.pdf
[11]基本软件模块描述模板:AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[12]基础软件模块列表:AUTOSAR_TR_BSWModuleList
[13]标准类型文档:AUTOSAR_SWS_StandardTypes.pdf
[14]基础软件模块通用文档:AUTOSAR_SWS_BSWGeneral.pdf
3.2 相关文档
AUTOSAR 提供了基本软件模块的通用 文档 [14](SWS BSW General), 本文档对于 SPI 处理程序驱动程序也有效。SWS BSW General 文档应被视为 SPI 处理程序驱动程序的附加且必需的 文档。
4 约束
4.1 限制
SPI 处理程序/驱动程序仅处理主模式。 SPI 处理程序/驱动程序仅支持全双工模式。
4.2 汽车领域的适用性
无。
5 对其他模块的依赖
SPI Handler/Driver模块不负责在其 init 函数中设置配置时钟、预分频器和 PLL 的寄存器。这必须由 MCU 模块完成。注意,SPI 外设可能取决于系统时钟、预分频器和 PLL。因此,系统时钟的任何变化(例如PLL打开/PLL关闭/ 时钟分频器)也可能影响SPI硬件的时钟设置。根据微控制器的不同,SPI 外设可以与其他外设共享寄存器。在这种典型情况下,SPI Handler/Driver与 MCU 模块有关系,用于初始化和取消初始化这些寄存器。 如果使用微控制器引脚完成片选,则 SPI Handler/Driver与端口模块存在关系。在这种情况下,本文档假设这些微控制器引脚由 SPI Handler/Driver直接访问,而不使用 DIO 模块的 API。无论如何,SPI 取决于 ECU 硬件设计,因此它可能取决于其他模块。
6 溯源
略
7 功能
SPI(串行外设接口)具有 4 线同步串行接口。数据通信通过片选线 (CS) 启用。数据传输采用3线接口由串行数据输出 (MOSI)、串行数据输入 (MI‑SO) 和串行时钟 (CLOCK) 线组成。
7.1 功能和特性
本文档基于以前的文档经验,也基于已确定的案例。本节的目的是总结SPI Handler/Driver 的可扩展性如何允许从满足简单需求的简单软件模块到满足增强需求的软件模块。
本文档规定了 SPI 的以下 3 个可扩展功能级别:
- LEVEL 0,简单同步 SPI Handler/Driver:通信是基于同步处理(使用轮询机制)并使用 FIFO 策略来处理多次访问。缓冲区使用可配置以优化和/或利 用硬件功能。
- LEVEL 1,基本异步 SPI Handler/Driver:通信是基于异步行为 (使用执行期间可选择的中断或轮询机制)并使用优先级策略来处理多个访问。缓冲区使用可按照 “简单同步”级别进行配置。
- LEVEL 2,增强型(同步/异步)SPI Handler/Driver:通信基于异步行为(使用执行期间可选择的中 断或轮询机制)或同步处理,并使用优先级策略来处理多个访问。与其他级别一样,缓冲区的使用是可配置的。
即使为同步传输中使用的作业和/或序列指定了通知函数,在 LEVEL0 的情况下也不会调用这些函数。SPI Handler/Driver的可扩展功能级别应始终是静态可配置的,即在预编译时配 置以实现最佳源代码优化。SpiLevelDelivered 参数应根据所描述的级别(0、1 或 2)配置为 3 个值之一,以允许选择 SPI Handler/Driver的可扩展功能级别。为了提高可扩展性,每个级别都有可配置(开/关)或可选择的可选功能。这些在专门章节中有详细描述。
7.2 一般行为
本章一方面介绍了所有级别的常见行为和配置。另一方面,它指定每个级别的行为以及允许的可选功能。 SPI Handler/Driver接口配置应基于本文档中定义的通道、作业和序列(第 2 章)。 SPI Handler/Driver应支持一个或多个通道,
以便驱动所有类型 SPI 兼容硬件设备的作业和序列。数据传输应根据 Channels、Job 和 Sequences 配置参数进行。
片选(CS)附在作业定义中。片选应在作业传输期间处理,并应在作业传输结束时释放。此片选处理应根据作业配置参数完成。 可以定义片选处理是否由硬件外设自主管理,无需驱动程序显式片选控制,或者 SPI 驱动程序应将片选线显式驱动为 DIO。
当 SpiCsSelection = CS_VIA_GPIO 时,由实现决定配置到 SpiCsBehavior 中的片选行为是否适用。
CS 处理示例:在 Job 传输开始时将 CS 设置为活动状态;保持它直到属于该作业的所有通道的传输结束,然 后将CS设置为非活动状态。一个通道被定义一次,但根据用户需求和本软件 文档,它可以属于多个作业。一项作业应至少包含一个通道。
每个通道应有一个关联的索引,用于指定 Job中 Channel 的顺序,如果一个Job包含多个Channel,则包含的所有Channel在传输过程中具有相同的 Job属性,并且应静态链接在一起。 一项作业被定义一次,但根据用户需求和本软件文档,它可以属于多个序列。一个序列应至少包含一个作业。
如果它包含多个,则包含的所有作业在传输过程中具有相同的序列属性,并且应静态链接在一起。用于传输的通道应该配置其参数,但允许传递空指针作为源和目标指针以生成虚拟传输。
注:上图对应SpiCsBehavior=CS_KEEP_ASSERTED的配置。
通道数据可能与处理的硬件和用户(客户端应用程序)给出的不同。在客户端,数据基于 SpiDataWidth 以 8、16 或 32 位模式处理(第 8.2.5 章)。在微控制器方面,硬件可以处理 1 到 32 位之间的数据,也可以 处理固定值(8 或 16 位),并且该宽度对于每个通道都是可配置的(SpiDataWidth)。SPI Handler/Driver应注意通道帧宽度 (SpiDataWidth) 和数据访问数据类型之间的差异。
【未完待续】