1. Home
  2. 博客

    nRF5340新增LEAudio应用教程

nRF5340新增LEAudio应用教程 2023-09-27 Carl Gu, Nordic Semiconductor

该文介绍了低功耗音频的技术原理。 多连接,双向,左右声道同步。

CIS&BIS

CIS Connected Isochronous Stream 多连接,双向,左右声道同步。将来的应用场景有TWS耳机,头戴式耳机等等。
BIS Broadcast Isochronous Stream 广播,单向,单声道。应用场景大多为公共场所收听,如机场广播,校园广播,导游广播等。

LE Audio DK

nRF5340 主控
nRF5340 第二个5340, 用于DEBUG, 烧录。
nPM1100 PMIC
CS47L63 Cirrus logic AD/DA, 立体声输入,单声道输出。
PDM MIC
USB-C gateway USB 音频输入接口/供电
LINE IN gateway 3.5mm 音频输入接口
SD卡
按键/LED
锂电池接口

双向音频

双向音频是基于CIS的应用,做测试时,只需要将如下两个宏打开即可。

  • CONFIG_STREAM_BIDIRECTIONAL
  • CONFIG_WALKIE_TALKIE_DEMO

打开对讲机功能之后,MIC作为声音的输入,HEADPHONE作为声音的输出,这两个接口均接到cirrus logic芯片上,然后通过I2S与nRF5340连接,传输音频。

双向音频 le-audio-intro-

双向音频 le-audio-intro-

FOTA

在编译时我们在脚本后增加参数-m internal/external 即可打开FOTA功能

python buildprog.py -c both -b debug -d both -m internal -M


烧录完成之后要进入FOTA模式需要长按BTN4 &RESET,接着松开RESET,BTN4保持按着。
过1~2s后空中将会看到广播名称带有DFU的设备,如下:

  • Gateway: NRF5340_AUDIO_GW_DFU
  • Left Headset: NRF5340_AUDIO_HL_DFU
  • Right Headset: NRF5340_AUDIO_HR_DFU

手机连接之后,即可进行OTA升级

dfu_application.zip       是带有多个image的压缩包
app_update.bin            是用于升级appcore的文件
net_core_app_update.bin   是用于升级netcore的文件

当我们选择使用external flash时,由于Audio DK上没有自带外部flash,
所以我们需要外接一个MX25R6435F

DK pin SPI NOR Flash pin Arduino pin
P0.08 SCK D13
P0.09 MOSI D11
P0.10 MISO D12
P1.10 CS D8

le-audio-FOTA

双BIS gateway

  • CONFIG_TRANSPORT_BIS=y
  • CONFIG_BT_AUDIO_USE_BROADCAST_NAME_ALT=y
  • CONFIG_BT_AUDIO_BROADCAST_NAME_ALT=”string name”

双BIS gateway le-audio-intro

音频数据流解析

音频数据流解析 le-audio-intro-1

音频数据流解析 le-audio-intro-2

重要API及其所在的文件位置
Audio_datapath.c audio_datapath_i2s_blk_complete()
Audio_system.c encoder_thread()
Streamctrl.c streamctrl_encoded_data_send()
Streamctrl.c le_audio_rx_data_handler()
Streamctrl.c audio_datapath_thread()
Audio_datapath.c audio_datapath_stream_out()
Audio_datapath.c audio_datapath_i2s_blk_complete()
Audio_usb.c data_received()
Audio_system.c audio_decode()

TIPS

  • nRF Connect SDK 2.4.0要使用自带的toolchain,否则可能出现一些奇怪的问题。
  • 如果出现无法找到某某文件的话,可能是目录地址太长。
  • 如果出现找不到network.hex时,可能是因为你在其它目录创建了LE Audio工程,因为脚本在寻找network.hex时是以nRF Connect SDK工程为相对位置的。
  • docs.nordicsemi.com

订阅Nordic新闻简报

了解最新信息!订阅后即可获取最新Nordic及物联网资讯

立即订阅