0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹一個MCAL的ICU Driver模塊

冬至子 ? 來源:Vehicle軟件開發(fā) ? 作者:Vehicle軟件開發(fā) ? 2023-01-18 09:19 ? 次閱讀

**AutoSAR ICU Driver **概述

ICU中文又叫輸入捕獲單元,在汽車的控制器中具有廣泛的用途。AutoSAR中ICU Driver根據(jù)需要定義了硬件中所使用的ICU通道,主要用于采集PWM信號,解析計算PWM的周期和占空比;對輸入的脈沖信號做計數(shù);同時支持信號中斷和喚醒相關(guān)的檢測機制。

根據(jù)ICU主要功能,在AutoSAR架構(gòu)中主要提供了以下服務(wù):信號邊沿檢測通知(Signal edge notification);控制喚醒中斷處理(Controllingwakeup interrupts);周期信號檢測(Periodic signal time measurement);信號高點電平時間計算(Edge time stamping);信號邊沿計數(shù)(Edge counting)。

在AutoSAR中對于ICU的實現(xiàn)相關(guān)的模塊主要有Det、MCU、OS、EcuM、Port等模塊。其中Det用于在開發(fā)過程中檢測與ICU相關(guān)的錯誤;MCU模塊主要為ICU模塊提供基本的時間基準,用于計算輸入的ICU信號相關(guān)的時間參數(shù);OS模塊主要用于提供ICU中斷相關(guān)的處理函數(shù)的調(diào)用;EcuM模塊主要接受ICU產(chǎn)生的喚醒信號用于對喚醒源有效性檢測,從而決定狀態(tài)切換;Port一般作為復用功能將ICU模塊與外部輸入的信號關(guān)聯(lián)。

**AutoSAR ICU Driver **基本功能

在AutoSAR中ICU Driver提供了兩種模式,分別為Normal模式和Sleep模式,在Normal模式下相關(guān)的通知函數(shù)有效,而在Sleep模式下只有喚醒相關(guān)的事件具備有效性,在Sleep模式下除了喚醒相關(guān)的中斷其它事件也是不能處理的。 ICU模塊對外部PWM的檢測的原理是基于MCU模塊提供的高頻率時鐘根據(jù)PWM的邊沿開始計數(shù),最終通過計數(shù)個數(shù)和MCU輸入的高頻率時鐘基準得到最終的高低電平時間,從而計算出周期和頻率。下面簡單對ICU的喚醒模式設(shè)置和讀取PWM的周期和占空比做介紹。

在使用的ICU喚醒與休眠相關(guān)的狀態(tài)轉(zhuǎn)換時,在進入到Sleep的之前設(shè)置喚醒的檢測的邊沿觸發(fā),然后進入到Sleep模式,當外部檢測到有效的邊沿的時候,在EcuM中會對該喚醒源的有效性做判斷,正確的情況下設(shè)置ICU進入到Normal模式。下面展示了ICU模塊檢測到外部上升沿的喚醒源后進入到Normal的過程。對于整個ECU的喚醒功能原理與之類似。如果使能了ICU的喚醒,在檢測到喚醒信號后,ECUM模塊也可以使整個程序進入到RUN模式(ECUM中從WakeUp到RUN其余的轉(zhuǎn)換條件也滿足)。

2.jpg

3.jpg

在ICU中其實最常用的功能主要是對PWM信號的占空比和周期的計算。以上升沿作為激活的時間點,以較快的頻率在上升沿到來時開始計數(shù),最終數(shù)據(jù)會保存在ActiveTime和PeriodTime的變量中,調(diào)用Icu_GetDutyCycleValues便可將ActiveTime和PeriodTime放入到指定的Buffer中,應(yīng)用層處理該數(shù)據(jù)得到占空比和周期。

2.jpg

ICU Driver API

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

1 ICU_Init:初始化ICU Driver使用的Channel的參數(shù),將值寫入到對應(yīng)的寄存器中,同時ICU模塊與Port和MCU密切關(guān)聯(lián),因此要在這兩個模塊會根據(jù)配置信息初始化與ICU相關(guān)的功能。一旦ICU初始化完成,ICU模塊進入到Normal模式。
2 Icu_SetMode:設(shè)置ICU模塊的Mode,Sleep或者是Normal。
3 Icu_Enable/DisableWakeup:使能或者禁用ICU的喚醒功能
4 Icu_SetActivationCondition:用來設(shè)置特定的ICU通道是上升沿還是下降沿激活。

5.Icu_GetInputState:得到ICU輸入的狀態(tài)

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

6 Icu_StartTimestamp:開啟對特定ICU通道的邊沿捕獲時間計數(shù)。
7 Icu_StartSignalMeasurement:開始對信號進行測量。

8.Icu_GetDutyCycleValues:得到PWM的周期和激活電平的時間,根據(jù)該函數(shù)可以實現(xiàn)對PWM占空比和周期的計算。

