0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一个MCAL的ICU Driver模块

冬至子 来源:Vehicle软件开发 作者:Vehicle软件开发 2023-01-18 09:19 次阅读

**AutoSAR ICU Driver **概述

ICU中文又叫输入捕获单元,在汽车的控制器中具有广泛的用途。AutoSAR中ICU Driver根据需要定义了硬件中所使用的ICU通道,主要用于采集PWM信号,解析计算PWM的周期和占空比;对输入的脉冲信号做计数;同时支持信号中断和唤醒相关的检测机制。

根据ICU主要功能,在AutoSAR架构中主要提供了以下服务:信号边沿检测通知(Signal edge notification);控制唤醒中断处理(Controllingwakeup interrupts);周期信号检测(Periodic signal time measurement);信号高点电平时间计算(Edge time stamping);信号边沿计数(Edge counting)。

在AutoSAR中对于ICU的实现相关的模块主要有Det、MCU、OS、EcuM、Port等模块。其中Det用于在开发过程中检测与ICU相关的错误;MCU模块主要为ICU模块提供基本的时间基准,用于计算输入的ICU信号相关的时间参数;OS模块主要用于提供ICU中断相关的处理函数的调用;EcuM模块主要接受ICU产生的唤醒信号用于对唤醒源有效性检测,从而决定状态切换;Port一般作为复用功能将ICU模块与外部输入的信号关联。

**AutoSAR ICU Driver **基本功能

在AutoSAR中ICU Driver提供了两种模式,分别为Normal模式和Sleep模式,在Normal模式下相关的通知函数有效,而在Sleep模式下只有唤醒相关的事件具备有效性,在Sleep模式下除了唤醒相关的中断其它事件也是不能处理的。 ICU模块对外部PWM的检测的原理是基于MCU模块提供的高频率时钟根据PWM的边沿开始计数,最终通过计数个数和MCU输入的高频率时钟基准得到最终的高低电平时间,从而计算出周期和频率。下面简单对ICU的唤醒模式设置和读取PWM的周期和占空比做介绍。

在使用的ICU唤醒与休眠相关的状态转换时,在进入到Sleep的之前设置唤醒的检测的边沿触发,然后进入到Sleep模式,当外部检测到有效的边沿的时候,在EcuM中会对该唤醒源的有效性做判断,正确的情况下设置ICU进入到Normal模式。下面展示了ICU模块检测到外部上升沿的唤醒源后进入到Normal的过程。对于整个ECU的唤醒功能原理与之类似。如果使能了ICU的唤醒,在检测到唤醒信号后,ECUM模块也可以使整个程序进入到RUN模式(ECUM中从WakeUp到RUN其余的转换条件也满足)。

2.jpg

3.jpg

在ICU中其实最常用的功能主要是对PWM信号的占空比和周期的计算。以上升沿作为激活的时间点,以较快的频率在上升沿到来时开始计数,最终数据会保存在ActiveTime和PeriodTime的变量中,调用Icu_GetDutyCycleValues便可将ActiveTime和PeriodTime放入到指定的Buffer中,应用层处理该数据得到占空比和周期。

2.jpg

ICU Driver API

ICU Driver模块常用的API主要包括以下:

1 ICU_Init:初始化ICU Driver使用的Channel的参数,将值写入到对应的寄存器中,同时ICU模块与Port和MCU密切关联,因此要在这两个模块会根据配置信息初始化与ICU相关的功能。一旦ICU初始化完成,ICU模块进入到Normal模式。
2 Icu_SetMode:设置ICU模块的Mode,Sleep或者是Normal。
3 Icu_Enable/DisableWakeup:使能或者禁用ICU的唤醒功能
4 Icu_SetActivationCondition:用来设置特定的ICU通道是上升沿还是下降沿激活。

5.Icu_GetInputState:得到ICU输入的状态

6.ICU_EnableNotification/ICU_DisableNotification:控制ICU Driver模块要不要使能对Upper Layer的通知功能。

6 Icu_StartTimestamp:开启对特定ICU通道的边沿捕获时间计数。
7 Icu_StartSignalMeasurement:开始对信号进行测量。

8.Icu_GetDutyCycleValues:得到PWM的周期和激活电平的时间,根据该函数可以实现对PWM占空比和周期的计算。

**AutoSAR ICU Driver **配置选项

