A2B或“汽車音頻總線”是一項主要為信息娛樂系統(tǒng)開發(fā)的新技術(shù),旨在減輕音頻線束的重量和成本。A2B 總線是單主多從系統(tǒng),其中主控制器上的 A2B 收發(fā)芯片為主。A2B 收發(fā)器芯片通過單根非屏蔽雙絞線支持多通道數(shù)字音頻。此外,A2B 總線將直流電源傳輸?shù)竭h(yuǎn)程總線供電節(jié)點。A2B 收發(fā)器連接多個 IC 間聲音 (I2S) 同步、脈沖編碼調(diào)制 (PCM) 數(shù)據(jù),節(jié)點之間最長可達(dá) 15 米,所有節(jié)點的總長度最長可達(dá) 40 米。
A2B 主節(jié)點生成時鐘、同步和成幀信號以及從節(jié)點的直流電源。A2B 芯片可通過 I2C 進(jìn)行編程,用于配置和從從設(shè)備讀取數(shù)據(jù)。它提供對從收發(fā)器的寄存器和狀態(tài)信息以及 I2C 到 I2C 通信的直接訪問。
A2B 網(wǎng)絡(luò)基于為整個網(wǎng)絡(luò)創(chuàng)建的原理圖建立,包括主節(jié)點、從節(jié)點以及與其連接的外圍設(shè)備。一旦通電,發(fā)現(xiàn)機制用于識別網(wǎng)絡(luò)中連接的每個節(jié)點。所有從節(jié)點從從節(jié)點 0 到系統(tǒng)中最后一個可用節(jié)點依次被發(fā)現(xiàn),然后初始化以進(jìn)行同步數(shù)據(jù)交換。所有這些功能都在 A2B 軟件堆棧中實現(xiàn)。A2B 軟件堆棧旨在高效配置、設(shè)計和部署 A2B 網(wǎng)絡(luò)。
本文深入介紹了生成特定于 STM32 微控制器的目標(biāo)軟件,其中包含單主單從 A2B 網(wǎng)絡(luò)的 A2B 堆棧和應(yīng)用程序。EVAL-AD2428WD1BZ 板已用作主板,EVAL-AD2428WB1BZ 板已用作從板。該應(yīng)用程序已創(chuàng)建用于從從設(shè)備線路輸入到主設(shè)備線路輸出的音頻傳輸。一個連接在從板上的 I2c 設(shè)備,該設(shè)備一直與主 I2c 總線通信,并向 STM32 微控制器提供運行時運動數(shù)據(jù)。
A2B 軟件堆棧:

圖 1:A2B 軟件堆棧
圖 1 顯示了 A2B 軟件堆棧的架構(gòu)。此 A2B 軟件堆棧由 ADI 公司提供,可用于構(gòu)建特定于任何平臺的應(yīng)用程序,方法是重新實現(xiàn)平臺抽象層 (PAL) 和移植特定于目標(biāo)平臺和最終應(yīng)用程序使用的應(yīng)用程序?qū)印?/p>
基于 A2B 的應(yīng)用程序開發(fā)涉及 3 個主要步驟:
構(gòu)建特定于定制硬件的目標(biāo)軟件。
在 sigma studio 上設(shè)計 A2B 原理圖。
應(yīng)用程序代碼開發(fā)。
1. 構(gòu)建特定于定制硬件的目標(biāo)軟件:
圖 2 顯示了 A2B Stack 目錄結(jié)構(gòu),它由核心 A2B 堆棧和應(yīng)用程序文件組成。其中,需要對“a2bstack-pal”和“app”文件夾下的文件進(jìn)行特定于平臺的修改。

