AN1422 采用 PIC32 的高质量音频应用 作者: 捕获的立体声音频流随后通过串行接口流到编解码器或 DAC 中。由于数字音频源种类繁多,而且并非所有源均 使用相同的采样率,该串行接口通常会调整采样频率以 适应音频源,或将采样数据流转换为常用的数据速率。 因此,音频坞系统或设备附件设计中的一项挑战是以尽 可能低的成本在不降低音质的情况下执行采样率转换。 为了应对这些挑战,设计人员通常使用专用的采样率转 换电路和 / 或集成了复杂锁相环(Phase-Locked Loop, PLL)的高端音频 DAC,以确保为稳定传输采样音频数 据提供灵活的采样率。 Jayanth Murthy Madapura Microchip Technology Inc. 在为便携式数字音频设备和其他数字音频源设计音频坞 站及附件时,设计人员虽受到成本的限制,但仍要设法 提供最高质量的音频回放。 在典型的音频坞站和设备附件中,插入相应装置的数 字音频源通过音频坞的数据传输接口 (例如 USB)发 送串行立体声音频数据流。音频坞捕获数据流,同时执 行其他重要任务,并以特定的采样率将数据流发送到音 频编解码器或数模转换器(Digital-to-Analog Converter, DAC),如图 1 所示。 图 1: 典型音频应用 音频 放大器 数字 音频源 串行输入 连接器 单片机 显示屏, 前面板控制 © 2012 Microchip Technology Inc. 采样率 单片机 (可选) 左耳机/ 扬声器 DAC 和 抗混叠 滤波器 音频 放大器 右耳机/ 扬声器 DS01422A_CN 第 1 页 AN1422 USB 接口对于传送音频数据很方便。但是,为了满足专 业音频的要求,必须解决由于 USB 时钟与编解码器时 钟不匹配而产生的微小音质损失问题。 本应用笔记将探讨 PIC32 MCU 中可满足这些需求的音 频特定功能。 SPI 模块支持不同的标准音频通信模式, 并 提 供 适 用 于 高 质 量 音 频 应 用 的 较 高 的 位 分 辨 率。 PIC32 MCU 灵活的参考时钟输出功能可用于向模拟前 端提供主时钟,从而生成不同的采样率。该参考时钟输 出还消除了编解码器对外部晶振 / 振荡器的需求。同时 也消除了对编解码器上的 PLL 的需求。参考时钟输出可 以进行调整,以防止缓冲区由于时钟不匹配而出现下溢 和上溢。 PIC32 MCU 还提供具有灵活 PLL 时钟方案的 低功耗 USB 主机和设备模块。 数字音频数据基本原理 将模拟音频转换为离散数字格式后,以模拟信号中最高 频率分量的至少两倍的频率或奈奎斯特 (Nyquist)频 率对模拟信号进行采样。因此,频距为 0 至 20 kHz 的 音频信号可按 44.1 kHz 的数据速率 (在这种情况下为 合适的奈奎斯特频率)进行采样,以便在转换回模拟域 后可以重建信号而不会出现混叠。除采样率外,数据的 位分辨率可以是 16 位或 24 位立体声音频数据。对于光 盘 (CD)质量的音频,标准是 16 位分辨率,采样率为 44.1 kHz。但是,还有性能更高的 CD 音乐选项。其中 一个标准是以 24 位分辨率对数据进行编码,并将采样率 提高到 96 kHz。对于专业音频,以每次采样 24 位的分 辨率对音频文件进行编码,这可以提供动态余量,以便 对声音进行混音和处理。此外,分辨率选项还允许在音 质与文件大小 (甚至使用压缩文件)之间做出权衡。 DS01422A_CN 第 2 页 USB 接口可在同步传输中轻松处理高质量音频流。其提 供高质量音频的能力非常明显,颇受许多音频用户青 睐。由于 USB 接口普遍易于使用,将其用作灵活的音 频接口,可传送高分辨率和高采样率的音频,而抖动可 以忽略。同步数据传输功能是其他诸多用途之一,用来 以恒定速率实时将音频数据传入/传出音频源。 立体声音频数据包的大小取决于音频流的采样率,其作 为USB帧的一部分在USB全速链路上每毫秒传送一次。 和许多控制和处理装置一样,USB 音频装置也提供对音 量、音调、增益控制和均衡器等常见功能的控制。 比特率与采样率之间的差异要求回放系统或音频坞中的 硬件能够处理不同速率的数据流。为此,系统必须使用 可对每个采样率进行锁相并按每个回放选项自行调整的 更复杂的 DAC (成本较高),或配合使用低成本 DAC 和外部采样率转换器 IC,或者采用单片机上运行的算法 将所有数据流转换为简单的低成本 DAC 能够处理的标 准采样率和比特率。 PIC32 MCU 提供灵活的参考时钟 输出和音频模式来满足这些要求,从而在实现高质量音 频的同时保持低设计成本。后面几节将介绍带音频模式 的串行接口和灵活的参考时钟输出模块。 带音频模式的 PIC32 串行外设接口 (SPI)模块 大多数编解码器提供基于 4 线串行接口的串行通信功 能。在 MCU 和编解码器之间通过此串行接口发送和接 收立体声音频采样。典型的串行接口具有以下信号: • 串行数据输出 (Serial Data Output, SDO), 用于向编解码器发送立体声音频数据 • 串行数据输入 (Serial Data Input, SDI), 用于从编解码器接收立体声音频数据 • 串行位时钟 (SCK/BCLK)是必需的位时钟, 由主器件提供 • 左/右时钟 (LRCK)是主器件为立体声数据提供 的相位时钟 2012 Microchip Technology Inc. AN1422 PIC32 器件具有一个带音频模式的 SPI 模块。音频模式 提供多种接口格式、位分辨率和主 / 从配置。支持的通信 模式包括以下几种: • I2S 格式 在 I2S 模式中,最高有效字节 (Most Significant Byte,MSB)出现在 LRCK 跳变后的 BCLK 的第二 个上升沿。有关I2S协议的更多信息,请参见Philips Semiconductors 的 I2S 总线规范 (http://www.classic.nxp.com/acrobat_download2/ various/I2SBUS.pdf)。 图 2: I2S 格式 1/fs 右通道 左通道 DACLRC/ ADCLRC(LRCK) BCLK 1 BCLK DACDAT/ ADCDAT 1 2 1 BCLK 3 n-2 n-1 n MSB 1 LSB 2 3 n-2 n-1 n MSB LSB • 左对齐格式 在左对齐模式中,MSB 出现在 LRCK 跳变后的 BCLK 的第一个上升沿。 图 3: 左对齐格式 1/fs 右通道 左通道 DACLRC/ ADCLRC(LRCK) BCLK DACDAT/ ADCDAT 1 2 3 MSB © 2012 Microchip Technology Inc. n-2 n-1 n LSB 1 MSB 2 3 n-2 n-1 n LSB DS01422A_CN 第 3 页 AN1422 • 右对齐格式 在右对齐模式中,最低有效字节(Least Significant Byte,LSB)出现在 LRCK 跳变前的 BCLK 的上升 沿, MSB 仍然最先发送。 图 4: 右对齐格式 1/fs 右通道 左通道 DACLRC/ ADCLRC(LRCK) BCLK DACDAT/ ADCDAT 1 2 3 n-2 n-1 n MSB 1 LSB 2 MSB 3 n-2 n-1 n LSB • DSP/PCM 格式 在 DSP/PCM 模式中,左通道 MSB 出现在 LRC 上 升沿后的 BCLK 的第一个上升沿。右通道数据紧随 左通道数据。根据字长度、 BCLK 频率和采样率, 右通道数据的LSB和下一个采样之间可能有未使用 的 BCLK 周期。 图 5: DSP/PCM 格式 1/fs 1 BCLK LRC BCLK 右通道 左通道 DACDAT/ ADCDAT 1 2 3 n-2 n-1 n MSB 1 2 3 n-2 n-1 n LSB 输入字长度(WL) DS01422A_CN 第 4 页 © 2012 Microchip Technology Inc. AN1422 PIC32 音频模式支持 16、24 和 32 位立体声音频数据。 还提供了支持接收上溢标志和发送下溢标志的高级错误 处理功能,以及可根据需要禁止这些标志的控制位。此 外,在 PIC32 MCU 作为串行主器件时,由 BCLK 和 LRC生成的时钟将自由运行,这对于在流应用中实现不 间断的音频数据传输至关重要。 置如图 6 所示。在 PIC32 SPI 音频模式从器件配置下, 编解码器为PIC32 MCU提供位时钟(BCLK)和立体声 相位时钟(LRCK)。此配置如图 7 所示。 PIC32 器件还提供一个基于 I2C™ 外设模块的控制接口 通道。该控制接口用于配置编解码器中的控制寄存器, 从而将编解码器配置为特定的工作模式。 音频编解码器和 DAC 允许以下两种配置或其中之一: 主器件或从器件。在 PIC32 SPI 音频模式主器件配置 下,PIC32 MCU 为编解码器提供 BCLK 和 LRCK。此配 图 6: PIC32 SPI 为主器件、编解码器为从器件时的 PIC32 SPI- 编解码器配置 PIC32 [SPI 主器件] 图 7: BCLK BCLK SSx/LRCK LRCK 编解码器/DAC/ADC [从器件] SDOx DACDAT SDIx ADCDAT PIC32 SPI 为从器件、编解码器为主器件时的 PIC32 SPI- 编解码器配置 PIC32 [SPI 从器件] © 2012 Microchip Technology Inc. BCLK BCLK SSx/LRCK LRCK 编解码器/DAC/ADC [主器件] SDOx DACDAT SDIx ADCDAT DS01422A_CN 第 5 页 AN1422 灵活的参考时钟输出 如果特定器件上允许外设引脚选择 (Peripheral Pin Select, PPS)功能,则参考时钟可映射到该器件的任 何端口引脚。REFCLKO 可配置为 PIC32 MCU 上的 SPI 模块的源时钟,从而替代外设总线时钟。这可确保 USB 时钟与 SPI 通道时钟同步,最大程度地减少将 USB PLL 时钟选择为 REFCLKO 的源时钟时由于时钟抖动而产生 的影响。立体声字选择信号和位时钟将与参考时钟输出 同步,因为它们均以参考时钟输出作为时钟源。 PIC32 器件具有灵活的参考时钟输出。参考时钟输出模块 (REFCLKO)可用于生成分数时钟,音频编解码器 /DAC 可使用该分数时钟适应各种采样率。这些采样率和相关 主时钟的典型示例如表 1 所示。REFCLKO 模块可用于 生成这些音频特定的主时钟,并且并不仅限于此。 图 8: 显示参考时钟输出信号的 SPI 和编解码器配置 编解码器/DAC/ADC [主器件] PIC32 [SPI 从器件] REFCLKO 表 1: MCLKIN BCLK BCLK SSx/LRCK LRCK SDOx DACDAT SDIx ADCDAT 编解码器 /DAC/ADC 在不同音频采样率下所需的典型主时钟和位时钟 采样率 (kHz) 不同过采样率下的编解码器主时钟 / 时基 (MHz) fs 128 fs 192 fs 32.0 — 44.1 — 位时钟 (MHz) 256 fs 384 fs 512 fs 768 fs 1152 fs 32 fs 64 fs — 8.1920 12.2880 16.3840 24.5760 — 11.2896 16.9344 22.5792 33.8688 36.8640 1.024 2.0480 — 1.4112 2.8224 48.0 — — 12.2880 18.4320 24.5760 36.8640 — 1.536 3.0720 88.2 11.2896 16.9344 22.5792 33.8688 — — — 2.8224 5.6448 96.0 12.2880 18.4320 24.5760 36.8640 — — — 3.072 6.1440 176.4 22.5792 33.8688 — — — — — 5.6448 11.2896 192.0 24.5760 36.8640 — — — — — 6.144 12.2880 DS01422A_CN 第 6 页 © 2012 Microchip Technology Inc. AN1422 参考时钟输出模块的时钟源有多种选项。可以从 USBPLL、主 PLL、POSC、FRC、SOSC、LPRC、PBCLK 和 SYSCLK 时 钟 中 选 择。根 据 所 选 的 时 钟 源,需要为 REFCLKO 配置小数除数,以根据表 2 中列出的过采样 率生成所需的 MCLK。所需小数除数的整数部分和小数 部 分 分 别 由 REFOCON 寄 存 器 中 的 RODIV 和 REFOTRIM 位决定。图 9 显示了具有参考时钟输出的 PIC32 振荡器模块,并标明了参考时钟输出的不同数据 源以及微调方案的除数。 表 2 给出了 16 位和 24 位分辨率的立体声音频数据在音 频采样率为 32/44.1/48 kHz 时相应的 SPIxBRG 寄存器 值以及所需的 REFCLKO 频率。位时钟 BCLK 可以是 32 fs 或 64 fs。当 PIC32 SPI 为从器件时, BCLK 和 LRCK 由编解码器生成。参考时钟输出可为编解码器 /DAC 提供主时钟。 当 PIC32 SPI 为主器件时, BCLK 和 LRCK 由器件生 成。 REFCLKO 用作 SPI 模块的时钟源时,可通过在 SPI波特率发生器寄存器SPIxBRG中加载适当的值来配 置 BCLK。如果需要, REFCLKO 可为编解码器提供主 时钟输入。 SPIxBRG 位时钟 (MHz) MCLK 采样率 64 fs 32 fs 64 fs (MHz) (kHz) 32 fs (16 位)(24 位)(16 位)(24 位) 表 2: PIC32 SPI 配置为主器件时的 波特率值 11.2896 44.1 1.4112 2.8224 4 2 12.2880 48 1.536 3.072 4 2 32 1.024 2.048 6 3 32 1.024 2.048 4 2 8.1920 图 9: 显示参考时钟输出的 PIC32 振荡器框图 USB PLL USB 时钟(48 MHz) ÷N UFIN ÷2 PLL x24 UFRCEN UPLLEN UFIN = 4 MHz UPLLIDIV<2:0> 参考时钟 REFCLKI OE POSC FRC LPRC SOSC PBCLK SYSCLK 4 MHz ≤ FIN ≤ 5 MHz FIN N PLL ÷ FPLLIDIV<2:0> COSC<2:0> © 2012 Microchip Technology Inc. ÷N REFCLKO 至 SPI RODIV<14:0>(表示 N) ROTRIM<8:0>(表示 M) XTPLL、HSPLL、 ECPLL、FRCPLL PLLODIV<2:0> PLLMULT<2:0> ÷ N.M ROSEL<3:0> XTPLL、HSPLL、 ECPLL、FRCPLL DS01422A_CN 第 7 页 AN1422 我们来看一个生成 REFCLKO 信号的示例。如果所需 MCLK 为 12.288 MHz 并且使用 96 MHz 的 USB-PLL 时 钟作为参考时钟输出的时钟源,则所需除数为 7.8125。 该除数需要编程为半周期 3.90625,即 (7.8125/2)。 RODIV 位的值将配置为 3,ROTRIM 配置为 464/512 = 0.90625。 例 1: 12.288 MHz REFCLKO 的 RODIV 和 ROTRIM 值 时钟源 小数除数 N + (M/512) MCLK = 12.288 MHz 时钟源 USB-PLL = 96 MHz REFCLKO 除数 = (时钟源 /MCLK)/2 = (96 MHz/12.288 MHz)/2 = 3.90625 = 3(464/512) RODIV ROTRIM DS01422A_CN 第 8 页 (N) (M) REFCLKO =3 = 464 © 2012 Microchip Technology Inc. AN1422 表 4 提供了先前在表 1 中列出的标准音频 MCLK 所需的 RODIV 和 ROTRIM 值。此处选择的时钟源是 USB-PLL 时钟。但是,也可以选择任何其他时钟源,并采用相似 的方式计算 RODIV 和 ROTRIM 值。 模拟前端,而且不必将外部晶振用作编解码器的时基。 这将节省音频设计的成本,同时提供与昂贵的编解码器 相同或更好的质量。 可以在高精度下对参考时钟输出进行更改。根据生成的 时钟频率,单位分辨率大约在 0.02 至 0.05% 之间。这 样可确保当参考时钟数据输出仅用作 SPI 时钟源而不是 编解码器的主时钟时,采样率偏差远低于编解码器要求 的限制。如果参考时钟输出用作编解码器的主时钟,该 偏差仅受限于编解码器的规范。 表 3: 表 3 列出了由昂贵的编解码器 (具有灵活的内部 PLL) 使用 12 MHz 标准外部晶振生成的音频主时钟,以及使 用参考时钟输出生成的音频主时钟。数据表明 PIC32 参 考时钟输出生成的主时钟非常接近于所需的主时钟。同 时也表明了参考时钟输出生成的主时钟与通过昂贵的编 解码器的内部 PLL 生成的主时钟一样好甚至更好。这将 消除对编解码器上的 PLL 的需求,也无需将 DAC 用作 表 4: 预期的 主时钟 (MHz) 使用编解码器 PLL 和使用 PIC32 器件上参考时钟输出生成的主时钟 的比较 使用外部晶振时 的平均主时钟 (MHz) 使用 REFCLKO 时的平均主时钟 (MHz) 8.192 8.192 8.192 11.2896 11.2889025 11.28893 12.288 12.288 12.288 不同主时钟的除数和微调值 MCLK (MHz) 96 MHz 的 USB-PLL 作为 时钟源时的除数 RODIV (N) ROTRIM (M/512) 测得的 MCLK (MHz) 偏差(%) 8.1920 5.859375 5 440 8.1920 0 11.2896 4.251701 4 128 11.28893 0.005937 12.2880 3.90625 3 464 12.2880 0 16.3840 2.929688 2 476 16.3840 0 16.9344 2.834467 2 427 16.93728 0.01703 18.4320 2.604167 2 309 18.43661 0.02501 22.5792 2.12585 2 64 22.58824 0.04002 24.5760 1.953125 1 488 24.5760 0 33.8688 1.417234 1 213 33.85124 0.051848 36.8640 1.302083 1 154 36.84558 0.049975 © 2012 Microchip Technology Inc. DS01422A_CN 第 9 页 AN1422 的质量越好。 THD 指标 (即,总谐波)失真用于度量 由基波频率的谐波引起的谐波失真。THD 指标越低,所产 生信号的质量越好。下面的 SNR 和 THD 数据表明,相对 于非常昂贵的具有内部PLL的编解码器,使用参考时钟输 出作为时基的 AFE 所生成的音频信号的质量要更出色。 表 5、表 6 和表 7 列出了分别使用外部晶振结合编解码 器上的内部 PLL 以及在同一编解码器上使用参考时钟输 出生成的一组 (纯)音调的信号质量指标 (SNR 和 THD)示例。 SNR 指标 (即,信噪比)用于度量产生 的噪声相对于信号的强度。SNR 指标越高,所产生信号 表 5: 使用编解码器 PLL 和 PIC32 参考时钟输出时测得的 THD 和 SNR—— 采样率为 32 kHz, 预期的主时钟为 8.192 MHz 使用外部晶振作为时基 fs = 32 kHz 使用参考时钟输出作为时基 预期频率 (Hz) 平均测得频率 (Hz) THD (%) SINAD (dB) 平均测得频率 (Hz) THD (%) SINAD (dB) 500 499.9649 0.002 88.62 499.9668 0.00224 88.476 1000 999.9318 0.00224 88.752 999.9342 0.002 88.752 1500 1499.895 0.00208 88.308 1499.901 0.00192 88.308 10000 9999.318 0.002 82.212 9999.335 0.002 82.212 表 6: 使用编解码器 PLL 和 PIC32 参考时钟输出时测得的 THD 和 SNR—— 采样率为 44.1 kHz, 预期的主时钟为 11.2896 MHz 使用外部晶振作为时基 fs = 44.1 kHz 使用参考时钟输出作为时基 预期频率 (Hz) 平均测得频率 (Hz) THD (%) SINAD (dB) 平均测得频率 (Hz) THD (%) SINAD (dB) 500 499.9649 0.00208 88.632 499.9668 0.00168 88.62 1000 999.9318 0.00184 88.332 999.9342 0.002 88.548 1500 1499.895 0.00168 88.38 1499.901 0.00176 88.212 10000 9999.318 0.00192 83.148 9999.335 0.00208 82.968 使用编解码器 PLL 和 PIC32 参考时钟输出时测得的 THD 和 SNR—— 采样率为 48 kHz, 预期的主时钟为 12.288 MHz 表 7: 使用外部晶振作为时基 fs = 48 kHz 使用参考时钟输出作为时基 预期频率 (Hz) 平均测得频率 (Hz) THD (%) SINAD (dB) 平均测得频率 (Hz) THD (%) SINAD (dB) 500 499.9959 0.002 88.62 499.9965 0.00224 88.476 1000 999.9938 0.00224 88.368 999.9932 0.002 88.752 1500 1499.989 0.00208 88.332 1499.997 0.00192 88.308 10000 9999.915 0.002 82.164 9999.934 0.002 82.212 DS01422A_CN 第 10 页 © 2012 Microchip Technology Inc. AN1422 调整参考时钟输出 参考时钟输出能够进行实时调整,也可以按照指定范围 内的步长进行调整。该范围应确保采样率的摆动范围 (通常在 ±0.2% 左右)远低于可能产生多余声音的范 围。例如,对于采样率为 48 kHz 的数据流的 ±0.2% 摆 动范围,需要在 12,263,424 Hz 至 12,312,576 Hz 的范 围内调整参考时钟输出。 表 8: LRCK (Hz) 表 8 列出了在 ±200 Hz 采样率范围内进行调整所需的 RODIV 和 ROTRIM 值。所需主时钟一列表明,采样率 的调整范围在 47.9 kHz 至 48.1 kHz, ROTRIM 的调整 范围在 459 至 468,所需的 RODIV 为 3。对于其他标 准音频采样率,可以确定相似的 RODIV 和 ROTRIM 调 整范围,以调整参考时钟输出。 REFCLKO 的调整功能可防止缓冲区下溢和上溢,并减 少可听见的咔嗒声,如 “USB 时钟不匹配”所述。 针对 48 kHz 音频流通过 RODIV 和 ROTRIM 值调整 REFCLKO 的示例 MCLK (Hz) 除数 RODIV ROTRIM LRCK (Hz) MCLK (Hz) 除数 RODIV ROTRIM 47800 12236800 3.922594 3 472 48010 12290560 3.905436 3 463 47810 12239360 3.921774 3 471 48020 12293120 3.904623 3 463 47820 12241920 3.920954 3 471 48030 12295680 3.90381 3 462 47830 12244480 3.920134 3 471 48040 12298240 3.902998 3 462 47840 12247040 3.919314 3 470 48050 12300800 3.902185 3 461 47850 12249600 3.918495 3 470 48060 12303360 3.901373 3 461 47860 12252160 3.917677 3 469 48070 12305920 3.900562 3 461 47870 12254720 3.916858 3 469 48080 12308480 3.89975 3 460 47880 12257280 3.91604 3 469 48090 12311040 3.898939 3 460 47890 12259840 3.915222 3 468 48100 12313600 3.898129 3 459 47900 12262400 3.914405 3 468 48110 12316160 3.897319 3 459 47910 12264960 3.913588 3 467 48120 12318720 3.896509 3 459 47920 12267520 3.912771 3 467 48130 12321280 3.895699 3 458 47930 12270080 3.911955 3 466 48140 12323840 3.89489 3 458 47940 12272640 3.911139 3 466 48150 12326400 3.894081 3 457 47950 12275200 3.910323 3 466 48160 12328960 3.893272 3 457 47960 12277760 3.909508 3 465 48170 12331520 3.892464 3 456 47970 12280320 3.908693 3 465 48180 12334080 3.891656 3 456 47980 12282880 3.907878 3 464 48190 12336640 3.890849 3 456 47990 12285440 3.907064 3 464 48200 12339200 3.890041 3 455 48000 12288000 3.90625 3 464 图注: 阴影单元格表示采样率调整范围值。 © 2012 Microchip Technology Inc. DS01422A_CN 第 11 页 AN1422 USB 时钟不匹配 针对会造成音频质量降低的音频数据下溢或上溢问题, 一个简单的解决方案是使用良好的异步采样率转换器 (Asynchronous Sample Rate Converter,ASRC),其 中的输入采样率按抖动衰减进行估算,内部滤波器可针 对新的采样率进行动态调整。但是,好的 ASRC 非常昂 贵,而且系统仍需要 DAC 以进行模拟转换。 USB 规范要求对 USB 时钟频率做出容差预算和限制, 作为实现抗无线干扰的方法。如果 USB 时钟不匹配,具 有允许容差预算的 USB 时钟会导致音质降低。 实时流音频采样必须以精确的固定时间间隔到达,以便 DAC 可按配置的预期恒定速率将数字采样转换为模拟 信号。预期并接收特定采样率音频采样的 DAC 时钟甚 至不能丢失一个采样。缺少采样表现为收听者听到微小 的咔嗒声,原因是 DAC 未能生成流音频信号的准确表 示。在具有嵌入式 USB 模块的单片机或微处理器上, USB 时钟源自独立的时钟,如采用外部晶振 (具有特 定值)的片上 PLL。由于时钟不是源自 USB 接口,时 钟不匹配会引起缓冲区上溢或下溢,而导致咔嗒声,如 图 10 所示。 图 10: 一个有效的低成本解决方案是缓冲 USB 音频包,并可 调整编解码器或 DAC 的时钟,以通过反馈机制防止数 据下溢或上溢。反馈机制会监视缓冲区占用水平,并确 保其保持在可接受的范围内,同时使音质与采用昂贵的 ASRC 时相同。 将 USB-PLL 时钟作为时钟源的参考时钟输出可用于生 成和调整所需主时钟,如“调整参考时钟输出”中所述。 此功能可防止缓冲区下溢和上溢,同时保持摆动范围为 0.2% 的可接受 DAC 采样率。与其他两种解决方案相比, 这是成本最低但仍可实现高质量音频的解决方案。 表现为可听见的微小咔嗒声的时钟抖动 DAC 下溢或上溢 MCU 数字音频源 模拟音频 信号 I2S USB 接口 USB SPI DAC 数据抖动 PLL 可听见的 咔嗒声 时钟 DS01422A_CN 第 12 页 时钟 © 2012 Microchip Technology Inc. AN1422 PIC32 USB 数字音频配件板和应用演示 结论 作为示例,本应用笔记中介绍的所有功能都在适用于 PIC32 USB 数字音频配件板的 PIC32 USB 耳麦应用项 目中实现。有关该配件板和演示应用的更多信息,请访问 www.microchip.com/pic32tools,然后单击 “PIC32 USB 数字音频配件板”链接。 PIC32 器件中带音频模式的 SPI 模块和 USB On-The-Go (OTG)模块可用于高质量音频应用。 利用 PIC32 32 位 MCU 功能的多样性和灵活性,可提供 专业的音质解决方案,同时保持低成本和低功耗。 PIC32 器件中支持高质量音频的主要特性包括: • 具有 I2S 和其他数据格式模式的 SPI 模块 • 处理 16 和 24 位立体声音频数据流的能力 • 灵活的参考时钟输出,可用于生成标准音频主时钟 并可实时进行调整 • 由于 USB 时钟不匹配而导致的音质损失通过调整 采样率加以解决 • USB OTG 模块具有传输数字音频的能力 © 2012 Microchip Technology Inc. DS01422A_CN 第 13 页 AN1422 附录 A: 源代码 软件许可协议 Microchip Technology Incorporated(以下简称“本公司”)在此提供的软件旨在向本公司客户提供专门用于本公司生产的产品的软件。 本软件为本公司和 / 或其供应商所有,并受到适用的版权法保护。版权所有。使用时违反前述约束的用户可能会依法受到刑事制裁, 并可能由于违背本许可的条款和条件而承担民事责任。 本软件是按 “现状”提供的。不附有任何形式的保证,无论是明示的、暗示的或法定的,包括 (但不限于)有关适销性和特定用途 的暗示保证。对于在任何情况下,因任何原因造成的特殊的、偶然的或间接的损害,本公司概不负责。 本应用笔记中提及的所有软件都以单个 WinZip 归档文 件的形式提供。可从 Microchip 公司网站下载此文件: www.microchip.com DS01422A_CN 第 14 页 © 2012 Microchip Technology Inc. 请注意以下有关 Microchip 器件代码保护功能的要点: • Microchip 的产品均达到 Microchip 数据手册中所述的技术指标。 • Microchip 确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。 • 目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的 操作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。 • Microchip 愿与那些注重代码完整性的客户合作。 • Microchip 或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。 代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了 《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的 软件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。 提供本文档的中文版本仅为了便于理解。请勿忽视文档中包含 的英文部分,因为其中提供了有关 Microchip 产品性能和使用 情况的有用信息。Microchip Technology Inc. 及其分公司和相 关公司、各级主管与员工及事务代理机构对译文中可能存在的 任何差错不承担任何责任。建议参考 Microchip Technology Inc. 的英文原版文档。 本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范, 是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不 限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而 引起的后果不承担任何责任。如果将 Microchip 器件用于生命 维持和 / 或生命安全应用,一切风险由买方自负。买方同意在 由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障 Microchip 免于承担法律责任,并加以赔偿。在 Microchip 知识 产权保护下,不得暗中或以其他方式转让任何许可证。 商标 Microchip 的名称和徽标组合、 Microchip 徽标、 dsPIC、 KEELOQ、 KEELOQ 徽标、 MPLAB、 PIC、 PICmicro、 PICSTART、 PIC32 徽标、 rfPIC 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标。 FilterLab、 Hampshire、 HI-TECH C、 Linear Active Thermistor、MXDEV、MXLAB、SEEVAL 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标。 Analog-for-the-Digital Age、 Application Maestro、 chipKIT、 chipKIT 徽标、 CodeGuard、 dsPICDEM、 dsPICDEM.net、 dsPICworks、 dsSPEAK、 ECAN、 ECONOMONITOR、 FanSense、 HI-TIDE、 In-Circuit Serial Programming、 ICSP、 Mindi、 MiWi、 MPASM、 MPLAB Certified 徽标、 MPLIB、MPLINK、mTouch、Omniscient Code Generation、 PICC、 PICC-18、 PICDEM、 PICDEM.net、 PICkit、 PICtail、 REAL ICE、 rfLAB、 Select Mode、 Total Endurance、 TSHARC、 UniWinDriver、 WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地 区的商标。 SQTP 是 Microchip Technology Inc. 在美国的服务标记。 在此提及的所有其他商标均为各持有公司所有。 © 2012, Microchip Technology Inc. 版权所有。 ISBN:978-1-62076-333-9 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == © 2012 Microchip Technology Inc. Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部、设计和晶圆生产厂及位于美国加利福尼亚州和 印度的设计中心均通过了 ISO/TS-16949:2009 认证。 Microchip 的 PIC® MCU 与 dsPIC® DSC、KEELOQ® 跳码器件、串行 EEPROM、单片 机外设、非易失性存储器和模拟产品严格遵守公司的质量体系流程。 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证。 DS01422A_CN 第 15 页 全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 1-480-792-7200 Fax: 1-480-792-7277 技术支持: http://www.microchip.com/ support 网址:www.microchip.com 亚太总部 Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 台湾地区 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-330-9305 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 台湾地区 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 台湾地区 - 新竹 Tel: 886-3-5778-366 Fax: 886-3-5770-955 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 印度 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 荷兰 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 日本 Japan - Osaka Tel: 81-66-152-7160 西班牙 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 亚特兰大 Atlanta Duluth, GA Tel: 1-678-957-9614 Fax:1-678-957-1455 波士顿 Boston Westborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088 芝加哥 Chicago Itasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075 克里夫兰 Cleveland Independence, OH Tel: 1-216-447-0464 Fax: 1-216-447-0643 达拉斯 Dallas Addison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924 底特律 Detroit Farmington Hills, MI Tel: 1-248-538-2250 Fax: 1-248-538-2260 印第安纳波利斯 Indianapolis Noblesville, IN Tel: 1-317-773-8323 Fax: 1-317-773-5453 洛杉矶 Los Angeles Mission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608 圣克拉拉 Santa Clara Santa Clara, CA Tel: 1-408-961-6444 Fax: 1-408-961-6445 加拿大多伦多 Toronto Mississauga, Ontario, Canada Tel: 1-905-673-0699 Fax: 1-905-673-6509 中国 - 北京 Tel: 86-10-8569-7000 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 重庆 Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 中国 - 杭州 Tel: 86-571-2819-3187 Fax: 86-571-2819-3189 中国 - 香港特别行政区 Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 南京 Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 中国 - 青岛 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 中国 - 沈阳 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深圳 Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 中国 - 武汉 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 中国 - 厦门 Tel: 86-592-238-8138 Fax: 86-592-238-8130 中国 - 珠海 Tel: 86-756-321-0040 Fax: 86-756-321-0049 Fax: 81-66-152-9310 英国 UK - Wokingham Tel: 44-118-921-5869 Fax: 44-118-921-5820 日本 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 韩国 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 韩国 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 或 82-2-558-5934 马 来 西 亚 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 马来西亚 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 菲律宾 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 新加坡 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 泰国 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 11/29/11 DS01422A_CN 第 16 页 © 2012 Microchip Technology Inc.