AUTOSAR進階圖解==>AUTOSAR_SRS_ADCDriver

AUTOSAR ADC驅動詳解

基于AUTOSAR標準的ADC驅動模塊需求規范分析

目錄

  1. ADC驅動模塊概述
    1. 關鍵概念定義
  2. ADC驅動架構
    1. ADC驅動在AUTOSAR分層架構中的位置
    2. ADC驅動的主要職責
  3. ADC驅動配置結構
    1. 通用配置(AdcGeneral)
    2. 硬件單元配置(AdcHwUnit)
    3. 通道配置(AdcChannel)
    4. 通道組配置(AdcChannelGroup)
    5. 通道組映射(AdcChannelGroupMapping)
    6. 電源狀態配置(AdcPowerStateConfig)
  4. ADC通道組狀態機
    1. ADC通道組狀態
    2. 狀態轉換
  5. ADC驅動交互流程
    1. 初始化階段
    2. 配置通知階段
    3. 軟件觸發轉換階段
    4. 轉換與中斷處理
    5. 讀取結果階段
    6. 高優先級中斷處理
    7. 停止轉換階段
    8. 電源管理階段
  6. 總結

1. ADC驅動模塊概述

AUTOSAR ADC驅動模塊是微控制器抽象層(MCAL)的一部分,負責初始化和控制微控制器內部的模數轉換器單元。ADC驅動提供了啟動和停止轉換的服務,并支持啟用/禁用轉換觸發源,同時提供了通知機制和查詢轉換狀態及結果的功能。

ADC驅動模塊工作在所謂的ADC通道上,一個ADC通道將一個模擬輸入引腳、必要的ADC電路和轉換結果寄存器組合成一個可通過ADC驅動單獨控制和訪問的實體。

1.1 關鍵概念定義

  • ADC硬件單元:表示包含執行"模數轉換"所需所有部件的微控制器輸入電子設備。
  • ADC通道:表示綁定到一個端口引腳的邏輯ADC實體。多個ADC實體可以映射到同一個端口引腳。
  • ADC通道組:鏈接到同一ADC硬件單元的ADC通道組(例如一個采樣保持和一個A/D轉換器)。整個組的轉換由一個觸發源觸發。
  • ADC結果緩沖區:ADC驅動的用戶必須為每個組提供一個緩沖區。如果選擇了流式訪問模式,此緩沖區可以容納同一通道組的多個樣本。如果選擇了單次訪問模式,緩沖區中保存每個組通道的一個樣本。
  • 轉換模式
    • 單次模式:在觸發后執行一次ADC通道組的轉換,結果寫入指定的緩沖區。觸發可以是軟件API調用或硬件事件。
    • 連續模式:在軟件API調用(啟動)后連續執行ADC通道組的轉換。轉換本身自動運行(由硬件/中斷控制)。可以通過軟件API調用(停止)停止連續轉換。
  • 觸發源:啟動單次轉換或連續轉換系列的源事件。
  • 采樣時間:模擬值被采樣的時間(例如電容充電)。
  • 轉換時間:采樣的模擬值轉換為數字表示的時間。
  • 獲取時間:采樣時間+轉換時間。

2. ADC驅動架構

ADC驅動在AUTOSAR分層架構中位于微控制器抽象層(MCAL),它向上提供服務給ECU抽象層,向下控制微控制器的ADC硬件單元。

在這里插入圖片描述

圖1:AUTOSAR ADC驅動模塊架構圖

