文档版本说明:

  • 文档版本说明

SDK名词介绍:

  • 1. SDK相关重要名词介绍

各项性能指标:

  • 1. 低功耗相关性能指标
  • 2. 音频相关性能指标
  • 3. RF相关性能指标

IDE 软硬件开发环境介绍:

  • 1. AW30N 环境介绍
  • 2. AW30N 下载目录 & 烧写说明
  • 3. AW30N 下载介绍说明

系统:

  • 1. 中断系统
  • 2. 系统FLASH硬件写保护功能

BLE:

  • 1. 无线模块介绍-BLE
  • 2. 蓝牙硬件相关配置
  • 3. 完整GATT服务(GATT_complete)介绍
  • 4. 简易GATT服务(GATT_simple)介绍
  • 5. 周期广播(periodic_advertise)介绍
  • 6. vble_complete无线收发接口介绍
  • 7. vble_simple无线收发接口介绍
  • 8. vble_adv无线收发接口介绍
  • 9. 2.4G功能介绍
  • 10. DUT

BLE APP应用:

  • 1. BLE对讲机APP说明
  • 2. 遥控器应用介绍
  • 3. BLE连接手机说明

设备、文件:

  • 1. 设备管理
  • 2. 文件系统管理
  • 3. sydfs文件系统
  • 4. norfs文件系统
  • 5. fat文件系统
  • 6. JL_MIO功能

传统玩具APP应用:

  • 1. AW30N 传统玩具应用模式介绍

音频:

  • 1. AUDIO 公共
  • 2. AUDIO DAC
  • 3. AUDIO ADC
  • 4. AUDIO LINK
    • 4.1. AUDIO LINK 基本信息
    • 4.2. AUDIO LINK 基本配置
    • 4.3. AUDIO LINK 相关变量说明
    • 4.4. AUDIO LINK 相关结构体说明
    • 4.5. AUDIO LINK 函数说明
      • 4.5.1. 函数 u32 audio_link_init_api(void)
      • 4.5.2. 函数 u32 audio_link_uninit_api(void)
      • 4.5.3. 函数 u32 audio_link_init_channel_api(ALINK_CH_CFG *alink_data_parm)
      • 4.5.4. 函数 u32 audio_link_uninit_channel_api(ALINK_CH_CFG *alink_data_parm)
      • 4.5.5. 函数 u16 audio_link_set_sr_api(u32 rate)
      • 4.5.6. 函数 u16 read_audio_link_sr()
    • 4.6. AUDIO LINK 应用
      • 4.6.1. 简单使用ALINK
      • 4.6.2. 主/从机配置
    • 4.7. AUDIO LINK 注意事项
      • 4.7.1. 默认配置的IO口 会与 UI配置 冲突
      • 4.7.2. ALNK 在IIS模式下 每条通道只支持双声道立体声
      • 4.7.3. ALINK 同步操作
      • 4.7.4. ALINK目前在应用上发送端使用了 DATA0 通道, 接收端使用了 DATA1 通道
      • 4.7.5. ALINK 使用时出现卡音,声音乱掉等问题处理
      • 4.7.6. alink中断启动频率
      • 4.7.7. demo说明
  • 5. 软硬件淡入淡出

音频编解码和音频传输:

  • 1. 编码接口
  • 2. 各编码格式配置说明
  • 3. 解码接口
  • 4. 各解码格式配置说明
  • 5. 音频传输管理模块说明
  • 6. midi

音效算法:

  • 1. 软件EQ(PCM_EQ)
  • 2. 混响音效(echo)
  • 3. 移频啸叫抑制(pitchshifter_howling)
  • 4. 自适应陷波啸叫抑制(notch_howling)
  • 5. 变音音效(vo_pitch)
  • 6. 实时变速变调(SPEED,用于扩音)
  • 7. 歌曲变速变调(SONG_SPEED,用于解码)
  • 8. 混合变音音效(voicechanger)
  • 9. 音频降噪算法

系统记忆:

  • 1. 系统记忆存储
  • 2. VM 掉电存储详细说明

升级:

  • 1. AW30N 升级简要说明
  • 2. AW30N 设备升级
  • 3. AW30N 测试盒升级
  • 4. AW30N 手机ota升级slave
  • 5. AW30N 手机usb升级主机

驱动:

  • 1. 外设驱动
  • 2. 电源管理
  • 3. wdt

其他:

  • 1. 消息与事件
  • 2. 按键系统Key
  • 3. 低功耗与唤醒
  • 4. lvd低电管理
  • 5. 虚拟RTC(软件RTC)
  • 6. Reserved_Area区域说明
  • 7. AW30N蓝牙配置工具
  • 8. 异常
AW30N SDK
  • 4. AUDIO LINK
  • 查看页面源码

4. AUDIO LINK

本章节按照以下 7 个部分介绍ALINK:

  1. “AUDIO LINK 基本信息”

  2. “AUDIO LINK 基本配置”

  3. “AUDIO LINK 相关变量说明”

  4. “AUDIO LINK 相关结构体说明”

  5. “AUDIO LINK 函数说明”

  6. “AUDIO LINK 应用”

  7. “AUDIO LINK 注意事项”

