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

    文章

    7497

    浏览量

    151102
  • 控制器
    +关注

    关注

    112

    文章

    16227

    浏览量

    177507
  • 总线
    +关注

    关注

    10

    文章

    2870

    浏览量

    88000
收藏 人收藏

    评论

    相关推荐

    车载应用中的高品质,高性能音频CODEC解决方案

    车载应用中的高品质,高性能音频CODEC解决方案     新唐科技全方位布局智能车载应用市场,深入车载音频多样化应用场景,持续推出音频的新
    的头像 发表于 11-28 16:21 179次阅读
    车载应用中的高品质,高性能<b class='flag-5'>音频</b>CODEC<b class='flag-5'>解决方案</b>

    物联数据中是什么意思?AI+IOT物联网中平台解决方案

    物联数据中是什么意思?AI+IOT物联网中平台解决方案
    的头像 发表于 11-25 10:37 140次阅读
    物联数据中<b class='flag-5'>台</b>是什么意思?AI+IOT物联网中<b class='flag-5'>台</b><b class='flag-5'>平台</b><b class='flag-5'>解决方案</b>

    请问TLV320ADC6140NXP的iMX6UL平台上如何配置route?

    我正在尝试NXP的iMX6UL平台上Linux 4.1.15版本,使用TLV320ADC6140作为音频的codec输入。 此外,
    发表于 09-30 06:09

    STM32平台新选择:Nand Flash(贴片TF卡)的应用解析

    MK米客方德SD NAND的高性能和高可靠性,使其成为STM32平台上理想的存储解决方案。它的广泛应用不仅提升了嵌入式系统的性能,也为未来的技术创新和应用拓展提供了坚实的基础。
    的头像 发表于 09-18 11:04 656次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>平台</b>新选择:Nand Flash(贴片TF卡)的应用解析

    飞腾云音频解决方案

    飞腾云不仅生产音频模组和解码器评估板,还专注于开发高品质的HiFi音频解决方案
    的头像 发表于 08-30 18:15 817次阅读
    飞腾云<b class='flag-5'>音频</b><b class='flag-5'>解决方案</b>

    使用PCM6xx0-Q1系列产品的可扩展汽车音频解决方案

    电子发烧友网站提供《使用PCM6xx0-Q1系列产品的可扩展汽车音频解决方案.pdf》资料免费下载
    发表于 08-30 09:22 0次下载
    使用PCM6xx0-Q1系列产品的可扩展<b class='flag-5'>汽车</b><b class='flag-5'>音频</b><b class='flag-5'>解决方案</b>

    MK米客方德SD NAND:STM32平台上的存储方案

    STM32平台上,SD卡的重要性不言而喻,它为嵌入式系统提供了必要的数据存储和读写能力。MK米客方德SD作为市场上的一种选择,因其耐用性、较小的体积以及高速的传输性能,
    的头像 发表于 08-26 10:23 620次阅读
    MK米客方德SD NAND:<b class='flag-5'>STM32</b><b class='flag-5'>平台上</b>的存储<b class='flag-5'>方案</b>

    一文读懂音频解决方案专家

    我们的工厂专注于开发和生产高保真(HiFi)音频解决方案,特别是基于XMOS技术的产品。XMOS是一种高性能的多核处理器,专门用于实现低延迟、高精度的音频处理。
    的头像 发表于 06-21 19:13 426次阅读
    一文读懂<b class='flag-5'>音频</b><b class='flag-5'>解决方案</b>专家

    arduino平台上开发esp32c3,twai队列异常的原因?

    arduino平台上开发esp32c3。采用了freertos创建了几个任务。主要有主循环loop和CAN数据读写任务。主循环的优先级高于CAN读写任务。现在的问题是我CAN任务执行完毕检查
    发表于 06-11 06:16

    开放式高实时高性能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

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

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

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

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

    中兴车用操作系统SafetyLinuxA1000平台上的适配

    近日,黑芝麻智能A1000芯片基础软件开发在线研讨会在顺利完结直播。研讨会由黑芝麻智能李坤、中兴通讯李玉鹏两位技术专家主讲,主题分别为 《视觉感知数据流在A1000平台上的基础软件开发》 ,以及 《中兴车用操作系统SafetyLinuxA1000
    的头像 发表于 12-19 15:51 927次阅读
    中兴车用操作系统SafetyLinux<b class='flag-5'>在</b>A1000<b class='flag-5'>平台上</b>的适配