在实际的配置中ICU模块主要包含三方面的配置,分别是IcuConfigSet Container、IcuGeneral Container以及IcuOptionalApis Container。下面分别对ICU的这三个Container的主要配置选项进行说明。

IcuGeneral Container主要包含了ICU配置的一些General的东西,主要包括:是否支持Det错误追溯功能;是否支持将唤醒发送到EcuM模块;以及对于ICU模块的Partition分配。

2.jpg

IcuOptionalApis Container主要包含了一些可以供用户使用的API,主要包括以下API,用于可以根据具体的项目需要选择其中的API即可,在使用的时候,有些API是相互关联的,确保相关的API都要使能或者都要禁用。

2.jpg

IcuConfigSet Container是整个ICU模块配置的核心。在配置中主要包括了六个相关的功能块,如下所示。

2.jpg

IcuSignalMeasurement:在该功能中主要配置所选的ICU通道在信号测量中作为何种测量方法实现。可以采样周期、占空比、高低电平时间等,根据需要选择即可,同时相关的API也要使能。

IcuChannel:主要给使用的ICU通道分配ID,并且定义该通道是否支持唤醒,以及该通道采用ICU实现的具体功能。特定的ICU通道的功能主要包括边沿计数、信号边沿检测、信号采样、时间采样。信号边沿检测多用于触发或者唤醒相关的,而信号采样在IcuSignalMeasurement可以选择具体的模式。

IcuTimestampMeasurement:定义时间测量采样的是线性Buffer还是环形Buffer,以及相关的通知功能,根据实际需要选择即可。

IcuWakeup:对唤醒功能的支持的情况下关联到EcuM特定的唤醒通道。在发生唤醒事件的时候通知ECUM对唤醒的有效性做判断。

IcuMaxChannel:定义最大支持的ICU通道数。

IcuSignalEdgeDetection:定义对信号边沿检测的通知函数。

对于以上的三个主要方面的配置信息,不同的AutoSAR开发工具可能会有细微的差别,但是万变不离其宗,基本的配置功能就是这些,根据实际的开发环境选择即可。

**TC277 ICU **使用

本人在使用TC277曾做过ICU的捕获PWM输入功能。做ICU捕获PWM的时候,主要是将特定的Port、ICU以及MCU的TIM通道进行相互关联。在TC277中对于Port作为ICU使用的时候可以直接关联到MCU特定的TIM通道,同时该通道作为参考被ICU模块引用。

在ICU将该通道作为ICU_MODE_SIGNAL_MEASUREMENT使用,同时在IcuSignalMeasurementProperty选择ICU_DUTY_CYCLE使用。然后对MCU的特定的时钟做配置,可以选择检测的Filter来优化时钟采样。通过MCU的时钟分配模块为特定的ICU的TIM选择较高频率的时钟用来计算高低电平的时间,在应用层调用Icu_GetDutyCycleValues得到Active Time和Period Time。

根据选择时钟频率和得到的Active Time和Period Time就可获得相应的周期和占空比。在使用的时候要选择合适的采样的触发边沿,否则得到的占空比可能是100%-得到的值,还有就是可能采样中存在Active Time和Period Time读不到的情况,这时候要根据需要选择相应的回调函数或者中断立刻处理数据或者增加相关寄存器的有效性作为判断得到真实的数据。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15865

    浏览量

    175141
  • AUTOSAR
    +关注

    关注

    10

    文章

    339

    浏览量

    21346
  • 脉冲信号
    +关注

    关注

    6

    文章

    375

    浏览量

    36762
