
AUTOSAR-MCAL--SPI模块详解(三)
前言
MCAL处于AUTOSAR架构的最底层,和具体的芯片强绑定,且不同的芯片使用不同的MCAL配置工具,例如英飞凌芯片系列使用EB配置MCAL,瑞萨芯片系列使用Davince配置MCAL。所以,除了AUTOSAR标准定义好的配置项及标准接口外,不同厂商的MCAL还会有独立于MCAL标准之外的配置,所以MCAL的学习最好是结合具体的工具和芯片来学习。本系列MCAL分享,将基于瑞萨RH850芯片使用Davince配置工具来讲解。
车载外设控制芯片(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
3.Automotive octal low side driver or quad low side plus quad high side driver-L9301
正文
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性能
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输入
. 其他引脚都是电源或低引脚,硬件工程师比较关注,但是我们在查问题的时候,首先应该保证芯片的电源和地的电平是正常的
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配置
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驱动
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]组成。
4.4.2 SPI寄存器
对于外设芯片寄存器一般也是配置寄存器、控制寄存器、状态寄存器。
配置寄存器:配置芯片全局状态,比如CR0寄存器配置L9301的输出通道和通道高低边类型。
控制寄存器:控制芯片的输出状态,比如CR13寄存器控制L9301的12输出通道的打开和关闭。
状态寄存器:回读L9301的输出状态和诊断数据,比如SR0寄存器回读L9301的全局状态信息,SR1-SR12回读每个通道的开路、短路、过流、过温状态。
每个芯片寄存器的详细信息参考L9301的芯片手册。
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(片选设置时间)
其他时序参数类似。
也就是根据L9301的时序图配置RH850-U2A的下述时序寄存器:
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复杂驱动(主要包括输入输出配置及控制,诊断信息回读及错误状态处理)。
文章转载自公众号:汽车电子嵌入式
