|
|
USB(通用串行总线)经过几十年发展,已经成为一种在个人电脑领域大量使用的标准。记忆棒、移动硬盘、鼠标和网络摄像头都通过USB连接。本文将深入分析USB音频:一种用来将PC、智能手机和平板电脑中所使用的电子音频与扬声器、麦克风或调音台等音频外设连接在一起的标准。本文将描述USB音频的工作原理,需要注意什么事项,以及对于高保真多通道输入输出,应如何使用USB音频等。/ T, K) N1 e. p( Q
% Z0 |+ H+ L! x( L& a E USB基本原理- u* l5 d, Q6 {0 @' x1 j! [
C& |: ^5 x7 `9 [ USB是一种由PC(USB主机)发起一次传输,设备(例如一套USB扬声器)继而响应的通信协议。每次传输都寻址到一个特定设备,并寻址到该设备的一个特定端点。IN传输将数据发送至PC.当主机发起一次IN传输时,设备必须用主机所需的数据做出响应。OUT传输将数据传输至设备。当主机执行一次OUT传输时,它发送设备必须捕获的数据包。在USB音频领域,IN传输和OUT传输可以用于传输音频样本:一个OUT传输将音频数据从PC发送至扬声器,而IN传输用于将音频数据从麦克风发送至PC。9 J1 I3 z0 |/ C7 a4 w4 ]5 k
0 ]5 e# J! N! a( C, Z& I' P
USB规范中有4种类型的IN传输和OUT传输:批量传输、同步传输、中断传输和控制传输。
3 Z2 y! j" ^! k: R# y+ g8 N# i% a( ?4 p1 H) y2 M
批量传输用于在主机和设备之间可靠地传输数据。所有USB传输都带有CRC(校验和),它表明是否有错误发生。在一次批量传输中,数据的接收端必须验证CRC.如果CRC正确,传输被应答,数据被假定已经传输无误。如果CRC不正确,传输不会被应答,然后将会重试。如果设备未准备好接收数据,它将传送一个否定应答(NAK)信号,该信号将会使主机重试传输。批量传输不被认为对时间要求严格,因此将会安排在以下将要讨论的、对时间要求严格的各种传输的周边时间。# R' C9 ~& i3 w8 ?
- @ I/ a' m+ k2 P% \" ^
同步传输用于在主机和设备之间实时传输数据。若主机建立了同步端点,主机会为同步端点分配一定数量的带宽,并且它将在该端点上规律地执行IN传输或OUT传输。例如,主机可以每125μs对该设备OUT1KB数据。由于分配了固定的、有限数量的带宽,如果出现了任何异常,都将没有时间重发数据。数据具有正常的CRC,但是如果接收端检测到错误,将没有重发机制。
) Q' v) Z5 ]* {! {8 M. z* F3 n0 |0 f3 g! X A8 ~2 h( n* }
中断传输被主机用于定期探询设备,以发现是否有值得做的事情发生。例如,主机可以探询音频设备,核对静音(MUTE)按钮是否已被按下。“中断”传输这个名称有一点混淆视听,因为其并不中断任何事情。然而,数据的定期探询给出了主机中断将会提供的相同类型的功能。$ a4 X m+ F. T: Z) }9 u
( x3 Z7 y1 t/ z3 M) J& h 控制传输与批量传输非常相似。控制传输会被应答(即可以被NAK),并且以非实时方式传送。控制传输用于正常数据流以外的操作,例如询问设备功能或端点状态。设备功能描述的说明在本文范畴之外,本文仅陈述诸如“USB音频类”或“USB大容量存储类”等预定义的类型,它们能够实现跨平台的互操作性。
2 o9 u, Z1 r+ I7 B! u
# j6 {8 C, B' H USB帧中制定了所有的传输类型。高速USB帧的长度为125μs(FullSpeedUSB帧为1ms),并由主机发送帧起始(SOF)消息进行标记。同步传输和中断传输每帧至多发送一次。
* t& R, m8 {4 o3 z7 J6 R4 d
! d" H$ A1 g' L4 U, M4 Q( d USB音频7 Q6 n* o4 N9 l9 @) e3 Q/ }, s+ \9 m: X
* ^7 L- p7 i7 c# ?6 e/ U
USB音频使用了同步传输、中断传输和控制传输。所有音频数据通过同步传输来传输;中断传输用于转发关于音频时钟可用性的信息;控制传输用于设置音量、请求采样率等(参见图1)。# r4 Y- J' B- l+ {
|
|