マイコン工作実験日記

Microcontroller を用いての工作、実験記録

USBスピーカ

2009-05-24 16:52:36 | Weblog
LPC2388につなげるUSBスピーカを用意しました。当初は数年前に買った手持ちの安物USBスピーカを使うつもりだったのですが、調べてみるとサンプリング周波数として48KHzしかサポートしていないという困ったチャンでした。これでは、CDから取り込んだMP3データを再生する際には44.1KHzから48KHzへのレート変換が必要になってしまいます。そこまでMCUにやらせるのも酷だと思うので、もう少しまっとうなスピーカを用意することにした次第です。



安物に手を出して痛いメにあうのはイヤなので、ちょっと値は張るけどSONYのSRS-T10PCを選択しました。もう生産終了になっている、古い製品のようですけど。どの製品もそうですが、お店でパッケージに表示されている製品仕様を確認してもサポートするサンプリング周波数なんて書いてありません。普通、そんなことまで確認する人なんていないわけですね。このスピーカも、製品マニュアルの仕様記述を読んでも、サンプリング周波数には言及していませんでした。ちょっとドキドキしながらPCにつなげてusbviewを使ってディスクリプタを調べてみました。
Device Descriptor:
bcdUSB:             0x0110
bDeviceClass:         0x00
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x40 (64)
idVendor:           0x0D8C
idProduct:          0x000C
bcdDevice:          0x0100
iManufacturer:        0x00
iProduct:             0x01
0x0409: "C-Media USB Headphone Set  "
iSerialNumber:        0x00
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed:     Full
Device Address:       0x02
Open Pipes:              1

Endpoint Descriptor:
bEndpointAddress:     0x83
Transfer Type:   Interrupt
wMaxPacketSize:     0x0004 (4)
bInterval:            0x20

Configuration Descriptor:
wTotalLength:       0x008A
bNumInterfaces:       0x03
bConfigurationValue:  0x01
iConfiguration:       0x00
bmAttributes:         0xA0 (Bus Powered Remote Wakeup)
MaxPower:             0xFA (500 Ma)

Interface Descriptor:
bInterfaceNumber:     0x00
bAlternateSetting:    0x00
bNumEndpoints:        0x00
bInterfaceClass:      0x01 (Audio)
bInterfaceSubClass:   0x01 (Audio Control)
bInterfaceProtocol:   0x00
iInterface:           0x00

Audio Control Interface Header Descriptor:
bLength:              0x09
bDescriptorType:      0x24
bDescriptorSubtype:   0x01
bcdADC:             0x0100
wTotalLength:       0x0028
bInCollection:        0x01
baInterfaceNr[1]:     0x01

Audio Control Input Terminal Descriptor:
bLength:              0x0C
bDescriptorType:      0x24
bDescriptorSubtype:   0x02
bTerminalID:          0x01
wTerminalType:      0x0101 (USB streaming)
bAssocTerminal:       0x00
bNrChannels:          0x02
wChannelConfig:     0x0003
iChannelNames:        0x00
iTerminal:            0x00

Audio Control Output Terminal Descriptor:
bLength:              0x09
bDescriptorType:      0x24
bDescriptorSubtype:   0x03
bTerminalID:          0x06
wTerminalType:      0x0301 (Speaker)
bAssocTerminal:       0x00
bSoruceID:            0x09
iTerminal:            0x00

Audio Control Feature Unit Descriptor:
bLength:              0x0A
bDescriptorType:      0x24
bDescriptorSubtype:   0x06
bUnitID:              0x09
bSourceID:            0x01
bControlSize:         0x01
bmaControls[0]:
01 
bmaControls[1]:
02 
bmaControls[2]:
02 
iFeature:             0x00

Interface Descriptor:
bInterfaceNumber:     0x01
bAlternateSetting:    0x00
bNumEndpoints:        0x00
bInterfaceClass:      0x01 (Audio)
bInterfaceSubClass:   0x02 (Audio Streaming)
bInterfaceProtocol:   0x00
iInterface:           0x00

Interface Descriptor:
bInterfaceNumber:     0x01
bAlternateSetting:    0x01
bNumEndpoints:        0x01
bInterfaceClass:      0x01 (Audio)
bInterfaceSubClass:   0x02 (Audio Streaming)
bInterfaceProtocol:   0x00
iInterface:           0x00

Audio Streaming Class Specific Interface Descriptor:
bLength:              0x07
bDescriptorType:      0x24
bDescriptorSubtype:   0x01
bTerminalLink:        0x01
bDelay:               0x01
wFormatTag:         0x0001 (PCM)

Audio Streaming Format Type Descriptor:
bLength:              0x0E
bDescriptorType:      0x24
bDescriptorSubtype:   0x02
bFormatType:          0x01
bNrChannels:          0x02
bSubframeSize:        0x02
bBitResolution:       0x10
bSamFreqType:         0x02
tSamFreq[1]:      0x00BB80 (48000 Hz)
tSamFreq[2]:      0x00AC44 (44100 Hz)

Endpoint Descriptor:
bEndpointAddress:     0x01
Transfer Type: Isochronous
wMaxPacketSize:     0x00C8 (200)
wInterval:          0x0001
bSyncAddress:         0x00

Audio Streaming Class Specific Audio Data Endpoint Descriptor:
bLength:              0x07
bDescriptorType:      0x25
bDescriptorSubtype:   0x01
bmAttributes:         0x01
bLockDelayUnits:      0x01
wLockDelay:         0x0001

Interface Descriptor:
bInterfaceNumber:     0x02
bAlternateSetting:    0x00
bNumEndpoints:        0x01
bInterfaceClass:      0x03 (HID)
bInterfaceSubClass:   0x00
bInterfaceProtocol:   0x00
iInterface:           0x00

HID Descriptor:
bcdHID:             0x0100
bCountryCode:         0x00
bNumDescriptors:      0x01
bDescriptorType:      0x22
wDescriptorLength:  0x0032

Endpoint Descriptor:
bEndpointAddress:     0x83
Transfer Type:   Interrupt
wMaxPacketSize:     0x0004 (4)
bInterval:            0x20

ちゃんと44.1KHzと48KHzの両方がサポートされていますね。天下のソニーブランドであっても、USBスピーカなんかはOEMで全く手をかけていないんでしょうか。使っているチップのベンダー名であるC-MediaがiProductに表れていますし、idVendorの 0x0D8Cも調べてみるとC-Mediaに割り当てられた番号です。

このスピーカ USB ACTIVE SPEAKER SYSTEMと呼んで売られている製品ですが、使用しているC-MediaのチップはもともとUSBヘッドフォン用に開発されたチップであり、そのヘッドフォンアンプを使ってスピーカを鳴らしているということでしょうかね。

今日は、MTM03も見てきました。chikakiさんのTimpyは、イメージしていたよりも実物の方がさらに小さく感じられ、ホントに驚きでした。基板の実物も展示されていましたが、老眼のわたしには顔を近づけるとかえって見えなくなってしまいました。やはり、Webの方が良く見えます。掲示板で話題のカメラVS6724も展示されており、興味深く拝見させていただきました。Makeやニコ動でおなじみのものの現物が色々見れる素晴らしいイベントですね。個人的には、Rokuroがおもしろかったです。実物に自分で触れることによる生じる変化は、動画ではわかりませんし。