2.1 ADC驅動在AUTOSAR分層架構中的位置

  1. 應用層 - 包含應用軟件組件(SWC),它們通過RTE層請求ADC相關功能。

    • 應用組件可能需要獲取模擬傳感器數據,如溫度、壓力、位置等。
  2. RTE層 - 運行時環境層,為應用層和基礎軟件層之間提供標準化接口。

    • 通過RTE API,應用無需關心底層細節即可訪問ADC功能。
  3. BSW層/ECU抽象層 - 包含I/O硬件抽象(IoHwAbs),提供與硬件無關的接口。

    • IoHwAbs將模擬輸入和ADC通道的映射關系抽象化。
    • 向上提供符合AUTOSAR標準的API,向下調用MCAL層的ADC驅動。
  4. BSW層/MCAL層 - 包含ADC驅動本身,以及相關的MCU驅動和端口驅動。

    • ADC驅動實現針對特定微控制器的ADC初始化和控制。
    • 與MCU驅動和端口驅動協作,共同管理ADC硬件資源。
  5. 硬件層 - 包含ADC硬件單元和微控制器物理資源。

    • ADC驅動通過MCAL層的抽象機制控制這些硬件資源。

2.2 ADC驅動的主要職責

  1. 初始化和控制ADC硬件單元
  2. 提供ADC通道分組功能
  3. 支持不同的轉換模式(單次/連續)
  4. 支持不同的觸發源(軟件/硬件)
  5. 提供結果訪問和通知機制
  6. 支持電源狀態管理

3. ADC驅動配置結構

ADC驅動的配置結構定義了如何設置和使用ADC硬件資源。配置包括通用設置、硬件單元設置、通道設置、通道組設置以及電源管理設置。

在這里插入圖片描述

圖2:AUTOSAR ADC驅動模塊配置結構類圖

3.1 通用配置(AdcGeneral)

通用配置定義了ADC驅動整體的行為和可用功能:

  1. AdcDeInitApi - 是否支持反初始化API
  2. AdcDevErrorDetect - 是否支持開發錯誤檢測
  3. AdcEnableStartStopGroupApi - 是否支持啟動/停止通道組轉換API
  4. AdcGroupNotificationSupport - 是否支持通道組通知
  5. AdcHwTriggerSupport - 是否支持硬件觸發
  6. AdcPrioritySupport - 是否支持通道組優先級機制
  7. AdcReadGroupApi - 是否支持讀取通道組API
  8. AdcVersionInfoApi - 是否支持版本信息API

這些配置項直接對應SRS_Adc_12307中描述的基本靜態配置。

3.2 硬件單元配置(AdcHwUnit)

硬件單元配置定義了每個ADC硬件單元的基本參數:

  1. AdcHwUnitId - ADC硬件單元的唯一標識符
  2. AdcClockSource - ADC時鐘源選擇
  3. AdcPrescale - ADC時鐘預分頻設置
  4. AdcReferenceVoltage - ADC參考電壓源
  5. AdcResolution - ADC分辨率(8位、10位、12位等)
  6. AdcResultAlignment - 結果對齊方式(左對齊或右對齊)

根據SRS_Adc_12824,結果對齊方式可配置為左對齊或右對齊。

3.3 通道配置(AdcChannel)

通道配置定義了每個ADC通道的特性:

  1. AdcChannelId - 通道標識符
  2. AdcChannelName - 通道符號名稱
  3. AdcChannelResolution - 通道分辨率
  4. AdcChannelSamplingTime - 通道采樣時間
  5. AdcChannelConversionTime - 通道轉換時間

這些配置項直接對應SRS_Adc_12307中描述的每個通道的基本靜態配置。

3.4 通道組配置(AdcChannelGroup)

通道組配置定義了ADC通道組的行為:

  1. AdcGroupId - 通道組標識符
  2. AdcGroupName - 通道組符號名稱
  3. AdcGroupAccessMode - 訪問模式(單次/流式)
  4. AdcGroupConversionMode - 轉換模式(單次/連續)
  5. AdcGroupPriority - 通道組優先級
  6. AdcGroupTriggSrc - 觸發源(軟件/硬件)
  7. AdcNotification - 通知回調函數指針
  8. AdcStreamingBufferMode - 流式緩沖區模式(線性/循環)
  9. AdcStreamingNumSamples - 流式采樣數量

根據SRS_Adc_12447,ADC驅動允許將屬于同一ADC硬件單元的ADC通道分組到所謂的ADC通道組中。

