Autosar SPI 学习笔记

一、SPI基础概念和一些总结

基础概念

1、channel:channel是被相同标准定义的数据软件交换介质,其中相同的标准包含配置、参数、相同大小的数据元素的数量、数据指针(源端和目的端)/数据位置;

2、Job : Job是同一个片选的一个或多个channel的组合;一个Job是一个元子操作,在Job处理过程中不释放;不能被其他的Job中断,且Job具有优先级;

3、Sequence : Sequence是有多个要传输的Job组成,且Sequence中可以根据Job的优先级调度Job;一个Sequence能否被另一个sequence打断取决于配置;

 

一个Job至少由一个channel组成; 每个channel应有一个相关索引,用于指定作业中频道的顺序;属于同一Job的channel拥有相同的Job属性;

Job属性是???

一个Sequence至少由一个Job组成;属于同一个Sequence的Job拥有相同的Sequence属性

Sequence属性是???

channelJob的关系

JobSequence的关系

###################################分割线###################################

硬件形式

SPI有4根线,通信使能是通过CS(ChipSelect 片选),数据的传输由MOSI(序列数据输出)、MISO(序列数据输入)和CLOCK(序列时钟) 3根线组成

CS的作用是标记Job的开始与结束,CS的默认状态根据芯片手册设置,状态可高可低;当要开始Job传输时,CS会被拉高或者拉低(处于Active状态),当Job完成传输后拉会默认状态(处于InActive状态),如下图所示:

###################################分割线###################################

一些个人总结

1、Job的优先级用于SPI Driver调度开始前对调度Job的顺序排序;

2、当一个Job正在传输时,不能被其他高优先级的Job中断(挂起);

3、当一个Job传输完成时,若改Job所在的Sequence是可中断的,则该Sequence可以被拥有高优先级Job的Sequence中断,SPI Driver会重新调度高优先级Job所在的Sequence。

4、Sequence没有优先级

二、SPI的3个可扩展功能级别

功能扩展级别概要如图所示

1、Level 0:Simple Synchronous SPI Handler/Driver(简单同步SPI),通信基于采用 FIFO 策略同步处理来处理多个访问;缓冲区使用可配置以优化和/或利用硬件功能;

目的:是为SPI Handler/Driver提供一组减少的服务,以仅处理简单的同步传输,简单的同步传输意味着调用传输服务的函数在传输过程中被阻塞,直到传输完成;

其他 :当传输发生错误时,会停止当前Sequence中的Job的传输,设Job状态为SPI_JOB_FAILED,Sequence的状态为SPI_SEQ_FAILED;Channel 数据传输时,读写功能无法保证数据完整性;

2、Level 1:Basic Asynchronous SPI Handler/Driver(基础异步SPI),通信基于异步行为并使用优先级策略来处理多个访问。 缓冲区使用可配置为“简单同步”级别。

目的:是为SPI Handler/Driver提供一组减少的服务,以仅处理异步传输;传输服务在正在传输时不会被阻塞,在传输完成后会通过notification通知用户;

其他:未在传输时处于SPI_IDLE状态;

--属于统一Sequence的Job具有相同或者递减的优先级,即Sequence中的第一个Job具有本Sequence中的最高/同等高的优先级;

--Job的优先级,数字越大,优先级越高;且取值范围为[0,3];优先级最高的Job在Sequence中首先被发送;

--允许同时传输多个Sequence;

--Notification的调用顺序是先调用[Job_Notification],然后调用[Sequence_Notification],且Job状态为SPI_JOB_FAILED/SPI_JOB_OK,Sequence状态为SPI_SEQ_FAILED/SPI_SEQ_OK/SPI_SEQ_CANCELLED

该级别功能特点:能使用ChannelBuffer和可中断Sequence

异步通信可配置架构(适用Level1和Level2)提供两种类型的序列(Sequence),SpiInterruptibleSeqAllowed决定Sequence是否可中断:

不可中断序列:每个启动的序列传输不会被处理程序/驱动程序暂停,直到传输结束;

混合序列:根据其配置,开始的序列传输可能会被Driver在两个连续的Job之间暂停

3、Level 2:Enhanced (Synchronous/Asynchronous) SPI Handler/Driver(增强型同步/异步SPI),通信基于异步行为或同步处理,使用在执行期间可选择的中断或轮询机制,并使用优先级策略来处理多个访问。 缓冲区的使用与其他级别一样是可配置的;

目的:为 Handler/Driver 提供一整套服务来处理同步和异步传输;空闲时的SPI状态为SPI_IDLE;

其他:

--异步结束传输可以通过轮询或中断机制来检测;

--异步传输使用Polling机制或者中断机制在SPI执行期间可通过Spi_SetAsyncMode设置

三、ChannelBuffer分类

1、IB(Internally buffered Channels ):收发数据的buffer由SPI Driver提供;

2、EB(Externally buffered Channels):收发数据的buffer由用户(静态/动态的)提供;

3、Channel实际能使用什么类型的Buffer,取决于SpiChannelBuffersAllowd的值:

四、调度相关

1、Notification和Reschedule

若Notification和重新调度都由软件控制,应该先执行重新调度,再执行Notification;

若Notification和重新调度都由硬件控制,无法按要求配置执行顺序; the order shall be completely documented。

2、Spi_Init默认会将异步通信的模式设置为polling机制;

3、Spi_AsyncTransmit和Spi_SetupEB

当Spi_SetupEB的SrcPointer为NULL调用Spi_AsyncTransmit时,则SPI Driver会用Channel的默认值进行数据传输;

当Spi_SetupEB的DestPointer为NULL调用Spi_AsyncTransmit时,则SPI Driver会忽略收到的数据;

4、Spi_AsyncTransmit和IB Channel

