AUTOSAR SPI Handler/Driver 需求规范
1. 引言
本文档基于AUTOSAR规范,详细描述了SPI Handler/Driver模块的需求。SPI Handler/Driver模块是AUTOSAR微控制器抽象层(MCAL)的重要组件,负责提供对SPI硬件设备的访问接口。
1.1 SPI总线简介
SPI(Serial Peripheral Interface,串行外设接口)是一种主从式、同步串行通信总线,主要用于微控制器与各种外设(如传感器、存储器、显示器等)之间的短距离通信。SPI总线通常由四条信号线组成:
- MOSI (Master Out Slave In):主设备数据输出,从设备数据输入
- MISO (Master In Slave Out):主设备数据输入,从设备数据输出
- SCK (Serial Clock):时钟信号,由主设备产生
- CS (Chip Select):片选信号,用于选择与哪个从设备通信
2. AUTOSAR SPI Handler/Driver架构
SPI Handler/Driver在AUTOSAR架构中处于微控制器抽象层(MCAL),其主要职责是提供标准化的接口,使上层软件能够访问SPI总线上的设备,同时屏蔽硬件细节。
2.1 架构说明
-
应用层:包含使用SPI服务的应用软件组件。
- 应用软件组件通过RTE调用SPI服务。
-
RTE层:运行时环境,负责连接应用层和基础软件层。
- 提供标准化接口,转发SPI API调用。
-
基础软件层:
- 系统服务层:包含诊断模块(DEM)和开发错误跟踪器(DET),用于错误处理和诊断。
- 通信服务层:包含通信模块(COM),处理ECU间通信。
- MCAL层:包含SPI Handler/Driver及相关驱动模块。
- SPI Handler/Driver:提供SPI通信功能。
- DIO Driver:用于控制片选信号。
- DMA Driver:用于数据传输优化。
-
微控制器硬件:
- SPI硬件单元:实际执行SPI通信的硬件。
- DIO硬件:用于片选信号控制的数字输入输出硬件。
- DMA控制器:用于高效数据传输的直接内存访问控制器。
2.2 SPI Handler/Driver职责
SPI Handler/Driver负责:
- 多SPI总线处理
- 同步SPI传输
- 异步SPI传输
- 片选(CS)信号控制
- 链式设备通信
3. SPI Handler/Driver内部组件结构
SPI Handler/Driver内部由多个功能组件组成,共同协作完成SPI通信功能。
3.1 组件结构说明
-
SPI Handler部分:
- SPI 初始化模块:负责模块初始化和配置处理。
- SPI 通道处理:管理SPI通道配置和数据。
- SPI 作业管理:处理SPI作业的优先级排序和执行。
- SPI 序列管理:管理序列,协调多个作业的执行。
- SPI 配置管理:处理SPI的静态配置信息。
-
SPI Driver部分:
- 同步SPI功能:处理阻塞式SPI传输。
- 异步SPI功能:处理非阻塞式SPI传输,包括:
- 异步传输控制
- 中断处理
- DMA处理
- 回调通知
- SPI 硬件抽象:直接与SPI硬件交互。
- 片选控制:管理CS信号的控制。
-
与硬件的交互:
- SPI硬件抽象组件访问微控制器SPI硬件。
- 片选控制组件控制微控制器DIO硬件。
- DMA处理组件配置微控制器DMA控制器。
3.2 关键概念定义
-
通道(Channel):
- 通道是数据交换的软件媒介
- 具有相同配置参数、相同数据大小和相同数据指针位置
-
作业(Job):
- 作业由具有相同片选(CS)的一个或多个通道组成
- 作业视为原子操作,不可中断
- 每个作业有分配的优先级
-
序列(Sequence):
- 序列是连续的多个作业
- 可根据优先级机制在作业间重新调度
- 序列传输可中断或不可中断(取决于静态配置)
4. SPI通信流程
SPI Handler/Driver支持两种通信模式:同步和异步。这两种模式适用于不同的应用场景。
4.1 异步通信流程
异步通信是非阻塞式的,适合对时间要求严格的应用。
4.1.1 异步通信流程说明
-
启动阶段:
- 应用软件组件调用
Spi_AsyncTransmit(Sequence)
启动传输。 - SPI Handler接收请求并传递给序列管理组件。
- 序列管理组件检查序列有效性并获取第一个作业。
- 作业管理组件检查作业优先级并准备通道数据。
- 驱动程序配置硬件、激活片选、启动传输。
- Handler返回E_OK表示传输已启动(非阻塞)。
- 应用软件组件调用
-
传输阶段:
- 硬件自主完成数据传输。
- 传输完成后触发中断。
-
完成阶段:
- 中断处理程序更新通道状态。
- 如果当前通道完成但作业未完成,继续处理下一个通道。
- 如果当前作业完成:
- 释放片选信号。
- 如果序列中还有更多作业,继续处理下一个作业。
- 如果序列完成,执行序列完成回调通知应用。
4.1.2 异步通信特点
- 非阻塞式操作,启动后立即返回
- 通过中断或DMA完成传输
- 通过回调通知完成状态
- 支持序列和作业的队列管理
- 支持优先级机制
4.2 同步通信流程
同步通信是阻塞式的,适合对时间要求不严格的应用。
4.2.1 同步通信流程说明
-
启动阶段:
- 应用软件组件调用
Spi_SyncTransmit(Channel)
启动传输。 - SPI Handler检查通道有效性并传递给驱动程序。
- 应用软件组件调用
-
传输阶段:
- 驱动程序保存当前状态(如果需要)。
- 配置SPI硬件寄存器。
- 激活片选信号。
- 对通道中的每个数据元素:
- 写入发送数据到SPI发送寄存器。
- 等待传输完成标志。
- 读取接收到的数据并存储。
-
完成阶段:
- 释放片选信号。
- 恢复之前的状态(如果需要)。
- 返回传输状态(E_OK/E_NOT_OK)。
4.2.2 同步通信特点
- 阻塞式操作,直到传输完成才返回
- 不使用中断或DMA
- 通过轮询方式检查传输完成状态
- 不支持序列和作业的队列管理
- 适用于对时间要求不严格的场景
5. SPI配置结构
SPI Handler/Driver的配置结构支持灵活配置不同的SPI通信方式,通过静态配置优化内存和CPU资源。
5.1 配置结构说明
-
Spi_ConfigType:
- 总配置结构,包含全局配置、通道配置、作业配置、序列配置和硬件单元配置。
-
Spi_GlobalConfigType:
- 全局配置,定义通道、作业、序列的最大数量。
- 定义支持的通信模式(同步/异步)。
- 定义是否支持可中断序列。
- 定义哪些硬件单元使用DMA。
-
Spi_ChannelConfigType:
- 通道配置,包括数据宽度(1-32位)。
- 传输起始位(MSB/LSB)。
- 移位边沿设置。
- 缓冲区类型设置。
-
Spi_JobConfigType:
- 作业配置,包括片选控制参数。
- 波特率设置。
- 关联的通道列表。
- 作业优先级。
- 作业完成通知回调。
-
Spi_SequenceConfigType:
- 序列配置,包括是否可中断标志。
- 关联的作业列表。
- 序列完成通知回调。
-
Spi_HWUnitConfigType:
- 硬件单元配置,包括时钟设置。
- DMA使用配置。
- 硬件特定参数。
6. 主要功能需求
以下是SPI Handler/Driver的主要功能需求:
6.1 通用需求
- SPI Handler/Driver应能够处理多个SPI总线。
- SPI Handler/Driver应处理片选信号。
- SPI Handler/Driver应支持所有能执行SPI功能的控制器外设。
- SPI Handler/Driver应支持与链式硬件设备的通信。
- SPI Handler/Driver应有可扩展功能以适应ECU需求。
6.2 配置需求
-
SPI Handler/Driver应允许静态配置所有与SPI相关的软硬件属性,包括:
- 分配的SPI硬件单元
- 分配的片选引脚
- 片选功能开/关
- 片选引脚极性高/低
- 片选模式(正常模式或保持模式)
- 波特率
- 时钟与片选之间的时序
- 数据宽度(1至32位)
- 传输开始LSB或MSB
- 移位时钟空闲低或空闲高
- 数据移位使用前沿或后沿
- MCU相关属性
-
SPI Handler/Driver应允许通过静态配置链接连续的SPI通道。
-
SPI Handler/Driver应允许静态配置所需的SPI通道数量(最多255个)。
-
每个SPI通道的传输数据宽度应可配置为1至32位(不仅限于8、16或32位)。
-
SPI Handler/Driver功能应可静态配置。
7. 总结
AUTOSAR SPI Handler/Driver模块提供了标准化的接口,用于访问SPI总线上的设备。它支持同步和异步通信模式,可以处理多个SPI总线,并通过静态配置适应不同ECU的需求。通过通道、作业和序列的概念,SPI Handler/Driver能够有效管理SPI通信,支持优先级机制,并提供完善的错误处理和通知机制。
道的传输数据宽度应可配置为1至32位(不仅限于8、16或32位)。
5. SPI Handler/Driver功能应可静态配置。
7. 总结
AUTOSAR SPI Handler/Driver模块提供了标准化的接口,用于访问SPI总线上的设备。它支持同步和异步通信模式,可以处理多个SPI总线,并通过静态配置适应不同ECU的需求。通过通道、作业和序列的概念,SPI Handler/Driver能够有效管理SPI通信,支持优先级机制,并提供完善的错误处理和通知机制。
SPI Handler/Driver的模块化设计和标准化接口使上层软件能够独立于硬件实现,增强了软件的可移植性和可重用性,符合AUTOSAR架构的设计理念。