根據SRS_Adc_12817,ADC驅動允許為每個ADC通道組靜態配置一個觸發源。

根據SRS_Adc_12820,ADC驅動允許為每個通道組配置優先級級別,以便高優先級組可以中斷正在進行的低優先級轉換。

3.5 通道組映射(AdcChannelGroupMapping)

通道組映射配置定義了通道組中包含的通道:

  1. AdcChannelIndex - 通道在組中的索引

這實現了SRS_Adc_12818中描述的功能,允許將一個ADC通道分配給多個ADC通道組。

3.6 電源狀態配置(AdcPowerStateConfig)

電源狀態配置定義了ADC的電源管理行為:

  1. AdcPowerStateAsyncTransitionMode - 是否支持異步電源狀態轉換
  2. AdcPowerState - 電源狀態(全功率/低功率/關閉)

這些配置項實現了SRS_ADC_12826SRS_ADC_12827SRS_ADC_12828SRS_ADC_12829中描述的電源狀態管理功能。


4. ADC通道組狀態機

ADC通道組狀態機描述了ADC通道組在操作過程中可能的狀態和狀態轉換。

在這里插入圖片描述

圖3:AUTOSAR ADC驅動通道組狀態轉換圖

4.1 ADC通道組狀態

根據SRS_Adc_12291,ADC通道組有以下五種狀態:

  1. 未初始化(UNINIT) - ADC驅動未初始化狀態,在驅動初始化前的狀態。

  2. 空閑(IDLE) - ADC通道組空閑狀態,可以啟動新轉換或配置通道組。

    • 在初始化后進入此狀態
    • 在轉換停止后回到此狀態
    • 此狀態下可以啟動新的轉換
  3. 忙(BUSY) - ADC通道組忙狀態,表示轉換正在進行中。

    • 啟動轉換后進入此狀態
    • 可能被高優先級組中斷
    • 轉換完成后離開此狀態
  4. 已完成(COMPLETED) - 單次轉換已完成狀態,結果可以讀取。

    • 單次轉換完成后進入此狀態
    • 此狀態下可以讀取最新的轉換結果
    • 可以從此狀態啟動新的轉換
  5. 流式已完成(STREAM COMPLETED) - 流式轉換已完成狀態,所有樣本都已存儲在緩沖區中。

    • 流式轉換完成后進入此狀態
    • 此狀態下可以訪問采集的所有樣本
    • 可以從此狀態啟動新的轉換

4.2 狀態轉換

狀態轉換描述了ADC通道組如何從一個狀態變化到另一個狀態:

  1. 初始化 - 從UNINIT到IDLE:通過Adc_Init()函數完成初始化后發生。

  2. 啟動轉換 - 從IDLE到BUSY:通過Adc_StartGroupConversion()函數啟動轉換后發生。

  3. 單次轉換完成 - 從BUSY到COMPLETED:單次轉換模式下,轉換完成后發生。

  4. 流式轉換完成 - 從BUSY到STREAM COMPLETED:流式轉換模式下,所有樣本轉換完成后發生。

  5. 啟動新轉換 - 從COMPLETED或STREAM COMPLETED到BUSY:通過Adc_StartGroupConversion()函數啟動新轉換后發生。

  6. 停止轉換 - 從BUSY、COMPLETED或STREAM COMPLETED到IDLE:通過Adc_StopGroupConversion()函數停止轉換后發生。

  7. 反初始化 - 從IDLE到UNINIT:通過Adc_DeInit()函數反初始化后發生。

  8. 高優先級中斷 - 從BUSY到BUSY:當啟用優先級支持時,高優先級組可以中斷正在進行的低優先級轉換。

這些狀態和轉換實現了SRS_Adc_12291中描述的ADC通道組狀態查詢功能。


5. ADC驅動交互流程

ADC驅動交互流程展示了在ADC轉換過程中各個組件之間的交互序列。

在這里插入圖片描述

圖4:AUTOSAR ADC驅動轉換序列圖

5.1 初始化階段

