AUTOSAR-MCAL--SPI模块详解(三)

发布于 2023-6-6 10:59
浏览
1收藏

前言

MCAL处于AUTOSAR架构的最底层,和具体的芯片强绑定,且不同的芯片使用不同的MCAL配置工具,例如英飞凌芯片系列使用EB配置MCAL,瑞萨芯片系列使用Davince配置MCAL。所以,除了AUTOSAR标准定义好的配置项及标准接口外,不同厂商的MCAL还会有独立于MCAL标准之外的配置,所以MCAL的学习最好是结合具体的工具和芯片来学习。本系列MCAL分享,将基于瑞萨RH850芯片使用Davince配置工具来讲解。

​AUTOSAR-MCAL--MCU模块详解​

​AUTOSAR-MCAL--SPI模块详解(一)​

​AUTOSAR-MCAL--SPI模块详解(二)​

车载外设控制芯片(TLE92108,L9369,9301等高低边驱动)基本都是使用SPI通信。本文为SPI(Serial Peripheral Interface)模块详解篇第二部分,SPI控制的汽车驱动芯片L9301介绍。


外设芯片手册多则几百页,少的也是几十页,这里仅介绍一种SPI控的外设芯片的重点关注内容,希望给一些入门选手一些启发。


参考文献:

1.Specification of SPI Handler / Driver 4.3.1

https://www.autosar.org/nc/document-search/

2. RH850/U2A-EVA GroupUser’s Manual: Hardware

https://www2.renesas.cn/cn/zh/products/microcontrollers-microprocessors/rh850-automotive-mcus/rh850u2a16-automotive-microcontrollers-features-four-400mhz-cpu-cores-dual-core-lock-step-structure-coming-soon

3.Automotive octal low side driver or quad low side plus quad high side driver-L9301

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

正文

4.1 功能简介

L9301是ST(意法半导体)公司生产的专用于汽车高低边驱动的芯片。L9301芯片具有以下特点:

. 最高可配置12路输出,其中有8路可以配置为PWM输出,4路可以配置为高边驱动

. 通过SPI接口命令可以配置L9301的转换速率(Slew-rate),过流保持(Overcurrent threshold),发送驱动命令(Drivers commands),回读诊断数据(Read baco the diagnosis results)

. 常见硬件保护:过温保护,过流保护(短路到底,短路到电源),开路保护

. 常见诊断信息:过流,过温,开路,短路诊断

. 通过配置SR寄存器(State Register)可提高EMC性能

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.2 L9301的Pin脚功能

我们主要关注芯片IC的主要输入输出引脚:

. EN使能脚(Enable),芯片正常工作时必须使能EN脚

. RES复位脚,芯片复位引脚(低电平有效)

. MOSI,MISO,SCK,CS也就是SPI硬件通信引脚,具体参考:

. DRn/SRn(n等于1,2,3,4)可配置为高边输出或者底边输出

. INn(n等于1~8),与OUTn(n等于1~8)对应,可以通过INn直接控制OUTn,INn可以为DIO输入或者PWM输入

. 其他引脚都是电源或低引脚,硬件工程师比较关注,但是我们在查问题的时候,首先应该保证芯片的电源和地的电平是正常的

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.3 L9301的输出配置

通过配置L9301的CR0寄存器(后面详细介绍)的 output_conf[0:1]位域可以配置L9301的输出类型及输出通道数目。


L9301的输出配置有4种类型,配置1-3都是8路底边输出,配置4为8路底边输出加上4路高低变可配的输出。


Note:

1).output_conf[0:1]位域的配置,EN脚必须为Low Level低电平状态(L9301输出控制的工作状态为High Level高电平)。

2). 配置4后,DRN/SRC1-4只能通过SPI命令控制

3). 高边还是底边驱动可通过设备通用寄存器的Bit8配置

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.3.1 配置4介绍

域控项目中一般使用配置4(充分利用L9301的输出功能),这里仅介绍L9301的配置4。

1) IN1-8(MCU端的输入)或者Cmd1-8(SPI命令写寄存器) 控制 OUT1-8

2)OUT1-8只能输出低边驱动