**AutoSAR ICU Driver **配置選項

在實際的配置中ICU模塊主要包含三方面的配置,分別是IcuConfigSet Container、IcuGeneral Container以及IcuOptionalApis Container。下面分別對ICU的這三個Container的主要配置選項進行說明。

IcuGeneral Container主要包含了ICU配置的一些General的東西,主要包括:是否支持Det錯誤追溯功能;是否支持將喚醒發(fā)送到EcuM模塊;以及對于ICU模塊的Partition分配。

2.jpg

IcuOptionalApis Container主要包含了一些可以供用戶使用的API,主要包括以下API,用于可以根據(jù)具體的項目需要選擇其中的API即可,在使用的時候,有些API是相互關(guān)聯(lián)的,確保相關(guān)的API都要使能或者都要禁用。

2.jpg

IcuConfigSet Container是整個ICU模塊配置的核心。在配置中主要包括了六個相關(guān)的功能塊,如下所示。

2.jpg

IcuSignalMeasurement:在該功能中主要配置所選的ICU通道在信號測量中作為何種測量方法實現(xiàn)。可以采樣周期、占空比、高低電平時間等,根據(jù)需要選擇即可,同時相關(guān)的API也要使能。

IcuChannel:主要給使用的ICU通道分配ID,并且定義該通道是否支持喚醒,以及該通道采用ICU實現(xiàn)的具體功能。特定的ICU通道的功能主要包括邊沿計數(shù)、信號邊沿檢測、信號采樣、時間采樣。信號邊沿檢測多用于觸發(fā)或者喚醒相關(guān)的,而信號采樣在IcuSignalMeasurement可以選擇具體的模式。

IcuTimestampMeasurement:定義時間測量采樣的是線性Buffer還是環(huán)形Buffer,以及相關(guān)的通知功能,根據(jù)實際需要選擇即可。

IcuWakeup:對喚醒功能的支持的情況下關(guān)聯(lián)到EcuM特定的喚醒通道。在發(fā)生喚醒事件的時候通知ECUM對喚醒的有效性做判斷。

IcuMaxChannel:定義最大支持的ICU通道數(shù)。

IcuSignalEdgeDetection:定義對信號邊沿檢測的通知函數(shù)。

對于以上的三個主要方面的配置信息,不同的AutoSAR開發(fā)工具可能會有細微的差別,但是萬變不離其宗,基本的配置功能就是這些,根據(jù)實際的開發(fā)環(huán)境選擇即可。

**TC277 ICU **使用

本人在使用TC277曾做過ICU的捕獲PWM輸入功能。做ICU捕獲PWM的時候,主要是將特定的Port、ICU以及MCU的TIM通道進行相互關(guān)聯(lián)。在TC277中對于Port作為ICU使用的時候可以直接關(guān)聯(lián)到MCU特定的TIM通道,同時該通道作為參考被ICU模塊引用。

在ICU將該通道作為ICU_MODE_SIGNAL_MEASUREMENT使用,同時在IcuSignalMeasurementProperty選擇ICU_DUTY_CYCLE使用。然后對MCU的特定的時鐘做配置,可以選擇檢測的Filter來優(yōu)化時鐘采樣。通過MCU的時鐘分配模塊為特定的ICU的TIM選擇較高頻率的時鐘用來計算高低電平的時間,在應(yīng)用層調(diào)用Icu_GetDutyCycleValues得到Active Time和Period Time。

根據(jù)選擇時鐘頻率和得到的Active Time和Period Time就可獲得相應(yīng)的周期和占空比。在使用的時候要選擇合適的采樣的觸發(fā)邊沿,否則得到的占空比可能是100%-得到的值,還有就是可能采樣中存在Active Time和Period Time讀不到的情況,這時候要根據(jù)需要選擇相應(yīng)的回調(diào)函數(shù)或者中斷立刻處理數(shù)據(jù)或者增加相關(guān)寄存器的有效性作為判斷得到真實的數(shù)據(jù)。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16031

    瀏覽量

    176652
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    344

    瀏覽量

    21415
  • 脈沖信號
    +關(guān)注

    關(guān)注

    6

    文章

    390

    瀏覽量

    36857