初始化階段建立ADC驅動的基本配置:

  1. 應用調用Adc_Init(ConfigPtr)初始化ADC驅動
  2. ADC驅動配置ADC硬件,包括:
    • 配置ADC時鐘
    • 設置ADC分辨率
    • 配置參考電壓
    • 設置結果對齊方式

這實現了SRS_Adc_12307中描述的基本靜態配置功能。

5.2 配置通知階段

配置通知階段設置通道組的通知機制:

  1. 應用調用Adc_EnableGroupNotification(Group)為指定通道組啟用通知
  2. ADC驅動更新內部狀態,使該通道組在轉換完成時能夠觸發通知

這實現了SRS_Adc_12318中描述的啟用和禁用通知功能。

5.3 軟件觸發轉換階段

軟件觸發轉換階段展示了如何通過軟件API啟動ADC轉換:

  1. 應用通過IoHwAbs層調用IoHwAbs_AdcReadGroup()
  2. IoHwAbs層調用ADC驅動的Adc_StartGroupConversion(Group)
  3. ADC驅動啟動ADC硬件進行轉換

這實現了SRS_Adc_12364中描述的啟動和停止通道組轉換功能。

5.4 轉換與中斷處理

轉換與中斷處理階段展示了ADC轉換完成后的處理流程:

  1. ADC硬件完成轉換,觸發轉換完成中斷
  2. ADC驅動處理結果:
    • 讀取ADC結果寄存器
    • 應用結果對齊和掩碼(SRS_Adc_12283)
    • 存儲到結果緩沖區
    • 更新通道組狀態
  3. ADC驅動檢查通知狀態:
    • 如果通知已啟用,調用轉換完成通知回調函數
    • 如果通知已禁用,僅存儲結果

這實現了SRS_Adc_12283中描述的掩碼信息位功能和SRS_Adc_12317中描述的通知功能。

5.5 讀取結果階段

讀取結果階段展示了如何獲取ADC轉換結果:

  1. 應用通過IoHwAbs層調用IoHwAbs_AdcReadChannel()
  2. IoHwAbs層調用ADC驅動的Adc_ReadGroup(Group, DataBufferPtr)
  3. ADC驅動檢查通道組狀態
  4. ADC驅動獲取最近的轉換結果,并返回給上層

這實現了SRS_Adc_12819中描述的讀取最新有效轉換結果功能。

5.6 高優先級中斷處理

高優先級中斷處理階段展示了優先級機制的工作方式:

  1. 應用調用Adc_StartGroupConversion(HighPriorityGroup)啟動高優先級通道組
  2. ADC驅動檢查當前轉換狀態:
    • 如果低優先級轉換正在進行,中止當前轉換并啟動高優先級轉換
    • 如果沒有正在進行的轉換,直接啟動高優先級轉換

這實現了SRS_Adc_12820中描述的通道組優先級功能。

5.7 停止轉換階段

停止轉換階段展示了如何停止正在進行的轉換:

  1. 應用調用Adc_StopGroupConversion(Group)
  2. ADC驅動停止ADC硬件轉換
  3. ADC驅動更新通道組狀態為IDLE

這實現了SRS_Adc_12364中描述的停止通道組轉換功能。

5.8 電源管理階段

電源管理階段展示了ADC驅動的電源狀態管理:

  1. 應用調用Adc_SetPowerState(PowerState)設置ADC電源狀態
  2. ADC驅動配置ADC硬件進入指定的電源狀態
  3. 應用調用Adc_GetCurrentPowerState(PowerStatePtr)獲取當前電源狀態
  4. ADC驅動返回ADC硬件的當前電源狀態

這實現了SRS_ADC_12826SRS_ADC_12827SRS_ADC_12828SRS_ADC_12829中描述的電源狀態管理功能。


6. 總結