3)DRN1-4和SRC1-4只能通过SPI命令(写寄存器)来控制

4)Cmd9同时控制DRN1 && SRC1 ....Cmd10-12以此类推

5)DRN1-4和SRC1-4可通过配置(通道配置寄存器)输出低边LS或者高边HS驱动

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.4 L9301的SPI协议

4.4.1 SPI帧结构

1)L9301的SPI协议帧长度(输入输出)固定为32Bit(4字节)

2)MOSI帧由读写寄存器位域W/R[0],寄存器地址ADD[24-30],复位请问位域RES[23],数据位域DATA[3-22],循环冗余校验CRC[0-2]组成。

3)MISO帧由SPI通信错误标志位域SPIErr[[29-31], 通道异常标志位域CHExcp[23-28],数据位域DATA[3-22],循环冗余校验CRC[0-2]组成。

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.4.2 SPI寄存器

对于外设芯片寄存器一般也是配置寄存器、控制寄存器、状态寄存器。

配置寄存器:配置芯片全局状态,比如CR0寄存器配置L9301的输出通道和通道高低边类型。

控制寄存器:控制芯片的输出状态,比如CR13寄存器控制L9301的12输出通道的打开和关闭。

状态寄存器:回读L9301的输出状态和诊断数据,比如SR0寄存器回读L9301的全局状态信息,SR1-SR12回读每个通道的开路、短路、过流、过温状态。


每个芯片寄存器的详细信息参考L9301的芯片手册。

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.4.3 SPI时序

MCAL的SPI标准模块中的SpiExternalDevices配置容器就是配置外设芯片的时序等信息,而SpiExternalDevices的配置就是需要结合具体芯片(L9301)的DataSheet数据手册来配置。

1)fop(Transmit Frequency)传输速率,也就是SPI数据传输的波特率,最大为6MH

2)Tsckl(SCLK period)时钟频率,也就是SPI工作时的时钟频率

3)Tlag(Enable lag time)也就是配置RH850-U2A对应的Cs Hold Time(片选保持时间)

4)Tcsn(CS negated time)也就是配置RH850-U2A对应的CS Idle time(片选空闲时间)

5)Tlead(Enable lead time)也就是配置RH850-U2A对应的CS Setup time(片选设置时间)


其他时序参数类似。

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

也就是根据L9301的时序图配置RH850-U2A的下述时序寄存器:

AUTOSAR-MCAL--SPI模块详解(三)-汽车开发者社区

4.5 小结

SPI通信的芯片手册的我们需要关注以下信息:

1)芯片的输入引脚,输出通道

2)SPI通信帧格式(数据大小,位域格式等)

3)SPI寄存器信息(配置、控制、状态寄存器)

4)SPI时序参数


AUTOSAR架构下的MCAL_SPI的具体配置就需要结合具体外设芯片的具体信息来配置:

1)SPI Channel,SPI Job,SPI Sequence等配置软件控制/回读外设芯片的软件通道

2)外设芯片时序配置SpiExternalDevices

5. 基于RH850芯片的AUTOSAR架构的SPI配置

关注本公众号,后面具体项目实战会详细介绍。

6.总结

个人认为AUTOSAR架构下的MCAL_SPI模块是整个MCAL层中最复杂的模块,我们要掌握好MCAL_SPI模块就需要详细掌握以下三个方面的基础知识:

1)AUTOSAR架构下MCAP_SPI模块的详细设计,着重理解Channel,Job,Sequency的概念,SPI异步发送过程,以及EB和IB缓存的适用场景。

2)具体芯片(RENESAS,NXP,ST等)的SPI模块,主要了解芯片SPI模块的波特率配置、时钟配置、时序配置。

3)具体外设芯片(L9301,L9369,35584,FS6522等),主要了解芯片的输入输出配置及功能,Pin定义,SPI帧结构、寄存器功能、时序要求。


熟练掌握好以上基础知识后,就需要结合具体的项目要求详细设计基于SPI通信的CDD_xxx复杂驱动(主要包括输入输出配置及控制,诊断信息回读及错误状态处理)。


文章转载自公众号:汽车电子嵌入式

1
收藏 1
回复
举报
回复
相关推荐