收藏 人收藏

    評論

    相關(guān)推薦

    使用doxygen分析MCAL源碼的層次架構(gòu)

    閱讀MCAL源碼包中的源碼,猜測MCAL可能只是MCU底層SDK向AutoSAR的適配接口。
    的頭像 發(fā)表于 11-02 12:25 ?1020次閱讀
    使用doxygen分析<b class='flag-5'>MCAL</b>源碼的層次架構(gòu)

    TC3xx芯片時鐘系統(tǒng)的鎖相環(huán)PLL詳解

    時鐘好比MCU的心跳,只有時鐘正常了,MCU的核及外設(shè)才能正常工作。從源頭到系統(tǒng)到外設(shè)理解每一個時鐘的來源及其具體值才能方便后面理解MCAL的GPT,PWM,ICU模塊的配置(
    的頭像 發(fā)表于 12-01 09:37 ?2183次閱讀
    TC3xx芯片時鐘系統(tǒng)的鎖相環(huán)PLL詳解

    MCAL的CAN模塊配置介紹

    大家好,我是嵌入式老林,從事嵌入式軟件開發(fā)多年,今天分享的內(nèi)容是MCAL的CAN模塊配置介紹,希望能對你有所幫助
    的頭像 發(fā)表于 12-12 15:31 ?4227次閱讀
    <b class='flag-5'>MCAL</b>的CAN<b class='flag-5'>模塊</b>配置<b class='flag-5'>介紹</b>

    網(wǎng)打盡AUTOSAR MCAL模塊

    MCAL:微控制器抽象層;位于BSW層中的最下層;
    的頭像 發(fā)表于 01-25 16:30 ?1469次閱讀
    <b class='flag-5'>一</b>網(wǎng)打盡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,只能生成。 請盡早提供反
    發(fā)表于 05-20 08:16

    AUTOSAR MCAL MCU模塊的相關(guān)資料分享

    簡介MCU驅(qū)動程序提供微控制器初始化,掉電功能,復位和微控制器其他MCAL軟件模塊所需的特定功能的服務(wù)(這里主要指那些公共寄存器的設(shè)置)。需要注意的是,啟動代碼和用于升級的Bootloader是不在AUTOSAR負責范圍內(nèi)的,啟動代碼是特定于MCU的(不同MCU的啟動代
    發(fā)表于 11-03 08:18

    SPC574K MCU Driver配置錯誤背景介紹

    SPC574K MCU Driver 配置錯誤背景介紹MCU驅(qū)動程序為其他微控制器抽象層(MCAL)軟件模塊所需的基本微控制器初始化、斷電功能、復位和微控制器特定功能提供服務(wù)。錯誤代碼
    發(fā)表于 02-10 06:32

    S32K344 eMIOS/ICU關(guān)于測量PWM脈沖寬度和周期的問題如何解決?

    );”。在測試中,我發(fā)現(xiàn)問題,我無法獲得準確的周期值。事實上,函數(shù) Icu_GetDutyCycleValues() 的周期值是波動的。有時周期時間值是準確值的幾倍。同時,PWM脈寬值準確。這個問題困擾了我兩
    發(fā)表于 03-14 08:05

    如何測量PWM信號的占空比和周期?

    大家好,??我試圖建立項目來測量 PWM 信號的占空比和周期。?PWM 信號是使用 MCAL-PWM 模塊通過在其下配置
    發(fā)表于 04-12 06:02

    請問如何讓s32k144的IcuMCAL Apis起使用?

    大家好,我正在嘗試使用 Icu 連接 HC-SR04 傳感器。到目前為止,這是我的引腳映射:Vcc - 5V 引腳,Echo - PTB2 (FTM1_CH0)/ Input Trig - PTB3
    發(fā)表于 04-17 07:53

    英飛凌MCAL和VADC模塊配置資料說明

    本文檔的主要內(nèi)容詳細介紹的是英飛凌MCAL和VADC模塊配置資料說明。
    發(fā)表于 01-25 08:00 ?150次下載
    英飛凌<b class='flag-5'>MCAL</b>和VADC<b class='flag-5'>模塊</b>配置資料說明

    【AutoSAR】【MCAL】MCU模塊

    、MCU功能MCU(微控制器單元)驅(qū)動模塊主要負責對微控制器的時鐘控制,電源管理,復位,喚醒等進行控制。這些功能通常涉及整個MCU。The MCU driver提供如下服務(wù):初始化MCU的時鐘
    發(fā)表于 10-25 20:21 ?22次下載
    【AutoSAR】【<b class='flag-5'>MCAL</b>】MCU<b class='flag-5'>模塊</b>

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

    MCAL的作用是隔離硬件,對上提供統(tǒng)的標準接口。前面的MCAL_ADC文章已經(jīng)基于Ren
    的頭像 發(fā)表于 01-29 16:45 ?7940次閱讀

    簡單聊聊MCAL的最小工程

    英飛凌的芯片在汽車電子里用得可謂是頗多,最近剛好在摸TC3系列的CAN模塊,來簡單聊聊MCAL的最小工程。
    的頭像 發(fā)表于 03-21 09:25 ?2488次閱讀

    AUTOSAR架構(gòu)MCAL、服務(wù)層、ECU抽象層介紹

    1 微控制器抽象層(MCAL) AUTOSAR CP的微控制器抽象層(MCAL)是AUTOSAR軟件架構(gòu)中的重要組成部分,它提供了對底層硬件的抽象和訪問接口,以實現(xiàn)軟件與硬件之間的
    的頭像 發(fā)表于 10-27 15:36 ?5890次閱讀