STM32 音频应用

Similar documents
Audio/Smartphone accessories Training - Plan Proposal

USB解决方案.ppt

P4i45GL_GV-R50-CN.p65

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

audiogram3 Owners Manual

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

EK-STM32F

Ch03_嵌入式作業系統建置_01

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

1 MTK 2 MTK 3 MTK

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

untitled

+01-10_M5A_C1955.p65

untitled

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

r_09hr_practical_guide_kor.pdf

ICD ICD ICD ICD ICD

FM1935X智能非接触读写器芯片

P4V88+_BIOS_CN.p65

PROFIBUS3.doc

目 录

2008 IT 亞東證券投資顧問蕭雅慧於 2007/11/19 上午 09:38:03 下載. 拓墣產研版權所有, 未 2007/11/15

STM32™ 推动创新,见证未来

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

Microsoft Word zw

专业主干课程与主要专业课程教学大纲(2009年、2011年).doc

CH01.indd

FM1935X智能非接触读写器芯片

P4VM800_BIOS_CN.p65

STM32 STM3232ARM Cortex-M3 Cortex-M3 STM32Thumb-2 STM32MCU Cortex-M3ARM MCU STM32ARM 32 ARMCortex-M3 32 STM32 Cortex-M3 ARM Cortex-M3 ARM ARM

PROTEUS VSM

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

Bose : / 212 F (100 C) AA (IEC LR06) 統 Bose Corporation 32 F ~ 104 F (0 C ~ 40 C)

軟體的安裝

Microsoft Word - MTK平台生产软件使用说明.doc

Microsoft PowerPoint - Aqua-Sim.pptx

Bus Hound 5

CLP-585/575/545/535/565GP

Xear 3D USB CH-IN-2 SPKs 2 6 :

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub

作 業 系 統 簡 介 光 有 電 腦 硬 體, 會 不 容 易 使 用 必 須 要 有 適 當 的 程 式, 才 方 便 操 作 硬 體 衍 生 作 業 系 統 需 求 : 提 供 方 便 使 用 者 執 行 程 式 平 台 有 效 使 用 各 種 電 腦 硬 體 資 源 Jingo C. Lia

1 CPU

经华名家讲堂

RS-232C [11-13] 1 1 (PLC) (HMI) Visual Basic (PLC) 402

P4Dual-915GL_BIOS_CN.p65

SA054 Chinese user manual

Cube20S small, speedy, safe Eextremely modular Up to 64 modules per bus node Quick reaction time: up to 20 µs Cube20S A new Member of the Cube Family

<4D F736F F D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

Avigilon Control Center 6 ACC High Definition Stream Management (HDSM) ACC 6 ( Avigilon Appearance Search ) Avigilon Appearance Search ACC NVR HD Vide

MCU DSP MSO MCU DSP MSO MSO MSO MCU/DSP I/O MSO 16 Microchip IC18 turn-on MSO chirp MCU I/O I 2 C

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

图 片 展 示 : 资 源 简 介 : FPGA Altera CycloneII EP2C5T144C8 (4608 个 LE) 2 路 有 源 晶 振 (50M,25M) AS & JTAG 标 准 接 口 VGA 接 口 UART 接 口 蜂 鸣 器 8bit 并 行 DAC 8 路 按 键

正崴受讓公開說明書final.doc

!!

<4D F736F F D20312D3120B9ABBFAAD7AAC8C3CBB5C3F7CAE9A3A8C9EAB1A8B8E5A3A92E646F63>

Support All Industrial Ethernet Standards on Your Next "Drive" Design White Paper

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

KDC-U5049 KDC-U4049 Made for ipod, and Made for iphone mean that an electronic accessory has been designed to connect specifically to ipod, or iphone,

新建 Microsoft Word 文档.doc

2 1 安 全 資 訊 有 觸 電 的 危 險 請 勿 開 啟 : 為 了 減 低 觸 電 風 險, 切 勿 把 蓋 ( 或 背 板 ) 移 去 機 內 並 無 使 用 者 可 自 行 修 理 的 部 份 等 邊 三 角 形 內 含 有 一 個 箭 頭 的 閃 電 符 號 主 要 用 於 警 告 使

LK110_ck

使用手冊

mvc

03243AA_CH05.indd

HDV 820

Microsoft Word - 正文.doc