Spi_AsyncTransmit应在Spi_WriteIB之后调用,在Spi_ReadIB之前调用,即顺序为Spi_WriteIB-Spi_AsyncTransmit-Spi_ReadIB

5、Spi_SetAsyncMode的使用(原型为Std_ReturnType Spi_SetAsyncMode (Spi_AsyncModeType Mode))(PS:这个在使用异步通信的时候需要格外注意

若SPI Driver的状态为SPI_BUSY且异步传输正在进行时调用Spi_SetAsyncMode,则SPI Driver不应改变为AsyncModeType并保持模式不变,且返回E_NOT_OK;

若SPI Driver的状态即使为SPI_BUSY且同步传输正在进行时调用Spi_SetAsyncMode,则SPI Driver应改变AsyncModeType为入参Mode,且返回E_OK;

6、在准备使用SPI传输数据之前(在Spi_WriteIB或者Spi_SetupEB之前),需要查询使用的Sequence的状态不为Pending

五、相关时序图

1、同步时序图如下

2、异步时序图如下

  • 30
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程大纲1-什么是 AutoSAR 为什么要学习 AutoSAR2-AutoSAR课程大纲3-用Linux操作系统思维理解AutoSAR4-AutoSAR出现的背景和行业状况5-AutoSAR运行的硬件环境ECU6-AutoSAR优势和代码演示7-AutoSAR开发方法论8-汽车电子岗位介绍9-AUTOSAR工具链讲解10-BSW概述-111-BSW概述-212-CAN总线物理层讲解-113-CAN总线物理层讲解-214-CAN总线物理层讲解-标准和仲裁机制15-CAN总线物理层讲解-数据帧16-CAN总线物理层讲解-错误检测机制17-CAN总线物理层讲解-位时间和同步18-CAN总线DBC文件讲解19-AutoSAR通信概述-通信服务架构120-AutoSAR通信概述-通信服务架构221-AutoSAR通信概述-PDU和收发数据流22-CAN总线网络传输层CanTp讲解-Can诊断网络分层23-CAN总线网络传输层CanTp讲解-CanTp组帧拆帧过程-124-CAN总线网络传输层CanTp讲解-CanTp组帧拆帧过程-225-CAN总线网络传输层CanTp讲解-CanTp时间参数和诊断数据流26-车载以太网第一讲-车载以太网基础知识MAC PHY27-车载以太网第一讲-车载以太网和工业以太网区别28-车载以太网在Autosar上的应用-以太网协议栈软件架构29-车载以太网在AutoSAR上的应用-Soad PduR30-LIN总线入门到精通第一讲-Lin总线基础知识31-LIN总线入门到精通第一讲-Lin协议格式32-LIN总线入门到精通第一讲-Lin帧类型33-LIN总线的通信矩阵和LDF文件讲解34-LIN总线在AutoSAR上的应用35-Lin总线诊断应用-LinTp传输层36-Lin总线诊断应用-Lin主节点诊断流程37-SPI总线基础知识38-AutoSAR SPI应用39-协议数据单元PDU和服务数据单元SDU40-Pdu Router(PduR)模块详解41-Com模块讲解-报文和信号42-Com模块讲解-COM内部实现原理43-诊断功能第一讲-诊断基础知识44-诊断功能第二讲-UDS服务讲解-UDS基础知识45-诊断功能第二讲-UDS服务讲解-物理寻址和功能寻址46-诊断功能第二讲-UDS服务讲解-具体服务讲解-147-诊断功能第二讲-UDS服务讲解-具体服务讲解-248-诊断功能第二讲-DCM模块讲解49-诊断功能第四讲-OBD服务50-存储知识和AUTOSAR存储架构51-AUTOSAR 存储服务之Fee换页策略52-Autosar BswM模块讲解53-AutoSAR OS和OSEK OS54-AutoSAR应用软件层-RTE层概述55-AutoSAR应用软件层-AppL层概述
SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器、存储器和其他外设之间进行通信。AUTOSARAutomotive Open System Architecture)是一种在汽车电子系统中广泛应用的标准化软件架构。 AUTOSAR SPI传输是指在AUTOSAR架构中使用SPI接口进行数据传输。SPI传输在汽车电子系统中具有重要作用,可用于连接各种外设,如传感器、执行器和存储器等。SPI接口通过主从模式进行通信,其中一个设备作为主设备控制通信过程,而其他设备则作为从设备接收和发送数据。 在AUTOSAR架构中,SPI传输通常是通过驱动程序来实现的。驱动程序负责配置和控制SPI接口的各种参数,如时钟频率、传输位数和传输模式等。SPI传输的数据可以是单向的,主设备向从设备发送数据,也可以是双向的,主设备和从设备之间进行数据的双向传输。 AUTOSAR SPI传输的主要优点包括高速传输、可靠性和灵活性。SPI接口可以以高速率进行数据传输,适用于对实时性要求较高的应用场景。此外,SPI传输也具有较低的传输延迟和较小的系统开销。AUTOSAR架构还允许SPI接口的配置和扩展,以满足不同外设的需求。 然而,AUTOSAR SPI传输也面临一些挑战。首先,SPI接口不具备数据包传输机制,需要在协议层上进行数据包的封装和解析。其次,SPI传输的线路长度受限,通常适用于近距离的设备连接。最后,SPI传输也存在数据安全性和冲突的问题,需要在设计阶段进行充分考虑。 总之,AUTOSAR SPI传输是一种在AUTOSAR架构中使用SPI接口进行数据传输的方法。它可以实现高速、可靠和灵活的数据传输,广泛应用于汽车电子系统中。对于开发人员来说,了解和理解SPI传输的原理和使用方法,对于设计和实现汽车电子系统具有重要意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值