圖 2:A2B 堆棧目錄結(jié)構(gòu)
在這里,每個目錄都包含功能特定的軟件實現(xiàn)。a2bstack包含用于在發(fā)現(xiàn)和配置階段有效協(xié)調(diào)網(wǎng)絡(luò)活動的計劃代碼。除此之外,它還執(zhí)行封裝在消息和作業(yè)中的工作單元。a2bplugin-master包含 A2b 堆棧主節(jié)點的源代碼。A2B 網(wǎng)絡(luò)發(fā)現(xiàn)算法和線路故障診斷功能作為主插件的一部分實現(xiàn),而a2bslave-plugin包含一個簡單的從插件示例,用作開發(fā)自定義插件的啟動板。a2bstack -protobuf包含解析使用 ADI sigma studio 生成的 A2B 總線配置文件的源代碼。此外,用于解析和解碼 Google protobuf 編碼的 A2B 配置文件的代碼。
a2bstack-pal包含 I2c 通信、音頻主機配置、計時器和日志記錄功能的驅(qū)動程序?qū)崿F(xiàn)。表 1 包含需要根據(jù)目標(biāo)平臺重新實現(xiàn)的 PAL 功能列表。其余功能根據(jù)應(yīng)用程序需要提供擴展功能。

表 1:PAL 函數(shù)列表
A2b 堆棧進(jìn)程從a2b_palInit函數(shù)開始。此函數(shù)為平臺創(chuàng)建堆棧 ecb(環(huán)境控制塊),其中包含 BaseEcb 和 PalECB。PalEcb 包含設(shè)備驅(qū)動程序和外圍配置結(jié)構(gòu)的句柄。

內(nèi)存管理實現(xiàn):a2b_palinit為平臺特定的內(nèi)存管理、定時器、I2c、音頻和插件處理程序分配函數(shù)指針。此處解釋了每個功能的基于 STM32 微控制器的實現(xiàn)。
內(nèi)存管理實現(xiàn):
A2B 堆棧提供內(nèi)置的內(nèi)存管理器,如果不需要特定于目標(biāo)的內(nèi)存管理,可以啟用該管理器。我們?yōu)榇斯δ軉⒂昧薃2B_FEATURE_MEMORY_MANAGER 。
I2c 驅(qū)動程序?qū)崿F(xiàn):
STM32 的 I2c 總線已為 STM32 微控制器配置如下。

a2b_pal_I2cOpenFunc 已實現(xiàn)為 I2c 設(shè)備調(diào)用HAL_I2C_Init并配置模擬和數(shù)字濾波器。

a2b_pal_I2cReadFunc已通過使用HAL_I2C_Master_Receive實現(xiàn), a2b_pal_I2cWriteFunc已使用HAL_I2C_Master_Transmit函數(shù)實現(xiàn)以從 I2c 設(shè)備讀取/寫入數(shù)據(jù)。
a2b_pal_I2cWriteReadFunc函數(shù)在一次調(diào)用中執(zhí)行 I2c 設(shè)備的讀/寫功能。STM32 HAL 驅(qū)動程序不通過調(diào)用單個函數(shù)來提供讀/寫功能。此函數(shù)已通過在 I2c 設(shè)備上調(diào)用基于中斷的 HAL 發(fā)送和接收調(diào)用來移植。調(diào)用 HAL_I2C_Master_Seq_Transmit_IT來發(fā)送數(shù)據(jù)。已調(diào)用HAL_I2C_GetState來檢查外設(shè)的狀態(tài)并等待狀態(tài)顯示為“BUSY”。一旦外設(shè)完成數(shù)據(jù)傳輸,就會調(diào)用HAL_I2C_Master_Seq_Receive_IT來接收來自 I2c 設(shè)備的數(shù)據(jù)。同樣,HAL_I2C_GetState檢查外設(shè)的狀態(tài)并在數(shù)據(jù)接收成功完成后退出該功能。