收藏 人收藏

    评论

    相关推荐

    使用doxygen分析MCAL源码的层次架构

    阅读MCAL源码包中的源码,猜测MCAL可能只是MCU底层SDK向AutoSAR的适配接口。
    的头像 发表于 11-02 12:25 922次阅读
    使用doxygen分析<b class='flag-5'>MCAL</b>源码的层次架构

    TC3xx芯片时钟系统的锁相环PLL详解

    时钟好比MCU的心跳,只有时钟正常了,MCU的核及外设才能正常工作。从源头到系统到外设理解每一个时钟的来源及其具体值才能方便后面理解MCAL的GPT,PWM,ICU模块的配置(
    的头像 发表于 12-01 09:37 1968次阅读
    TC3xx芯片时钟系统的锁相环PLL详解

    MCAL的CAN模块配置介绍

    大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是MCAL的CAN模块配置介绍,希望能对你有所帮助
    的头像 发表于 12-12 15:31 3751次阅读
    <b class='flag-5'>MCAL</b>的CAN<b class='flag-5'>模块</b>配置<b class='flag-5'>介绍</b>

    网打尽AUTOSAR MCAL模块

    MCAL:微控制器抽象层;位于BSW层中的最下层;
    的头像 发表于 01-25 16:30 1243次阅读
    <b class='flag-5'>一</b>网打尽AUTOSAR <b class='flag-5'>MCAL</b><b class='flag-5'>模块</b>

    为什么使用MCAL在Tresos中无法生成模块

    MCAL-2.25 插件时,某些模块(如端口、MCU、SPI、CAN、FEE、GPT)由于签名失败错误而无法生成,对于某些模块,如 DIO、SMU、ICU,只能生成。 请尽早提供反
    发表于 05-20 08:16

    AUTOSAR MCAL MCU模块的相关资料分享

    简介MCU驱动程序提供微控制器初始化,掉电功能,复位和微控制器其他MCAL软件模块所需的特定功能的服务(这里主要指那些公共寄存器的设置)。需要注意的是,启动代码和用于升级的Bootloader是不在AUTOSAR负责范围内的,启动代码是特定于MCU的(不同MCU的启动代
    发表于 11-03 08:18

    SPC574K MCU Driver配置错误背景介绍

    SPC574K MCU Driver 配置错误背景介绍MCU驱动程序为其他微控制器抽象层(MCAL)软件模块所需的基本微控制器初始化、断电功能、复位和微控制器特定功能提供服务。错误代码
    发表于 02-10 06:32

    S32K344 eMIOS/ICU关于测量PWM脉冲宽度和周期的问题如何解决?

    );”。在测试中,我发现问题,我无法获得准确的周期值。事实上,函数 Icu_GetDutyCycleValues() 的周期值是波动的。有时周期时间值是准确值的几倍。同时,PWM脉宽值准确。这个问题困扰了我两
    发表于 03-14 08:05

    如何测量PWM信号的占空比和周期?

    大家好,  我试图建立项目来测量 PWM 信号的占空比和周期。 PWM 信号是使用 MCAL-PWM 模块通过在其下配置
    发表于 04-12 06:02

    请问如何让s32k144的IcuMCAL Apis起使用?

    大家好,我正在尝试使用 Icu 连接 HC-SR04 传感器。到目前为止,这是我的引脚映射:Vcc - 5V 引脚,Echo - PTB2 (FTM1_CH0)/ Input Trig - PTB3
    发表于 04-17 07:53

    英飞凌MCAL和VADC模块配置资料说明

    本文档的主要内容详细介绍的是英飞凌MCAL和VADC模块配置资料说明。
    发表于 01-25 08:00 150次下载
    英飞凌<b class='flag-5'>MCAL</b>和VADC<b class='flag-5'>模块</b>配置资料说明

    【AutoSAR】【MCAL】MCU模块

    、MCU功能MCU(微控制器单元)驱动模块主要负责对微控制器的时钟控制,电源管理,复位,唤醒等进行控制。这些功能通常涉及整个MCU。The MCU driver提供如下服务:初始化MCU的时钟
    发表于 10-25 20:21 22次下载
    【AutoSAR】【<b class='flag-5'>MCAL</b>】MCU<b class='flag-5'>模块</b>

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模块

    MCAL的作用是隔离硬件,对上提供统的标准接口。前面的MCAL_ADC文章已经基于Ren
    的头像 发表于 01-29 16:45 7674次阅读

    简单聊聊MCAL的最小工程

    英飞凌的芯片在汽车电子里用得可谓是颇多,最近刚好在摸TC3系列的CAN模块,来简单聊聊MCAL的最小工程。
    的头像 发表于 03-21 09:25 2399次阅读

    AUTOSAR架构MCAL、服务层、ECU抽象层介绍

    1 微控制器抽象层(MCAL) AUTOSAR CP的微控制器抽象层(MCAL)是AUTOSAR软件架构中的重要组成部分,它提供了对底层硬件的抽象和访问接口,以实现软件与硬件之间的
    的头像 发表于 10-27 15:36 5503次阅读