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 工具和设计信息的链接。

审核编辑:郭婷

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

    关注

    48

    文章

    6813

    浏览量

    147712
  • 控制器
    +关注

    关注

    112

    文章

    15245

    浏览量

    171425
  • 总线
    +关注

    关注

    10

    文章

    2716

    浏览量

    87251
收藏 人收藏

    评论

    相关推荐

    开放式高实时高性能PLC控制器解决方案-基于米尔电子STM32MP135

    STM32MP135的开发。▲STM32CubeMPU MW overview▲Middleware Components 翌控科技LogicLab解决方案基于STM32MP135
    发表于 03-07 20:06

    能在Meteor Lake平台上使用SDK 3.5吗?

    因为客户有一些特殊要求 ,所以 PD FW 必须实现一些定制功能。 因此,我们希望流星湖中使用 CCG6 - CYPD6127,它的闪存大小比 CYPD6227 大。 因为最新版本的 Host
    发表于 03-04 06:32

    虹科提供了一种高效、可靠的汽车CAN/LIN总线数据采集解决方案

    现代汽车配备了复杂的电子系统,CAN和LIN总线已成为这些系统之间实现通信的标准协议,为了开发和优化汽车的电子功能,汽车制造商和工程师需要可
    的头像 发表于 02-27 10:09 969次阅读
    虹科提供了一种高效、可靠的<b class='flag-5'>汽车</b>CAN/LIN<b class='flag-5'>总线</b>数据采集<b class='flag-5'>解决方案</b>

    把CY8C4146平台上工程移植到CY8C4147平台上,用户程序没运行的原因?

    客户现在想把CY8C4146平台上工程移植到CY8C4147平台上topdesign重新选择4147,管脚也调整了一下,编译重新生成底层代码,creator4.2IDE编译没报错,同时同步更新
    发表于 02-21 06:04

    释放总线潜力:汽车总线离线模拟解决方案

    传统的ECU模拟工具通常需要依赖上位机软件来发起通信,这在离线场景和自动化产线中带来不便。为了应对这一挑战,虹科推出了创新的汽车总线离线模拟解决方案,基于PCAN-Router系列网关,通过内部可编程固件,
    的头像 发表于 02-20 14:38 180次阅读
    释放<b class='flag-5'>总线</b>潜力:<b class='flag-5'>汽车</b><b class='flag-5'>总线</b>离线模拟<b class='flag-5'>解决方案</b>

    虹科方案|释放总线潜力:汽车总线离线模拟解决方案

    导读: 传统的ECU模拟工具通常需要依赖上位机软件来发起通信,这在离线场景和自动化产线中带来不便。为了应对这一挑战,虹科推出了创新的汽车总线离线模拟解决方案,基于PCAN-Router系列网关,通过
    的头像 发表于 01-30 11:10 208次阅读
    虹科<b class='flag-5'>方案</b>|释放<b class='flag-5'>总线</b>潜力:<b class='flag-5'>汽车</b><b class='flag-5'>总线</b>离线模拟<b class='flag-5'>解决方案</b>

    酷派手机拥抱鸿蒙,成功展讯T606平台上接入OpenHarmony

    最新消息,酷派技术团队宣布已成功实现将 OpenHarmony 系统接入到展讯平台上,相信这是一个重要的里程碑,标志着推动 OpenHarmony 的发展环节取得了重要进展。
    发表于 11-21 13:51

    应用案例 | 基于STM32WL的森林火灾探测解决方案,可实现户外运行15年

    应用案例 | 基于STM32WL的森林火灾探测解决方案,可实现户外运行15年
    的头像 发表于 09-28 17:40 556次阅读
    应用案例 | 基于<b class='flag-5'>STM32</b>WL的森林火灾探测<b class='flag-5'>解决方案</b>,可<b class='flag-5'>实现</b>户外运行15年

    基于stm32的电动汽车交流充电桩设计与实现

    要推动电动汽车的产业化,与之配套的电动汽车充电设施必不可少。本课题提出了一种基于STM32处理器STM32F103ZET6的电动汽车交流充电
    发表于 09-21 07:58

    电机控制应用中的人工智能解决方案

    STM32简单轻松地实现机器学习• 直接在STM32内部运行的智能解决方案• 无需云连接•
    发表于 09-08 06:18

    汽车总线协议转换解决方案

    汽车总线汽车总线是一种用于在车辆电子系统中传输数据和控制信息的通信系统。它允许不同的电子控制单元(ECU)在车辆中相互通信,协调各个系统的操作,以
    的头像 发表于 08-10 14:27 929次阅读
    <b class='flag-5'>汽车</b><b class='flag-5'>总线</b>协议转换<b class='flag-5'>解决方案</b>

    汽车总线协议转换解决方案(一)

    为了减少汽车总线协议转换的时间和人力成本,降低工程复杂度,提高工作效率,虹科推出以性能先进的网关设备为基础的解决方案
    的头像 发表于 08-01 00:13 797次阅读
    <b class='flag-5'>汽车</b><b class='flag-5'>总线</b>协议转换<b class='flag-5'>解决方案</b>(一)

    音频系统解决方案

    音频系统解决方案
    发表于 07-06 19:45 0次下载
    <b class='flag-5'>音频</b>系统<b class='flag-5'>解决方案</b>

    高通无线蓝牙空间音频解决方案

    高通无线蓝牙空间音频解决方案第二代高通 S5和S3音频平台,功能亮点之一为对空间音频的支持。配合第二代骁龙8移动
    发表于 07-04 18:15 3次下载

    如何在Layerscape平台上启用5G模块?

    想在 Layerscape 平台上使用 5G 模组?随附的应用说明将帮助您做到这一点。 该 AN 将帮助您: 1.Layerscape平台上设置5G环境 2. 将 5G 模块连接
    发表于 05-17 06:24