|
USB(通用串行总线)经过几十年发展,已经成为一种在个人电脑领域大量使用的标准。记忆棒、移动硬盘、鼠标和网络摄像头都通过USB连接。本文将深入分析USB音频:一种用来将PC、智能手机和平板电脑中所使用的电子音频与扬声器、麦克风或调音台等音频外设连接在一起的标准。本文将描述USB音频的工作原理,需要注意什么事项,以及对于高保真多通道输入输出,应如何使用USB音频等。. W' M' c3 b; W
# Y9 T; c5 l, T8 G
USB基本原理
" N$ X- c; A2 O9 _, o) k
! Y# x5 d% B' i) X6 S USB是一种由PC(USB主机)发起一次传输,设备(例如一套USB扬声器)继而响应的通信协议。每次传输都寻址到一个特定设备,并寻址到该设备的一个特定端点。IN传输将数据发送至PC.当主机发起一次IN传输时,设备必须用主机所需的数据做出响应。OUT传输将数据传输至设备。当主机执行一次OUT传输时,它发送设备必须捕获的数据包。在USB音频领域,IN传输和OUT传输可以用于传输音频样本:一个OUT传输将音频数据从PC发送至扬声器,而IN传输用于将音频数据从麦克风发送至PC。
+ H, K( _ o; m5 A \0 l
9 @: a5 K8 v, o P+ h USB规范中有4种类型的IN传输和OUT传输:批量传输、同步传输、中断传输和控制传输。
" c: }8 Z% {! G3 B5 X ~4 W+ R' ~" r3 q
批量传输用于在主机和设备之间可靠地传输数据。所有USB传输都带有CRC(校验和),它表明是否有错误发生。在一次批量传输中,数据的接收端必须验证CRC.如果CRC正确,传输被应答,数据被假定已经传输无误。如果CRC不正确,传输不会被应答,然后将会重试。如果设备未准备好接收数据,它将传送一个否定应答(NAK)信号,该信号将会使主机重试传输。批量传输不被认为对时间要求严格,因此将会安排在以下将要讨论的、对时间要求严格的各种传输的周边时间。
E. I/ f; Y, N+ O$ S' H+ S0 ]. {- m+ @
同步传输用于在主机和设备之间实时传输数据。若主机建立了同步端点,主机会为同步端点分配一定数量的带宽,并且它将在该端点上规律地执行IN传输或OUT传输。例如,主机可以每125μs对该设备OUT1KB数据。由于分配了固定的、有限数量的带宽,如果出现了任何异常,都将没有时间重发数据。数据具有正常的CRC,但是如果接收端检测到错误,将没有重发机制。& M: S( i( `% [. X, r. F7 ?3 X/ ~
. v0 b/ p3 z# w7 H 中断传输被主机用于定期探询设备,以发现是否有值得做的事情发生。例如,主机可以探询音频设备,核对静音(MUTE)按钮是否已被按下。“中断”传输这个名称有一点混淆视听,因为其并不中断任何事情。然而,数据的定期探询给出了主机中断将会提供的相同类型的功能。/ D. v( t; d& j( F. s
7 Y Q' T j$ i c- |9 `: j3 S
控制传输与批量传输非常相似。控制传输会被应答(即可以被NAK),并且以非实时方式传送。控制传输用于正常数据流以外的操作,例如询问设备功能或端点状态。设备功能描述的说明在本文范畴之外,本文仅陈述诸如“USB音频类”或“USB大容量存储类”等预定义的类型,它们能够实现跨平台的互操作性。
, W7 r# A) D3 N8 T0 [& ` l6 k% D" w7 i8 _0 H+ a
USB帧中制定了所有的传输类型。高速USB帧的长度为125μs(FullSpeedUSB帧为1ms),并由主机发送帧起始(SOF)消息进行标记。同步传输和中断传输每帧至多发送一次。
- j0 [+ @# r, l7 w: e' M3 ?. h+ Z0 |% ^; s- P4 U
USB音频/ E% X7 C# T( `! P: |( [& A) g& K
4 v- D, Y: v5 y9 [ USB音频使用了同步传输、中断传输和控制传输。所有音频数据通过同步传输来传输;中断传输用于转发关于音频时钟可用性的信息;控制传输用于设置音量、请求采样率等(参见图1)。$ H2 Y" h3 E. a4 M2 V/ l
|
|