使用HAL_I2C_DeInit實現(xiàn)的a2b_pal_I2cCloseFunc以取消初始化 I2c 設(shè)備。
定時器實現(xiàn):
定時器功能已使用 HAL 定時器實現(xiàn)。Timer 已配置為 1 毫秒,并作為a2b_pal_TimerInitFunc的一部分啟動,每次調(diào)用a2b_pal_TimerCallback時,計數(shù)器都會增加1。a2b_pal_TimerGetSysTimeFunc將當(dāng)前時間保存在 TimerEcb 中。a2b_pal_TimerShutdownFunc實施以停止計時器。
Audio Host 初始化和配置需要基于主機設(shè)備的實現(xiàn)。由于已使用評估板,此處的 PAL 不需要在功能上進(jìn)行任何重新實現(xiàn)。
完成 PAL 的實現(xiàn)后,下一步是將總線配置應(yīng)用到目標(biāo)軟件。
2. 在sigma studio上設(shè)計A2B Schematic:
A2B 網(wǎng)絡(luò)發(fā)現(xiàn)基于使用 sigma studio 創(chuàng)建的示意圖運行。原理圖包含目標(biāo)處理器、主機控制器、A2B 主節(jié)點和從節(jié)點,以及 A2B 網(wǎng)絡(luò)所需的所有 I2c 從屬外圍設(shè)備。
這是為具有 I2c 器件的單主、單從器件以及具有 EVM EVAL-AD2428WD1BZ 和 EVAL-AD2428WB1BZ 的音頻功能創(chuàng)建的原理圖。主從配置文件 (.xml) 中的音頻主機已添加到外圍屬性中,以配置從從屬線路輸入到主線路輸出的音頻傳輸。

圖 3:A2B 單主單從原理圖
如圖 3 所示,A2B 主節(jié)點、音頻主機和 I2c EEPROM 設(shè)備使用 I2c 總線連接到目標(biāo)處理器(STM32)。A2B 主節(jié)點連接到 A2B 從節(jié)點,其中包含 I2c 外圍設(shè)備。所有 I2c 設(shè)備都定義了 A2B 堆棧用來訪問該設(shè)備的指定地址。
原理圖需要在導(dǎo)出到 .c 文件之前使用 PC 和 sigma studio 進(jìn)行驗證。這將創(chuàng)建總線配置源文件,其中包含每個節(jié)點、主、從 I2c 總線和外圍設(shè)備節(jié)點地址的詳細(xì)信息以進(jìn)行通信。將總線配置文件放到 a2b_app/src 目錄下。A2B 堆棧解析此文件并獲取所有節(jié)點的參數(shù),使用此 A2B 堆棧運行網(wǎng)絡(luò)發(fā)現(xiàn)。如果節(jié)點序列和示意圖中定義的屬性與實際硬件連接匹配,則 A2B 堆棧通過發(fā)現(xiàn)階段。
into 原理圖中定義的 I2c 設(shè)備地址用于與該設(shè)備進(jìn)行通信。一旦這些實現(xiàn)完成,A2B 堆棧就可以發(fā)現(xiàn)和配置連接的 A2B 網(wǎng)絡(luò)。
3. 應(yīng)用程序代碼開發(fā)
所需的最后一個實現(xiàn)是應(yīng)用程序?qū)崿F(xiàn)。A2B 棧提供了三個注冊到棧中的回調(diào)函數(shù),可用于重要的網(wǎng)絡(luò)活動。這些可以根據(jù)事件處理的最終應(yīng)用程序設(shè)計要求重新實現(xiàn)。
發(fā)現(xiàn)完成回調(diào)函數(shù):
a2b_msgRtrSendRequest(msg, A2B_NODEADDR_MASTER, a2bapp_onDiscoveryComplete );
電源/線路回調(diào)函數(shù):
pApp_Info-》notifyPowerFault = a2b_msgRtrRegisterNotify(pApp_Info-》ctx, A2B_MSGNOTIFY_POWER_FAULT, a2bapp_onPowerFault , pApp_Info, A2B_NULL)。
中斷回調(diào)函數(shù):
pApp_Info-》notifyInterrupt = a2b_msgRtrRegisterNotify(pApp_Info-》ctx,
A2B_MSGNOTIFY_INTERRUPT、a2bapp_onInterrupt、pApp_Info、A2B_NULL)。
對于這個基于 STM32 的 A2B 實現(xiàn),現(xiàn)有的回調(diào)實現(xiàn)示例沒有被修改。a2b_setup在應(yīng)用程序啟動時調(diào)用,用于 A2B 發(fā)現(xiàn)和配置。一旦 A2B 設(shè)置返回成功,A2B 網(wǎng)絡(luò)就準(zhǔn)備好通過 A2B 將音頻從從屬設(shè)備傳輸?shù)街髟O(shè)備。
A2B PAL I2c 功能用于與連接在 A2B 從站的 I2c 設(shè)備進(jìn)行通信。這是與 A2B 從 I2c 設(shè)備通信以獲取運動數(shù)據(jù)的代碼示例。