您 對 本 產 品 的 選 擇 充 分 顯 示 了 您 對 音 響 設 備 的 精 通, 我 們 十 分 感 謝 您 的 惠 顧, 並 為 本 公 司 提 供 優 質 產 品 一 貫 傳 統 而 感 到 無 比 的 自 豪 為 使 您 的 裝 置 與 使 用 能 得 到 最 好 的 發 揮, 我 們

一个开放源码的嵌入式仿真环境 ― SkyEye

ARM JTAG实时仿真器安装使用指南

/ 212ºF (100ºC) 2 UL CR2032 DL Wave SoundTouch SoundTouch SoundTouch Bose / 3 Bose Corporation 1999/5/EC 32ºF (0 C) 113

untitled

Microsoft Word - LD5515_5V1.5A-DB-01 Demo Board Manual

AMP NETCONNECT

Microsoft PowerPoint - ATF2015.ppt [相容模式]

Xilinx Alliance Program Certified GJVZsIPb3 IPb3pg(lwE & by2eh;[d)y IP ROM

透 過 選 擇 Google Street View 場 景 模 式 來 呈 現 實 際 道 路 上 的 狀 況 模 擬 並 且 經 由 預 先 紀 錄 好 的 各 國 都 市 座 標, 讓 使 用 者 可 以 選 擇 各 國 道 路 來 做 行 車 上 的 模 擬 使 本 系 統 不 僅 可 以

KT-SOPCx开发套件简明教程

untitled

Chapter #

Chroma 61500/ bit / RMS RMS VA ()61500 DSP THD /61508/61507/61609/61608/ (61500 ) Chroma STEP PULSE : LISTLIST 100 AC DC

Microsoft PowerPoint - STU_EC_Ch08.ppt

大学计算机基础B.doc

工程师培训

如 果 此 設 備 對 無 線 電 或 電 視 接 收 造 成 有 害 干 擾 ( 此 干 擾 可 由 開 關 設 備 來 做 確 認 ), 用 戶 可 嘗 試 用 以 下 一 種 或 多 種 方 法 來 消 除 這 個 干 擾 : 重 新 調 整 與 確 定 接 收 天 線 方 向 增 大 此 設

Transcription:

STM32 音频应用

STM32 已经成为主流平台 2 消费电子 医疗设备 楼宇安防 网络互联 工业控制 重点应用 更多跨界应用 Sensor Hub 血糖仪 可视对讲 无线网络 POS 触摸感应 血氧计 云台控制 高级航模 打印机, 游戏手柄家庭音响玩具 便携式 ECG 人工耳蜗 数据采集 处理 通风 暖气调节 汽车音响空中鼠标 LED 控制表计, 测量变频, 逆变控制

STM32 USB 音频应用 USB 音箱 音频编码 (WAV,MP3) 音频解码 (WAV,MP3,WMA,AAC) ipod Docking Android Docking 软件升级 (U_disk) STM32 其它音频应用 DSP 一些其它免费的编码和解码 Sound bar Smart Phone 音频开发板 ST 现有的音频应用 3

目标和任务 4 目标 : 主题 : USB OTG 库 (HCC 和 ST) 音频固件 --(Audio streaming, Audio Engine, Codecs, Addons, PDM) Apple 附件 --iap1 and iap2 --ihost and idevice Android 附件 --MTP,ADK,AOA Smartphone Accessory Board

目标和任务 5 目标 : 主题 : USB OTG 库 (HCC 和 ST) 音频固件 --(Audio streaming, Audio Engine, Codecs, Addons, PDM) Apple 附件 --iap1 and iap2 --ihost and idevice Android 附件 --MTP,ADK,AOA Smartphone Accessory Board

USB 概述 ( 回顾 ) 6 USB 拓扑图 只有一个主机 最多 7 层 最多 5 层是 HUB 最多 127 端点

例子 -----USB 拓扑图 7 高速 Hub 高速 480Mbps USB 2.0 主机 全速 / 低速 12M/1.5Mbps 全速 / 低速设备 高速设备 低速 Hub 全速 / 低速设备

USB 逻辑图 8 主机 buffer 应用 buffer (pipe) 设备 接口 ( 一个或者多个 ): 端点 >> 端点数 传输类型 >> 传输方向 最长包

USB Transfer 9 Host Power Data Device - 仅仅一个主机. - 初始化所有的通讯 - 能够跟一个或者多个设备在同一个总线上通讯. - 数据是基于帧进行发送和接收 (1ms/frame 或者 0.125ms/frame). - 每一帧包含多个数据包 - 数据的接收和发送都是由主机发起要求 四种传输类型 : 控制传输 : 强制要求对所有设备 批量传输 : 非周期性, 大量的数据, 保障数据的正确性 中断传输 : 非周期性, 小数据量. 实时性 同步传输 : 周期性, 实时性 数据架构基于下面三个对象 : Configuration Interface Endpoint Configuration 0 Device Configuration N Interface 0 Interface N Interface 0 Interface N Endpoint 0 Endpoint 0 Endpoint 0 Endpoint 0 Endpoint 1 Endpoint 1 Endpoint 1 Endpoint 1 Endpoint N Endpoint N Endpoint N Endpoint N

ST USB OTG library 10 ST Support USB 2.0 全速 (12M) 高速 (up to 480M) HCC Library(not Free) iap1 MP3,WMA decoder Firmware update ST Library(Free) USB Device,USB Host and OTG Apple Accessories Android Accessories MP3(encoder and decoder),wma,aac(.adts adif.loas) Audio Streaming Firmware update

USB Libraries 11 USB Device Library STM32F10xx (except F105/7) STM32L151/2 STM32F05xx STM32F3xx X Not Compatible! USB OTG Device Library STM32F2xx STM32F4xx STM32F105/7 STM32L4xx USB OTG Host Library STM32F2xx STM32F4xx STM32F105/7 SMT32L4xx

STM32 USB 类 12 USB 设备类 HID (Human Interface Device) 鼠标, 键盘, 低速率的数据传输或控制 Mass Storage Virtual ComPort USB 转 UART Audio Streaming Class 1.0, 16-bit, Stereo, In/Out (Headset/Microphone) Device Firmware Upgrade Specific examples: Dual Core(Full and High speed device) Isochronous raw USB Host Classes HID (Human Interface Device) 鼠标, 键盘, 低速率的数据传输或控制 Mass Storage CDC (Communication Device Class) Generic class for Serial/Ethernet/Composite Audio Streaming: Class 1.0, 16-bit, Stereo, In (Headset) Specific examples: Dual Core Composite Mass Storage + CDC OTG: Dual Role Device

OTG_FS & OTG_HS library 13 STM32_USB-Host-Device_Lib_V2.1.0 Host mode Mass Storage:FATFS, Read /Write HID: Only support mouse and keyboard Firmware update HID Device mode HID VCD Audio MSC HID OTG mode Mass Storage HID mouse (OTG_FS) + Mass Storage(OTG_HS)

目标和任务 14 目标 : 主题 : USB OTG 库 (HCC 和 ST) 音频固件 --(Audio streaming, Audio Engine, Codecs, Addons, PDM) Apple 附件 --iap1 and iap2 --ihost and idevice Android 附件 --MTP,ADK,AOA Smartphone Accessory Board

USB for Audio 15 虽然 USB 是一个高度标准化的接口, 但是它也是具有多功能和高度客户化的接口. USB 允许通过不同的方式传输各种类型的数据 它有多种 USB 类去允许传输数字音频数据, 这些类都有它们各自的优缺点 : USB Audio Class 1.0 & 2.0 USB Mass Storage USB MTP USB CDC

USB Audio Class 1.0 & 2.0 (1/2) 16 同步传输 : 实时性得到保障, 但是并不保障数据的完整性 占有高带宽 ( 最高可以达到 90% 的带宽 ) 允许扩展音频的一些控制 (source, sink, volume, clocks, effects: reverberation, modulation delay, encoding, decoding ) 有效的同步机制 : Synchronous: 设备从主机的 SOF 上面获取它的它的音频时钟 (Start Of Frame). ( 高可靠性 ) ( 低成本 ). Asynchronous: 设备的时钟是自己控制. 设备需要自己实现自我同步. ( 可靠性低 ( 低成本, 软件简单 ). Adaptive: 设备获取和改变它的时钟根据自己收到的数据 ( 非常高的可靠性 )( 软件简单, 硬件复杂 ).

USB Audio Class 1.0 vs. 2.0 (2/2) 17 不完全兼容! USB Audio Class 2.0 是基于 USB Audio Class 1.0 增加和适当的修改了一些功能 支持高速模式 ( 但是对于音频是真的需要吗?) 使用了时钟单元 可能是为了去同步 设备可以通过中断端点去通知主机设备端的一些改变 (volume control, clock path update ) 支持 Category, 允许主机去自动检测或判断设备具有的主要功能 (ie. Desktop Speaker, Telephone, Headset ). 等等!

USB Mass Storage (MSC) 18 大批量数据传输 : 数据得到保障, 但是不保障实时性. 没有办法同步. 尽管它被广泛应用于汽车音响 消费类电子, 但是 USB 没有任何专门协议对于音频 ( 它仅仅只是通过 USB 读取文件数据 ) 非常容易得到各种元数据 (file name, artist, album, genre ) 没有专门的控制协议 (ie. volume level, play/pause/stop ) 主机必须增加文件管理系统 需要额外的软件去编码或者解码这些压缩文件

USB Media Transfer Protocol (MTP) 19 大批量数据传输 : 保障数据的完整性, 但是不保障数据的实时性. 没有方法去同步. 它是基于 PTP (Picture Transfer Protocol). 命令 - 数据 - 响应的通讯模式. 基于抽象的音频内容和大小的数据传输. 元数据和音频控制也是可以能的. 内容数字版权加密保护技术 (DRM) 广泛应用于便携式或者掌上音频设备.

Communication Device Class (CDC) 20 任一传输类型 : CDC 是收集了任何传输接口的传输类. 一个 CDC 设备可以用作音频类 MTP. 没有专门应用于音频的协议 应用于电话和网络协议 它是多接口的应用典范 CDC Device Communications Interface Data Interface Audio Interface HID Interface 并不没有广泛的应用

实例 (1/2) 21 iphone Docking (iphone/ipod/ipad) 对所有设备来说它的结构是固定的 HID 接口作为控制 (ie. Volume, next/previous, Play/Pause 音频 2.0 或者 1.0 作为音频数据传输 通过 SOF 同步, 不支持 PIPE 反馈 Mass Storage Device Audio Class 1.0 & 2.0 HID 客户协议 (APP 应用协议 ) 另外 : 我们还可以增加 MSC, 在同一工程

实例 (2/2) 22 Android Docking 主机模式 (Android 作为 USB 主机 ) (> Android 3.1, API level 12) MTP Isochronous (JellyBean level 16). 设备模式 (Android 作为 USB 设备 ) Mass Storage: Android 设备的角色作为一个 SD 读卡器, 不需要任何的控制. MTP: Android 设备通过 MTP 接口呈现它内部的存储空间. MTP and Mass Storage are generally exclusive. Andriod Open Accessory Mode(AOA): 它是 Google 提供一种特别的通讯方式 ( 类似 IAP) 需要开发附件和设备端进入 AOA 模式 (Handshake) 2 个大数据传输端点去提供附件和 Android 设备之间的传输和控制 需要把标准的音频传输重新打包音频的传输. 需要 JellyBean(level 16) 以上的版本, 才能同步和重新打包音频

USB Device Audio( 音频数据流 ) 23

应用架构 24 USB Device I2S ADC Codec (DAC) LCD Buttons

DMA STM32 应用方案 25 USB Device I2C Clock Synthesizer I2S Codec (DAC) LCD FSMC / SPI TIM IO Expander Buttons IOs ADC / SPI STM32

应用层次 26 Application USB Audio Class Driver USB Device Core Utilities USB OTG Driver Std Peripheral Drivers CMSIS Hardware USB components Standard components Application components

USB peripheral I2S Peripheral 典型的通过 USB 的音频应用 : 同步问题 27 Microcontroller Buffer (RAM) DAC PC 时钟域 (SOF) USB 外设时钟域 I2S 外设时钟域外部功放时钟 因为同一个系统时钟的关系, 这三个时钟域是被同步了 这些不同的时钟域 (jitter, phase, drift ) 将造成音频的不同步, 出现断音或者丢失部分音频.

主要问题 28 USB 的参考时钟 (SOF) 并不跟系统时钟同步 : Jitter: Drift:. 相位, 固定的延时 读取 复制 处理 Buffer 的时间 预存音频数据的 buffering

下溢情况 ( 简单描述带有 level = 1buffer) I2S 的消耗一个 buffer< 1 ms 问题描述 29 Basic Delay Accumulated Delay Accumulated Delay Underflow I2S needs buffer 10 but it is not yet loaded I2S Buffer Consumption USB Buffer Reception 1 1 2 3 4 5 6 7 8 9 9 10 11 2 3 4 5 6 7 8 9 10 11 Start of Reception Start of Consumption Data transfer time (on the USB bus) 1 Frame = 1ms x 复写情况 ( 简单描述带有 level = 1buffer) I2S 的消耗一个 buffer>1 ms Basic Delay Accumulated Delay Overflow USB overwrites buffer 5 but it is not yet consumed by I2S I2S Buffer Consumption USB Buffer Reception 1 1 2 3 4 2 3 4 5 6 7 8 Start of Reception Start of Consumption Data transfer time (on the USB bus) 1 Frame = 1ms x

非 USB 改善 : 精准的时钟 深的存储 BUFFER DMA. 减少 USB 的复制的时间 基于 SOF 信号, 同步所有的消耗音频数据 USB 同步机制 : 主要改善 30 USB 数据速率控制机制 ( 异步 / 同步 / 高级 ) 我们会在下面的 PPT 详细介绍.

性能 同步机制比较 31 异步同步高级 时钟从属性 各自独立运行采样时钟隶属于 SOF 采样时钟锁定端点和数据流 数据率控制 端点 : 明确的反馈 源 : 明确的前反馈 绝对的 (SOF) 端点 : 明确的反馈 源 : 明确的前反馈 每帧多少数量数据 - 固定 / 可变. - 确定的. - 固定. - 确定的. - 可变. - 不确定的. 高级 异步 同步 复制度 (Hw & Sw)

STM32 同步实现 32 方式实现主要问题方案 异步 仅仅需要软件实现 需要一个精准的移位测量和纠正 已经移植在 STM32 产品 同步 需要软 / 硬件移植 ( 编程 PLLS 去隶属于 SOF ). 所要求的硬件,STM32 并不具有 不可能在 STM32 上实现 高级软件移植? ( SRC ). 理论上可行, 硬件 (I2S 动态调节采样率 + 时钟配置 ) 开发中

应用 33 STM32 USB 设备的音频数据流的例程是一个完整的软件库 提供 : USB 音频数据流的应用 :USB 耳机 喇叭 多种同步方式 : 外部 PLL USB PIPE 反馈 增加 / 减少采样个数 SRC 同步 无同步方式 在不影响系统时钟配置的情况下, 支持多种采样率 (48KHz, 44.1KHz, 32KHz )

STM32 异步机制 34 无同步 动态时钟控制 动态调节 I2S 的时钟 增加 / 移除样本 增加或者移除一个样本, 根据 BUFFER 的消耗情况 通道反馈 设备应用一个 uses a 专门的 USB 端点去通知主机在下一帧需要多少的数据 采样转换 (SRC ) 设备用 SRC 的机制去转换部分的数据, 根据 BUFFER 的消耗情况 低音质 低成本 高 / 中音质 高成本 ( 额外时钟发生器 ) 低音质 低成本 低复杂度 高音质 低复杂度 许多的主机并不支持这种功能 高 / 中音质低成本. Other Ideas?

FW version V0.2.0 Toolchain KEIL MDK-ARM V4.21 Compiler version KEIL armcc compiler: 4.1.0.713 Configuration Optimization: -O3, for Time System Clock = 120 MHz 3 Wait States on Flash 应得 MCU 负荷 35 Player: Option/Configuration CPU Load (%) 无同步 2.96% 外部时钟同步 3.22% 通道反馈 3.08% 增加 / 移除样本 2.97% SRC 22.07% 刻录 only 7.50%

应用占有的资源 36 FW version V0.2.0 Toolchain KEIL MDK-ARM V4.21 Compiler version KEIL armcc compiler: 4.1.0.713 Configuration Optimization: -O3, for Time Module Footprint (Bytes) Code Const RAM Total Demo (all options enabled) 43956 10292 11232 Common modules 24744 9964 9104 USB 10608 0 5439 LCD 2654 9168 518 Synchro management 744 0 239 外部时钟 1376 184 120 通道反馈 372 72 72 增加 / 移除样本 100 72 56 SRC 17364 0 1880