搞一点AutoSar--MCAL SPI-1

整理了一点SPI的资料

1、SPI模块简介

   图1 MCAL 4个驱动组与微控制器内核和外设的映射关系

                      图1 MCAL 4个驱动组与微控制器内核和外设的映射关系

SPI属于MCAL模块中的通信驱动组,通信(communication)驱动组负责提供对ECU板载通信外设的(如SPI等)的初始化和控制功能,以及对汽车网络的通信外设(如CAN等)的初始化和控制功能;
SPI驱动提供配置片上SPI外设、通过SPI总线从外部器件读取数据、写入数据到外部器件的服务。除此之外,SPI驱动还提供访问一些特殊SPI器件(如EEPROM、看门狗、I/O专用芯片等)的服务,下图所示为不同ECU抽象层的组件通过SPI驱动访问片外器件驱动的调用关系示意。

                                图2 SPI驱动访问片外器件驱动的调用关系示意

2、SPI驱动模块API的使用方法

AUTOSAR MCAL根据通信方式把SPI驱动模块分为如下3个功能等级:

  • LEVEL 0:同步SPI驱动模块,以同步方式通信。
  • LEVEL 1:异步SPI驱动模块,以异步方式通信。
  • LEVEL 2:高级的SPI驱动模块,以同步或异步方式通信。

LEVEL 0:功能等级提供轻量级的SPI驱动服务,只能处理简单的同步通信。这里“简单的同步通信”可以理解为在通信过程中调用的函数是阻塞的,换句话说,其他函数在通信完成之前不能打断当前通信调用的函数。这样的通信方式通常用于简单SPI总线网络中,以及与片外高速器件通信的ECU上。

LEVEL 1:功能等级提供轻量级的SPI驱动服务,只能处理异步通信。所谓异步通信,是指通信过程调用的函数是非阻塞的,其他函数可以继续执行而无须等待通信完成。通信完成后以通知事件(Notification)告知用户,在软件上可以由中断或者轮询的方式实现。这样的通信方式通常用于具有不同优先级的SPI总线网络中,以及与片外低速器件通信的ECU上。

LEVEL 2:功能等级提供了完整的SPI驱动服务,能够处理同步通信和异步通信。这种模式通常用于有多个SPI硬件单元的MCU上,MCU需要处理多个SPI任务,既包括针对不同优先级的任务,也包括针对不同速度片外器件的任务。例如,一个SPI硬件通过同步方式与片外高速器件通信,另一个SPI硬件通过异步方式与片外低速器件通信。

3、SPI通信主要概念

AUTOSAR MCAL中SPI总线和控制器的行为包括以下几种定义:
在这里插入图片描述

                                    图3 在SPI时序中标出的SPI通道、任务、序列

通道(Channel):数据在软件上是以SPI通道为媒介进行通信的,在同一个SPI通道中传输的配置参数、数据长度、源地址、目的地地址等数据属性是相同的。

任务(Job):一个SPI任务中可以包含多个SPI通道,且应至少有一个通道,否则没意义;这些通道必须使用相同的片选信号,而且片选信号在该SPI任务中不能释放给其他任务。换句话说,一个SPI任务通常与一个SPI器件通信,这个通信过程可能会包含多个SPI帧。由于任务不可再分,因此一个任务在执行时不能被其他任务打断。

序列(Sequence):一个SPI序列包含多个连续的SPI任务,但这些任务可以根据优先级调整时序。SPI序列根据配置要求,可以选择是否可被其他序列打断。如图3所示,在SPI时序中标出了SPI通道、任务、序列的定义,有助于读者直观地理解上述3个定义。在AUTOSAR MCAL配置时,SPI通道只定义一次,但根据用户应用需求可以配置在不同的SPI任务中;同样,SPI任务只定义一次,但可以配置在不同的SPI序列中。
传输是以序列为单位,只能操作序列。接收是具体到某个通道。获取状态或者回调,Job及Sequence都可以(Level 1, Level 2)。