AUTOSAR ADC驅動是微控制器抽象層的關鍵組件,它提供了對微控制器ADC硬件的標準化訪問。通過配置結構、狀態機和交互流程的設計,ADC驅動實現了以下功能:

  1. 靈活配置 - 支持多種轉換模式、觸發源和結果訪問方式,滿足不同應用場景的需求。
  2. 狀態管理 - 通過明確的狀態機設計,確保ADC轉換過程的可控性和可預測性。
  3. 優先級處理 - 通過優先級機制,支持高優先級通道組中斷低優先級轉換,滿足關鍵應用的實時性要求。
  4. 電源管理 - 通過電源狀態管理,支持不同的功耗模式,優化系統能耗。
  5. 標準接口 - 提供符合AUTOSAR標準的API,實現軟件的可移植性和可重用性。

通過以上設計,ADC驅動能夠高效、可靠地管理ADC硬件資源,為上層應用提供穩定、一致的服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91707.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

寶馬集團與SAP聯合打造生產物流數字化新標桿

在德國雷根斯堡的寶馬工廠,每57秒就有一輛新車下線。這座工廠不僅是汽車制造的基地,更是寶馬集團向SAP S/4HANA云平臺轉型的先鋒項目。通過“RISE with SAP”計劃,寶馬將該工廠的運營系統全面遷移至SAP S/4HANA Cloud Private Edition&#x…

Go 語言實戰:構建一個高性能的 MySQL + Redis 應用

引言:為什么是 Go MySQL Redis?在現代后端技術棧中,Go MySQL Redis 的組合堪稱“黃金搭檔”,被廣泛應用于各種高并發業務場景。Go 語言:以其卓越的并發性能、簡潔的語法和高效的執行效率,成為構建高性能…

Excel超級處理器,多個word表格模板中內容提取到Excel表格中

在職場中,很多人習慣在word里插入表格,設計模板,填寫內容,一旦有多個word文件需要整理在excel表格中,最常見的工作方式就是每個word文件打開,復制,粘貼到excel表格里,這樣的工作方式…

前端工程化:ES6特性

本文為個人學習筆記整理,僅供交流參考,非專業教學資料,內容請自行甄別 文章目錄一、let與var1.1、越獄問題1.2、變量的重復聲明1.3、變量提升問題二、解構2.1、數組解構2.2、對象解構2.3、方法解構三、鏈判斷四、參數默認值五、箭頭函數六、模…

大屏項目展示

一、項目克隆與基礎操作 我們參考的項目 互聯網設備可視化平臺---IofTV-Screen: ??一個基于 vue、datav、Echart 框架的物聯網可視化(大屏展示)模板,提供數據動態刷新渲染、屏幕適應、數據滾動配置,內部圖表自由替換、Mixins注入等功能,持續更新.... 將次項目克隆到本…

基于R語言地理加權回歸、主成份分析、判別分析等空間異質性數據分析實踐技術應用

在自然和社會科學領域有大量與地理或空間有關的數據,這一類數據一般具有嚴重的空間異質性,而通常的統計學方法并不能處理空間異質性,因而對此類型的數據無能為力。以地理加權回歸為基礎的一系列方法:經典地理加權回歸,…

【Flask 基礎 ①】 | 路由、參數與模板渲染

0 序言 Flask 是 Python 生態中一款輕量級 Web 框架,以簡潔、靈活著稱。 學習 Flask 的意義在于: 快速開發:通過少量代碼即可搭建功能完整的 Web 應用;理解原理:其設計清晰體現了 Web 框架的核心邏輯,如路由…

wordpress登陸前登陸后顯示不同的頂部菜單

在WordPress中讓“未登錄”和“已登錄”用戶看到不同的頂部菜單,最干凈、最安全、最可維護的做法是: 在同一個菜單位置(themelocation)里,根據is_user_logged_in()動態切換菜單。 下面給出三種常見實現方式,按推薦程度排序。任選…

【昇騰推理PaddleOCR】生產級部署方式

已知的在昇騰上推理Paddle OCR有三種方法: 概要: PyTorch官方提供了昇騰插件包,安裝后雖然可以支持PytorchOCR和PaddlePaddle的推理任務,但性能較低。換句話說,PaddlePaddle框架層面支持了昇騰,但具體到某個…