除此應(yīng)用程序外,還需要有一個連續(xù)循環(huán)來監(jiān)控 A2B 上發(fā)生的任何故障,并將滴答聲提供給 a2b 堆棧。連續(xù)滴答使 A2B 堆棧保持激活狀態(tài)。

硬件接口:
EVAL AD2428 主節(jié)點使用 I2c 線連接到 STM32。Eval AD2428WD1BZ 板包含 P1 連接器,用于在 AD2428 收發(fā)器與目標(biāo)平臺之間進(jìn)行通信。如下圖所示,將 Eval 板與 STM32 I2c 總線之間的 I2c 和復(fù)位線連接起來。

圖 4:AD2428WD1DZ Sigma Studio 到 STM32 連接
對于這個項目,評估板、STM32 微控制器和 I2c 外圍設(shè)備連接如下圖所示。

圖 5:A2B-STM32 連接
結(jié)論:
在本文中,我們討論了如何使用汽車音頻總線或 A2B 進(jìn)行音頻傳輸以及通過 STM32 控制器平臺訪問 I2c 設(shè)備。該項目是使用 Analog Devices, Inc 評估板創(chuàng)建的。提供的詳細(xì)信息有助于圍繞 A2B 和 STM32 微控制器技術(shù)創(chuàng)建實際產(chǎn)品(音頻產(chǎn)品和其他產(chǎn)品)。A2B 和汽車音頻總線是 ADI 公司的注冊商標(biāo)。ADI 的主要 A2B 網(wǎng)頁提供指向部件信息、ADI 工具和設(shè)計信息的鏈接。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
49文章
8890瀏覽量
165906 -
控制器
+關(guān)注
關(guān)注
114文章
17893瀏覽量
195389 -
總線
+關(guān)注
關(guān)注
10文章
3062瀏覽量
91908
發(fā)布評論請先 登錄
ADI宣布A2B 2.0汽車音頻總線現(xiàn)已全面投入量產(chǎn)
SGM56101Q:汽車應(yīng)用的高性能音頻DAC解決方案
MWC 2026 | 廣和通發(fā)布基于Linux OS的高通QMB415平臺5G MiFi解決方案
如何在Arm Neoverse N2平臺上提升llama.cpp擴展性能
剖析PCM186x - Q1:汽車音頻ADC的高性能解決方案
MX93AUD-HAT音頻評估板:入門級音頻解決方案
適用于Mobileye EyeQ6L平臺的MPSafe電源子系統(tǒng)解決方案參考設(shè)計
如何把蜂鳥E203的核移植在N4DDR平臺上?
Auracast廣播音頻解決方案通過Nordic Semiconductor無線連接技術(shù) 在公共場所提供輔助聽力支持
2025全球CAN總線網(wǎng)關(guān)轉(zhuǎn)換模組選型推薦與解決方案解析
在rt-thread4.0.2版本stm32f407硬件平臺上,使用reboot命令無法重啟,會讓系統(tǒng)死機的原因?
Arm Neoverse N2平臺實現(xiàn)DeepSeek-R1滿血版部署
AD2430/AD2438汽車音頻總線收發(fā)器技術(shù)手冊
在STM32平臺上實現(xiàn)基于汽車音頻總線的解決方案
評論