4.1. AUDIO LINK 基本信息

AW30N 拥有Audio_link接口(简称ALNK),该功能在v1.2.0版本后支持;

ALNK是一个通用的双声道的音频接口,用于连接片外的DAC或ADC;

连接信号有MCLK , SCLK , LRCK , DATA,支持16 /24 bit数据位宽,具有4条独立data通道。

有IIS / 左对齐 / 右对齐 / DSP0 / DSP1 共5种模式,目前1.2.0版本仅支持IIS模式。

其中IIS / 左对齐 / 右对齐定义为基本模式,DSP0 / DSP1 定义为扩展模式,4条data通道只能同时工作与基本模式或者扩展模式。

基本模式下 每条通道只支持双声道立体声,扩展模式下 每条通道均可支持单声道或者立体声。(目前v1.2.0版本仅支持IIS模式)

4.2. AUDIO LINK 基本配置

  1. <<app_config.h>>中的配置

    app_config

    app_config

4.3. AUDIO LINK 相关变量说明

u8 alink_chnl [ALINK_MAX_CHANNEL]; //标记4个通道哪个正在使用
u16 alink_sync_timer_id; //记录20ms定时同步的timer_id
ALINK_SYNC_CFG alink_sync_mge; //记录alink 同步相关信息

4.4. AUDIO LINK 相关结构体说明

  1. ALINK模块配置结构体:

    ALINK_PARM:
    
ALINK_PARM

ALINK_PARM

  1. ALINK_DATA通道配置结构体:

    ALINK_CH_CFG:
    
"ALINK_CH_CFG"

ALINK_CH_CFG

  1. ALINK_DATA通道同步结构体:

    ALINK_SYNC_CFG:
    
"ALINK_SYNC_CFG"

ALINK_SYNC_CFG


4.5. AUDIO LINK 函数说明

4.5.1. 函数 u32 audio_link_init_api(void)

该函数实现audio_link管理的结构体初始化,开机初始化调用一次即可。
该函数主要调用:
alink_init()函数:初始alink的中断,相关时钟等配置;
sys_timer_add()函数:开启20ms一次的同步定时任务。
返回值:
成功:0;
失败:-1;

4.5.2. 函数 u32 audio_link_uninit_api(void)

该函数实现关闭整个alink模块,同时取消20ms的同步定时任务。


4.5.3. 函数 u32 audio_link_init_channel_api(ALINK_CH_CFG *alink_data_parm)

该函数为注册data通道的相关配置。
该函数主要调用:
alink_channel_init()函数:注册data通道的相关配置;
audio_link_sync_init()函数:初始化alink_data通道的同步配置。
返回值:
成功:对应的通道号(0 ~ 3);
失败:-1;

4.5.4. 函数 u32 audio_link_uninit_channel_api(ALINK_CH_CFG *alink_data_parm)

该函数为注销 ALINK 对应的 data 通道。


4.5.5. 函数 u16 audio_link_set_sr_api(u32 rate)

该函数为设置alink采样率。
该函数主要调用:

alink_sr():底层配置alink采样率;

返回值:
成功:对应的采样率;
失败:0;

4.5.6. 函数 u16 read_audio_link_sr()

该函数为获取当前alink的采样率。
返回值:alink采样率

备注

1. alink在寄存器里没有专门配置采样率的寄存器,只能通过配置的时钟来推导出目前alink工作的采样率。
2. alink采样率不是标准值,是由时钟分配分出来,所以会有偏差。
即:
48000:实际为48077
44100:实际为44117
32000:实际为32051
24000:实际为24038
22050:实际为22059
16000:实际为16026
12000:实际为12019
11025:实际为11029
8000 :实际为8013

4.6. AUDIO LINK 应用

由于AUDIO_LINK的DATA通道可以作发送端或者接收端;
在应用上 公版SDK 把ALINK融入到ADC / DAC的结构当中。
即:
在 audio_adc.h 里,可以选择 AUDIO_ADC_TYPE 是 ADC 还是 ALNK
在 Vaudio_dac.h 里,可以选择 AUOUT_USE_DAC 是 APA 还是 RDAC 还是 ALINK
"audio_adc/dac_select"

audio_adc/dac_select


4.6.1. 简单使用ALINK

使用ALINK需要两套环境,一套为主机,一套为从机;
主机主要提供时钟,数据端可以 发送 / 接收。
下面介绍主从机如何配置
"master_slave"

master_slave


4.6.2. 主/从机配置

  1. <<app_config.h>>配置 主/从机 和 相关IO口

"master_app_config"

master_app_config

  1. 选择ALINK 的 DATA方向 是 发送端 还是 接收端

作为发送端:
1: 在audio_dac.h里选择ALINK模式
2: 可工作在任意模式,需注意工作在扩音模式下时,需要把所有音效关闭,只运行SRC
"master_audio_dac"

audio_dac.h

