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

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

3天内不再提示

在STM32平台上实现基于汽车音频总线的解决方案

星星科技指导员 来源:嵌入式计算设计 作者:Bhumi Shah 2022-06-15 10:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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 软件堆栈:

poYBAGKpR4GANotpAAGF5Y3F3Zw591.png

图 1:A2B 软件堆栈

图 1 显示了 A2B 软件堆栈的架构。此 A2B 软件堆栈由 ADI 公司提供,可用于构建特定于任何平台的应用程序,方法是重新实现平台抽象层 (PAL) 和移植特定于目标平台和最终应用程序使用的应用程序层。

基于 A2B 的应用程序开发涉及 3 个主要步骤:

构建特定于定制硬件的目标软件。

在 sigma studio 上设计 A2B 原理图。

应用程序代码开发。

1. 构建特定于定制硬件的目标软件:

图 2 显示了 A2B Stack 目录结构,它由核心 A2B 堆栈和应用程序文件组成。其中,需要对“a2bstack-pal”和“app”文件夹下的文件进行特定于平台的修改。

poYBAGKpR4mAdW4dAADf8DXilbs381.png

图 2:A2B 堆栈目录结构

在这里,每个目录都包含功能特定的软件实现。a2bstack包含用于在发现和配置阶段有效协调网络活动的计划代码。除此之外,它还执行封装在消息和作业中的工作单元。a2bplugin-master包含 A2b 堆栈主节点的源代码。A2B 网络发现算法和线路故障诊断功能作为主插件的一部分实现,而a2bslave-plugin包含一个简单的从插件示例,用作开发自定义插件的启动板。a2bstack -protobuf包含解析使用 ADI sigma studio 生成的 A2B 总线配置文件的源代码。此外,用于解析和解码 Google protobuf 编码的 A2B 配置文件的代码。

a2bstack-pal包含 I2c 通信、音频主机配置、计时器和日志记录功能的驱动程序实现。表 1 包含需要根据目标平台重新实现的 PAL 功能列表。其余功能根据应用程序需要提供扩展功能。

pYYBAGKpR5CAWA7hAACOuefa9ng959.png

表 1:PAL 函数列表

A2b 堆栈进程从a2b_palInit函数开始。此函数为平台创建堆栈 ecb(环境控制块),其中包含 BaseEcb 和 PalECB。PalEcb 包含设备驱动程序和外围配置结构的句柄。

pYYBAGKpR5iAIJQnAAB9dEmLwJo939.png

内存管理实现:a2b_palinit为平台特定的内存管理、定时器、I2c、音频和插件处理程序分配函数指针。此处解释了每个功能的基于 STM32 微控制器的实现。

内存管理实现:

A2B 堆栈提供内置的内存管理器,如果不需要特定于目标的内存管理,可以启用该管理器。我们为此功能启用了A2B_FEATURE_MEMORY_MANAGER 。

I2c 驱动程序实现:

STM32 的 I2c 总线已为 STM32 微控制器配置如下。

poYBAGKpR6GAIUnCAACUMkuQLmM752.png

a2b_pal_I2cOpenFunc 已实现为 I2c 设备调用HAL_I2C_Init并配置模拟和数字滤波器

pYYBAGKpR7SAcDMxAAB58UiKV4k331.png

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检查外设的状态并在数据接收成功完成后退出该功能。

pYYBAGKpR_qAJOR-AAE17JMBBMg070.png

使用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) 中的音频主机已添加到外围属性中,以配置从从属线路输入到主线路输出的音频传输。

poYBAGKpR_GAGNpKAAEIraED3NI353.png

图 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 设备通信以获取运动数据的代码示例。

poYBAGKpR-iALdX7AAC9GmQOyhg357.png

除此应用程序外,还需要有一个连续循环来监控 A2B 上发生的任何故障,并将滴答声提供给 a2b 堆栈。连续滴答使 A2B 堆栈保持激活状态。

pYYBAGKpR-CAG8VCAACJPvln70s688.png

硬件接口

EVAL AD2428 主节点使用 I2c 线连接到 STM32。Eval AD2428WD1BZ 板包含 P1 连接器,用于在 AD2428 收发器与目标平台之间进行通信。如下图所示,将 Eval 板与 STM32 I2c 总线之间的 I2c 和复位线连接起来。

poYBAGKpR9mAHSXfAAA2CNSegSw741.png

图 4:AD2428WD1DZ Sigma Studio 到 STM32 连接

对于这个项目,评估板、STM32 微控制器和 I2c 外围设备连接如下图所示。

pYYBAGKpR9GAbr58AAEOZzy_4mA800.png

图 5:A2B-STM32 连接

结论:

在本文中,我们讨论了如何使用汽车音频总线或 A2B 进行音频传输以及通过 STM32 控制器平台访问 I2c 设备。该项目是使用 Analog Devices, Inc 评估板创建的。提供的详细信息有助于围绕 A2B 和 STM32 微控制器技术创建实际产品(音频产品和其他产品)。A2B 和汽车音频总线是 ADI 公司的注册商标。ADI 的主要 A2B 网页提供指向部件信息、ADI 工具和设计信息的链接。