LangChain摘要記憶組件的使用與解析

01. 摘要記憶組件的類型 在 LangChain 中使用緩沖記憶組件要不就保存所有信息(占用過多容量),要不就保留最近的記憶信息(丟失太多重要信息),那么有沒有一種情況是既要又要呢? 所以折中方案就出…

NAT與智能選路

1、NAT 基礎概念核心作用:私網地址無法在 Internet 上直接使用和分配,NAT 通過將私有地址與公有地址及端口進行轉換,實現私網與公網的通信。轉換示例:內網用戶(10.1.1.1)訪問外網 FTP Server(12…

【05】VisionMaster入門到精通——圓查找

文章目錄1 運行參數先檢測出多個邊緣點然后擬合成圓形,可用于圓的定位與測量 1 運行參數 先檢測出多個邊緣點然后擬合成圓形,可用于圓的定位與測量——運行參數 扇環半徑——圓環ROI的內外圓半經; 邊綠類型 最強——只檢測掃描范圍內梯度最…

p5.js 用 beginGeometry () 和 endGeometry () 打造自定義 3D 模型

點贊 關注 收藏 學會了 在 p5.js 的 3D 繪圖中,這兩個函數是一對 “黃金搭檔”: beginGeometry():像一個 “3D 模型的開關”,調用它之后,你畫的所有簡單 3D 形狀(比如球體、圓錐)都會被 “…

(9)NMPC非線性模型預測控制及機械臂ROS控制器實現

前言 本篇介紹Nonlinear Model Predictive Control,非線性模型預測控制,MPC是一種現代先進的控制方法,而NMPC特指對非線性模型的控制,其核心思想是在每個控制周期內利用系統的非線性模型及損失函數,預測未來一段時間內…

達夢數據庫備份與還原終極指南:從基礎到增量策略實戰

第一部分:備份與還原核心原理 一、備份還原本質解析數據存儲機制 數據存儲在物理文件頁中(最小單位4K-32K)有效數據頁 文件描述頁 已分配使用頁日志優先原則:操作先寫REDO日志再更新數據文件三大核心操作操作作用關鍵特性備份復…

設計模式篇:在前端,我們如何“重構”觀察者、策略和裝飾器模式

設計模式篇:在前端,我們如何“重構”觀察者、策略和裝飾器模式 引子:代碼里“似曾相識”的場景 作為開發者,我們總會遇到一些“似曾相識”的場景: “當這個數據變化時,我需要通知其他好幾個地方都更新一…

Node.js 服務可以實現哪些功能

以下是 Node.js 服務可以實現的 100 個功能,涵蓋 Web 開發、工具鏈、系統集成、自動化等方向,按類別分類整理:一、Web 開發相關 RESTful API 服務GraphQL 服務實時聊天應用(WebSocket/Socket.IO)博客/CMS 系統電子商務…

如何安裝和使用 Cursor AI 編輯器

在軟件開發領域,幾乎每天都有新工具涌現,找到最適合您工作流程的工具可能會改變游戲規則。Cursor 是一款 AI 驅動的代碼編輯器,其革命性的 API 管理插件 EchoAPI 就是其中的代表。它們強強聯手,承諾在一個強大的平臺內簡化您的編碼…

LangChain框架概念及簡單的使用案例

一、LangChain介紹LangChain是一個強大的用于開發大模型應用程序的框架,為開發提供豐富的工具和組件,使得構造復雜的自然語言處理變得更加高效和便捷。它允許開發者將大語言模型與其他數據源工具集成,從而創建出能處理各種任務的智能體應用&a…

安卓audio 架構解析

audio_port_handle_t ? 定義:audio_port_handle_t標識音頻設備(如揚聲器、耳機)或虛擬端口(如遠程 submix)。它在設備連接或策略路由時由AudioPolicyManager分配,例如通過setDeviceConnectionState()動態注…