作为接收端:
1: 在audio_adc.h里选择ALINK模式
2: 运行在扩音模式下,audio_adc_init_api选择AUDIO_LINK模式,并把所有音效关闭,只运行SRC
"master_audio_adc"

audio_adc.h

"audio_adc_init_api"

audio_adc_init_api

  1. 选择作为 发送端 后,audio_dac以ALINK作为工作

    如:在音乐模式下,解码后的数据不是送往 RDAC 或者 APA 进行发声播放,而是通过app_config.h里配置的DATA IO口送往从机。

选择作为 接收端 后,audio_adc以ALINK作为工作

如:在扩音模式下,audio_dac拿到的数据不是从MIC采集回来的数据,而是ALINK DATA通道接收到的数据。

"ADC_ALINK_APA"

ADC_ALINK_APA

  1. 主从机环境配置好后,硬件连线正常即可。


4.7. AUDIO LINK 注意事项

4.7.1. 默认配置的IO口 会与 UI配置 冲突

用户需要根据自己的应用来配置合适的IO口。


4.7.2. ALNK 在IIS模式下 每条通道只支持双声道立体声

ALINK在IIS模式下 DATA通道 只支持 双声道立体声。
AW30的 ADC / APA / RDAC 均为 单声道。
所以在SDK里通道传输的时候就会作对应的 声道复制 / 声道融合。
如:ALINK工作在发送端时,会做声道复制,见下图:
"ALINK_ch_handle"

ALINK_ch_handle


4.7.3. ALINK 同步操作

ALINK工作的频率是由PLL 320M 或 192M 时钟分频出来,得到的采样率不是标准值。

即:
48000:实际为48077
44100:实际为44117
32000:实际为32051
24000:实际为24038
22050:实际为22059
16000:实际为16026
12000:实际为12019
11025:实际为11029
8000 :实际为8013

而adc , apa , rdac 工作则为标准的采样率,因此在alink搭配与他们使用工作一段时间后,会出现数据逐渐溢出或者缺失,需要搭配src同步来不断调整他们之间的采样率。

举例ALINK作为发送端时同步如何运行:
1. 每次发送时记录src前后级缓存的数据长度,得到他们前后级加起来的一个数据百分比
2. 在初始化ALINK的时候,会注册1个约20ms的定时任务,该任务会 取这20ms里的缓存数据百分比平均值 去做 同步算法(调整SRC)。
"alink_tx_sync"

alink_tx_sync


4.7.4. ALINK目前在应用上发送端使用了 DATA0 通道, 接收端使用了 DATA1 通道

用户需要使用其余通道,可以通过注册剩余DATA通道,在中断里处理自己的音频数据。
详情可以看audio_link_tx_demo.c 或者 audio_link_rx_demo.c里的demo。

4.7.5. ALINK 使用时出现卡音,声音乱掉等问题处理

  1. ALINK在搭配 RDAC / APA 使用时,发现声音出现乱掉 或者 疯狂打印“x”
    可能原因导致:

    1:主机进入了 powerdown / soft off / 关机 / 关闭ALINK模块, 导致主机无法提供时钟给从机,从机接收不到数据, 但是后续RDAC / APA 仍旧不断从缓存里拿数据,缓存数据不断减少,SRC同步错误调整导致。 2:检查DAC 与 ALINK工作的采样率是否匹配。

    解决方法:
    1. 重新上电即可。

    2. 避免主机进入 powerdown / soft off / 关机 / 关闭ALINK模块状态,保证从机在ALINK工作期间 时钟正常运行。

    3. 检查 RDAC / APA 与 ALINK工作的采样率是否匹配。

"alink_dac_error"

alink_dac_error

  1. ALINK在搭配 ADC 使用时,不断出现打印”3”
    可能原因导致:

    1:ALINK 搭配 ADC 工作时没有串SRC,SRC同步没有正常进行。 2:ADC与ALINK工作的采样率不匹配。

    解决方法:
    1. 检查是否串SRC(可以参考扩音模式下的音频流程)

    2. 检查alink 同步操作是否正常运行。

    3. 检查 ADC 与 ALINK 采样率配置是否一致

  2. ALINK目前无法搭配其他音效使用。

  3. ALINK目前不支持调整音量,只能在DAC端调整。


4.7.6. alink中断启动频率

alink中断启动频率由 ALNK_BUF_POINTS_NUM 宏控制,

中断每次启动间隔时间为 : ALNK_BUF_POINTS_NUM / ALNK_SR;

即:
默认ALNK_BUF_POINTS_NUM 为 64;
默认ALNK_SR 为 32000;
则启动间隔时间为 64 / 32000 = 0.002s

4.7.7. demo说明

用户可以在 audio_link_tx_demo.c 或者 audio_link_rx_demo.c 里看 audio_link 如何完成初始化到工作流程。

上一页 下一页

© 版权所有 2010-present, 杰理科技股份有限公司. Last updated on May 10th, 2024.

利用 Sphinx 构建,使用的 主题 由 Read the Docs 开发.