审核编辑:郭婷

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

    关注

    49

    文章

    8915

    浏览量

    166089
  • 控制器
    +关注

    关注

    114

    文章

    17931

    浏览量

    196015
  • 总线
    +关注

    关注

    10

    文章

    3071

    浏览量

    91997
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汽车音频总线(A²B)AD2420/AD2426/AD2427/AD2428/AD2429 系列收发器深度解析

    汽车音频总线(A²B)AD2420/AD2426/AD2427/AD2428/AD2429 系列收发器深度解析 汽车电子领域,
    的头像 发表于 05-31 16:15 31次阅读

    汽车音频总线A²B收发器技术解析

    汽车音频总线A²B收发器AD2420(W)/AD2426(W)/AD2427(W)/AD2428(W)/AD2429(W)技术解析 汽车
    的头像 发表于 05-28 17:50 720次阅读

    汽车音频总线(A²B)收发器AD2420(W)/AD2426(W)/AD2427(W)/AD2428(W)/AD2429(W)深度解析

    传输解决方案至关重要。今天,我们就来深入探讨Analog Devices推出的AD2420(W)/AD2426(W)/AD2427(W)/AD2428(W)/AD2429(W)系列汽车音频总线
    的头像 发表于 05-27 16:20 178次阅读

    KOSTAL:智能能源解决方案的引领者

    KOSTAL:智能能源解决方案的引领者KOSTAL(科世达)成立于1921年,总部位于德国,是一家全球领先的汽车电子及机电一体化解决方案供应商,公司业务涵盖汽车电子、太阳能逆变器及智能
    发表于 05-22 08:54

    Adafruit Audio FX Mini Sound Board - 便捷音频解决方案

    Adafruit Audio FX Mini Sound Board - 便捷音频解决方案 引言 电子项目中,添加音频或音效是一个常见的需求。但对于那些不想使用Arduino和扩展板
    的头像 发表于 05-11 09:25 373次阅读

    ADI宣布A²B 2.0汽车音频总线现已全面投入量产

    近日,ADI宣布A²B 2.0(汽车音频总线)现已全面投入量产。作为ADI A²B技术的全新升级,A²B 2.0延续A²B多年以来的低延迟和简洁架构优势的同时,带来了更高的带宽和以太
    的头像 发表于 05-07 10:52 3221次阅读

    SGM56101Q:汽车应用的高性能音频DAC解决方案

    SGM56101Q:汽车应用的高性能音频DAC解决方案 汽车音频系统不断追求高品质、高分辨率
    的头像 发表于 03-13 11:25 280次阅读

    MWC 2026 | 广和通发布基于Linux OS的高通QMB415平台5G MiFi解决方案

    3月5日,广和通正式发布基于高通QMB415平台的模组FG205及5G MiFi解决方案。QMB415平台已适配Linux操作系统,凭借深度定制化的硬件架构与精减的存储需求,为无线宽带应用提供了更优的
    的头像 发表于 03-06 23:04 976次阅读
    MWC 2026 | 广和通发布基于Linux OS的高通QMB415<b class='flag-5'>平台</b>5G MiFi<b class='flag-5'>解决方案</b>

    如何在Arm Neoverse N2平台上提升llama.cpp扩展性能

    跨 NUMA 内存访问可能会限制 llama.cpp Arm Neoverse 平台上的扩展能力。本文将为你详细分析这一问题,并通过引入原型验证补丁来加以解决。测试结果表明,基于 Neoverse N2
    的头像 发表于 02-11 10:06 409次阅读

    剖析PCM186x - Q1:汽车音频ADC的高性能解决方案

    剖析PCM186x - Q1:汽车音频ADC的高性能解决方案 作为一名电子工程师,设计音频系统时,一款高性能且可靠的
    的头像 发表于 01-29 15:15 478次阅读

    MX93AUD-HAT音频评估板:入门级音频解决方案

    MX93AUD-HAT音频评估板:入门级音频解决方案 音频评估和开发领域,NXP的MX93AUD-HAT板是一款值得关注的入门级
    的头像 发表于 12-24 17:10 941次阅读

    Auracast广播音频解决方案通过Nordic Semiconductor无线连接技术 公共场所提供辅助听力支持

    Semiconductor双核nRF5340多协议SoC驱动的完整解决方案,让场馆和终端用户通过 Auracast 广播音频技术公共场所实现辅助听力支持。   AuriTM
    的头像 发表于 11-05 17:59 4149次阅读

    2025全球CAN总线网关转换模组选型推荐与解决方案解析

    。CAN总线转换模组作为CAN总线与其他通信协议(如以太网、串口、USB等)的桥梁,被广泛应用于工业自动化、智能交通、能源监测等场景。 2025年,全球CAN总线转换模组市场需求持续增长,主流厂商不断推出创新
    的头像 发表于 09-12 09:23 1034次阅读

    rt-thread4.0.2版本stm32f407硬件平台上,使用reboot命令无法重启,会让系统死机的原因?

    rt-thread4.0.2版本stm32f407硬件平台上,使用reboot命令无法重启,会让系统死机。 reboot命令默认是调用rt_hw_cpu_reset()
    发表于 09-12 06:08

    CAN总线电容过大?三种解决方案来了

    新能源汽车路试中,CAN总线传输异常是一个常见问题。本期我们将探讨由于总线电容过大导致的下降沿过缓问题,并介绍三种有效的解决方案。CAN
    的头像 发表于 07-22 11:36 946次阅读
    CAN<b class='flag-5'>总线</b>电容过大?三种<b class='flag-5'>解决方案</b>来了