4、选择SPI通道缓存(Buffer)位置

为充分利用MCU本身的性能,并且允许SPI控制器从指定的内存地址发送数据(或接收数据到指定的内存地址),所有SPI功能等级(LEVEL0、LEVEL 1、LEVEL 2)都可以选择SPI通道缓存的位置,分为内部缓存(Internal Buffer,IB)的通道和外部缓存(External Buffer,EB)的通道。
内部缓存是指发送/接收数据的缓存是由SPI驱动模块分配的。有的MCU的SPI控制器内部有独立缓存,因此,设计内部缓存的通道是为了利用这类MCU本身的性能;如果MCU的SPI控制器内部没有独立缓存,则使用软件模拟。
外部缓存是指发送/接收数据的缓存是由用户指定的,这也是为了复用外部缓存空间。SPI驱动模块提供了如下表所示的API供上层软件组件调用。

在这里插入图片描述

5、SPI驱动模块API调用流程

AUTOSAR MCAL规范中给出了同步方式通信和异步方式通信下SPI驱动模块API调用流程,下图所示为内部缓存通道在异步方式通信下SPI驱动模块API调用流程。
在这里插入图片描述

                               内部缓存通道在异步方式通信下SPI驱动模块API调用流程
  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 汽车自动化软件架构(AUTOSAR)是一种用于开发汽车电子系统的标准化架构。MCAL(Micro Controller Abstraction Layer)是AUTOSAR架构中的一个模块,用于在不同的微控制器之间提供抽象层。SPI(Serial Peripheral Interface)是一种通信协议,用于在微控制器和外部设备之间进行串行数据传输。 AUTOSAR MCAL SPI模块的作用是提供对SPI通信的抽象接口,使得软件开发人员能够在不关注底层硬件细节的情况下进行SPI通信的编程。该模块提供了一系列的API函数,用于配置和控制SPI通信。 使用AUTOSAR MCAL SPI模块,软件开发人员可以通过简单的函数调用来设置和配置SPI通信的参数,如SPI通信速度、传输模式等。开发人员可以根据具体的应用需求来选择不同的配置参数。 该SPI模块还提供了一系列的API函数,用于发送和接收数据。开发人员可以使用这些函数将数据发送给外设或从外设接收数据,实现与外部设备之间的通信。 总之,AUTOSAR MCAL SPI模块在AUTOSAR架构中扮演着重要角色,它通过提供抽象层,简化了SPI通信的编程和配置过程,使得软件开发人员能够更方便地使用SPI接口与外设进行数据交换。 ### 回答2: AutoSAR是一种用于汽车电子系统开发的标准化架构,旨在提高汽车电子系统的互操作性、可维护性和可重用性。在AutoSAR架构中,有许多模块和组件,其中MCAL是其中之一。 MCAL(Microcontroller Abstraction Layer)是AutoSAR架构中的一个重要组件,目的是提供与微控制器硬件相关的抽象层。它将硬件相关的操作和功能封装成高级、可移植的接口,使得开发人员能够以相同的方式访问不同的微控制器硬件。 SPI(Serial Peripheral Interface)是一种常用的串行通信接口标准,用于在微控制器和外部设备之间传输数据。在MCAL中,SPI模块提供了与SPI硬件控制器交互的接口。它封装了与SPI硬件相关的操作,使得开发人员只需要使用高级API来进行SPI通信,而不需要关心底层硬件细节。 使用MCAL的SPI模块,开发人员可以通过调用提供的API来进行SPI数据传输。它提供了发送和接收数据的函数,以及设置传输参数(如时钟频率、数据位宽等)的函数。开发人员只需要按照API的要求进行调用,即可实现与外部设备的可靠数据传输。 总之,AutoSAR的MCAL模块中的SPI功能提供了一个高级接口,用于与SPI硬件控制器进行通信。它简化了开发人员在不同微控制器上使用SPI接口的编程过程,提高了开发效率和系统的可移植性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值