A2B或“汽車音頻總線”是一項主要為信息娛樂系統開發的新技術,旨在減輕音頻線束的重量和成本。A2B 總線是單主多從系統,其中主控制器上的 A2B 收發芯片為主。A2B 收發器芯片通過單根非屏蔽雙絞線支持多通道數字音頻。此外,A2B 總線將直流電源傳輸到遠程總線供電節點。A2B 收發器連接多個 IC 間聲音 (I2S) 同步、脈沖編碼調制 (PCM) 數據,節點之間最長可達 15 米,所有節點的總長度最長可達 40 米。
A2B 主節點生成時鐘、同步和成幀信號以及從節點的直流電源。A2B 芯片可通過 I2C 進行編程,用于配置和從從設備讀取數據。它提供對從收發器的寄存器和狀態信息以及 I2C 到 I2C 通信的直接訪問。
A2B 網絡基于為整個網絡創建的原理圖建立,包括主節點、從節點以及與其連接的外圍設備。一旦通電,發現機制用于識別網絡中連接的每個節點。所有從節點從從節點 0 到系統中最后一個可用節點依次被發現,然后初始化以進行同步數據交換。所有這些功能都在 A2B 軟件堆棧中實現。A2B 軟件堆棧旨在高效配置、設計和部署 A2B 網絡。
本文深入介紹了生成特定于 STM32 微控制器的目標軟件,其中包含單主單從 A2B 網絡的 A2B 堆棧和應用程序。EVAL-AD2428WD1BZ 板已用作主板,EVAL-AD2428WB1BZ 板已用作從板。該應用程序已創建用于從從設備線路輸入到主設備線路輸出的音頻傳輸。一個連接在從板上的 I2c 設備,該設備一直與主 I2c 總線通信,并向 STM32 微控制器提供運行時運動數據。
A2B 軟件堆棧:
圖 1:A2B 軟件堆棧
圖 1 顯示了 A2B 軟件堆棧的架構。此 A2B 軟件堆棧由 ADI 公司提供,可用于構建特定于任何平臺的應用程序,方法是重新實現平臺抽象層 (PAL) 和移植特定于目標平臺和最終應用程序使用的應用程序層。
基于 A2B 的應用程序開發涉及 3 個主要步驟:
構建特定于定制硬件的目標軟件。
在 sigma studio 上設計 A2B 原理圖。
應用程序代碼開發。
1. 構建特定于定制硬件的目標軟件:
圖 2 顯示了 A2B Stack 目錄結構,它由核心 A2B 堆棧和應用程序文件組成。其中,需要對“a2bstack-pal”和“app”文件夾下的文件進行特定于平臺的修改。
圖 2:A2B 堆棧目錄結構
在這里,每個目錄都包含功能特定的軟件實現。a2bstack包含用于在發現和配置階段有效協調網絡活動的計劃代碼。除此之外,它還執行封裝在消息和作業中的工作單元。a2bplugin-master包含 A2b 堆棧主節點的源代碼。A2B 網絡發現算法和線路故障診斷功能作為主插件的一部分實現,而a2bslave-plugin包含一個簡單的從插件示例,用作開發自定義插件的啟動板。a2bstack -protobuf包含解析使用 ADI sigma studio 生成的 A2B 總線配置文件的源代碼。此外,用于解析和解碼 Google protobuf 編碼的 A2B 配置文件的代碼。
a2bstack-pal包含 I2c 通信、音頻主機配置、計時器和日志記錄功能的驅動程序實現。表 1 包含需要根據目標平臺重新實現的 PAL 功能列表。其余功能根據應用程序需要提供擴展功能。
表 1:PAL 函數列表
A2b 堆棧進程從a2b_palInit函數開始。此函數為平臺創建堆棧 ecb(環境控制塊),其中包含 BaseEcb 和 PalECB。PalEcb 包含設備驅動程序和外圍配置結構的句柄。
內存管理實現:a2b_palinit為平臺特定的內存管理、定時器、I2c、音頻和插件處理程序分配函數指針。此處解釋了每個功能的基于 STM32 微控制器的實現。
內存管理實現:
A2B 堆棧提供內置的內存管理器,如果不需要特定于目標的內存管理,可以啟用該管理器。我們為此功能啟用了A2B_FEATURE_MEMORY_MANAGER 。
I2c 驅動程序實現:
STM32 的 I2c 總線已為 STM32 微控制器配置如下。
a2b_pal_I2cOpenFunc 已實現為 I2c 設備調用HAL_I2C_Init并配置模擬和數字濾波器。
a2b_pal_I2cReadFunc已通過使用HAL_I2C_Master_Receive實現, a2b_pal_I2cWriteFunc已使用HAL_I2C_Master_Transmit函數實現以從 I2c 設備讀取/寫入數據。
a2b_pal_I2cWriteReadFunc函數在一次調用中執行 I2c 設備的讀/寫功能。STM32 HAL 驅動程序不通過調用單個函數來提供讀/寫功能。此函數已通過在 I2c 設備上調用基于中斷的 HAL 發送和接收調用來移植。調用 HAL_I2C_Master_Seq_Transmit_IT來發送數據。已調用HAL_I2C_GetState來檢查外設的狀態并等待狀態顯示為“BUSY”。一旦外設完成數據傳輸,就會調用HAL_I2C_Master_Seq_Receive_IT來接收來自 I2c 設備的數據。同樣,HAL_I2C_GetState檢查外設的狀態并在數據接收成功完成后退出該功能。
使用HAL_I2C_DeInit實現的a2b_pal_I2cCloseFunc以取消初始化 I2c 設備。
定時器實現:
定時器功能已使用 HAL 定時器實現。Timer 已配置為 1 毫秒,并作為a2b_pal_TimerInitFunc的一部分啟動,每次調用a2b_pal_TimerCallback時,計數器都會增加1。a2b_pal_TimerGetSysTimeFunc將當前時間保存在 TimerEcb 中。a2b_pal_TimerShutdownFunc實施以停止計時器。
Audio Host 初始化和配置需要基于主機設備的實現。由于已使用評估板,此處的 PAL 不需要在功能上進行任何重新實現。
完成 PAL 的實現后,下一步是將總線配置應用到目標軟件。
2. 在sigma studio上設計A2B Schematic:
A2B 網絡發現基于使用 sigma studio 創建的示意圖運行。原理圖包含目標處理器、主機控制器、A2B 主節點和從節點,以及 A2B 網絡所需的所有 I2c 從屬外圍設備。
這是為具有 I2c 器件的單主、單從器件以及具有 EVM EVAL-AD2428WD1BZ 和 EVAL-AD2428WB1BZ 的音頻功能創建的原理圖。主從配置文件 (.xml) 中的音頻主機已添加到外圍屬性中,以配置從從屬線路輸入到主線路輸出的音頻傳輸。
圖 3:A2B 單主單從原理圖
如圖 3 所示,A2B 主節點、音頻主機和 I2c EEPROM 設備使用 I2c 總線連接到目標處理器(STM32)。A2B 主節點連接到 A2B 從節點,其中包含 I2c 外圍設備。所有 I2c 設備都定義了 A2B 堆棧用來訪問該設備的指定地址。
原理圖需要在導出到 .c 文件之前使用 PC 和 sigma studio 進行驗證。這將創建總線配置源文件,其中包含每個節點、主、從 I2c 總線和外圍設備節點地址的詳細信息以進行通信。將總線配置文件放到 a2b_app/src 目錄下。A2B 堆棧解析此文件并獲取所有節點的參數,使用此 A2B 堆棧運行網絡發現。如果節點序列和示意圖中定義的屬性與實際硬件連接匹配,則 A2B 堆棧通過發現階段。
into 原理圖中定義的 I2c 設備地址用于與該設備進行通信。一旦這些實現完成,A2B 堆棧就可以發現和配置連接的 A2B 網絡。
3. 應用程序代碼開發
所需的最后一個實現是應用程序實現。A2B 棧提供了三個注冊到棧中的回調函數,可用于重要的網絡活動。這些可以根據事件處理的最終應用程序設計要求重新實現。
發現完成回調函數:
a2b_msgRtrSendRequest(msg, A2B_NODEADDR_MASTER, a2bapp_onDiscoveryComplete );
電源/線路回調函數:
pApp_Info-》notifyPowerFault = a2b_msgRtrRegisterNotify(pApp_Info-》ctx, A2B_MSGNOTIFY_POWER_FAULT, a2bapp_onPowerFault , pApp_Info, A2B_NULL)。
中斷回調函數:
pApp_Info-》notifyInterrupt = a2b_msgRtrRegisterNotify(pApp_Info-》ctx,
A2B_MSGNOTIFY_INTERRUPT、a2bapp_onInterrupt、pApp_Info、A2B_NULL)。
對于這個基于 STM32 的 A2B 實現,現有的回調實現示例沒有被修改。a2b_setup在應用程序啟動時調用,用于 A2B 發現和配置。一旦 A2B 設置返回成功,A2B 網絡就準備好通過 A2B 將音頻從從屬設備傳輸到主設備。
A2B PAL I2c 功能用于與連接在 A2B 從站的 I2c 設備進行通信。這是與 A2B 從 I2c 設備通信以獲取運動數據的代碼示例。
除此應用程序外,還需要有一個連續循環來監控 A2B 上發生的任何故障,并將滴答聲提供給 a2b 堆棧。連續滴答使 A2B 堆棧保持激活狀態。
硬件接口:
EVAL AD2428 主節點使用 I2c 線連接到 STM32。Eval AD2428WD1BZ 板包含 P1 連接器,用于在 AD2428 收發器與目標平臺之間進行通信。如下圖所示,將 Eval 板與 STM32 I2c 總線之間的 I2c 和復位線連接起來。
圖 4:AD2428WD1DZ Sigma Studio 到 STM32 連接
對于這個項目,評估板、STM32 微控制器和 I2c 外圍設備連接如下圖所示。
圖 5:A2B-STM32 連接
結論:
在本文中,我們討論了如何使用汽車音頻總線或 A2B 進行音頻傳輸以及通過 STM32 控制器平臺訪問 I2c 設備。該項目是使用 Analog Devices, Inc 評估板創建的。提供的詳細信息有助于圍繞 A2B 和 STM32 微控制器技術創建實際產品(音頻產品和其他產品)。A2B 和汽車音頻總線是 ADI 公司的注冊商標。ADI 的主要 A2B 網頁提供指向部件信息、ADI 工具和設計信息的鏈接。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7542瀏覽量
151311 -
控制器
+關注
關注
112文章
16332瀏覽量
177803 -
總線
+關注
關注
10文章
2878瀏覽量
88051
發布評論請先 登錄
相關推薦
評論