Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Question using a PCM2706 Stereo Audio DAC and 'device descriptors'

Status
Not open for further replies.

Plecto

Full Member level 5
Joined
Jan 4, 2012
Messages
315
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,298
Activity points
4,979
I'm implementing a PCM2706 in an audio amplifier that I'm designing. I've read through the datasheet and I think I've figured most of it out, but it's the part regarding 'device descriptors' that I'm a little stuck with. The datasheet says the following:

9.3.6 Descriptor Data Modification
The descriptor data can be modified through the I
2C port by external ROM (PCM2704C/6C) or through the SPI
port by an SPI host such as an MCU (PCM2705C/7C) under a particular configuration of the PSEL and HOST
pins. Setting both the PSEL and the HOST pins high is necessary to modify the descriptor data; the D+ pin
pullup resistor must not be activated before programming the descriptor data through the external ROM or SPI
port is completed. The descriptor data must be sent from an external ROM to the PCM2704C/6C or from the SPI
host to the PCM2705C/7C in LSB first format, with a specified byte order. Additionally, the power attribute and
max power contents must be consistent with the PSEL setting and the power usage from the USB VBUS of the
end application. Therefore, the device does not support descriptor data modification in self-powered configuration
(PSEL = low).
9.3.7 External ROM Descriptor (PCM2704C/6C)
The PCM2704C/6C support an external ROM interface to override internal descriptors. Pin 3 (for the
PCM2704C) or pin 15 (for the PCM2706C) is assigned as DT (serial data), and pin 2 (for the PCM2704C) or pin
14 (for the PCM2706C) is assigned as CK (serial clock) of the I
2C interface when using the external ROM
descriptor. Descriptor data are transferred from the external ROM to the PCM2704C/6C through the I
2C interface
the first time when the device is activated after a power-on reset. Before completing a read of the external ROM,
the PCM2704C/6C reply with NACK for any USB command request from the host to the device itself. The
descriptor data, which can be in the external ROM, must meet these parameters:
• String descriptors must be described in ANSI ASCII code (1 byte for each character).
• String descriptors are converted automatically to unicode strings for transmission to the host.
• The device address of the external ROM is fixed as 0xA0.
The data bits must be sent from LSB to MSB on the I
2C bus. This condition means that each byte of data must
be stored with its bits in reverse order. A read operation is performed at a frequency of XTI/384 (approximately
30 kHz). The power attribute and max power contents must be consistent with the end application circuit
configuration (the PSEL setting and the actual power usage from VBUS of the USB connector); otherwise, it may
cause improper or unexpected PCM2704C/6C operation.

The datasheet doesn't say anything about what this 'external ROM' actually is. This application also has a MCU, I would like the MCU to transfer the device descriptors to the PCM2706, but I don't know how to do it. Is the MCU or PCM2706 master? In order to modify these descriptors, does the application require that the PCM2706 is self powered, so that the descriptors has already been transferred before the USB connection is made?
 

The datasheet doesn't say anything about what this 'external ROM' actually is.
It does say something. The chip expects an I2C serial ROM (EEPROM) with address 0xA0 holding at least 57 bytes. I would expect that a small serial I2C EEPROM like M24C01 works here.

- - - Updated - - -

Figure 33 shows a bus powered configuration with ROM option, apparently there's no problem to use it.
 

How does the PCM know the I2C address for an EEPROM like the M24C01?
 

Fortunately 0xA0 is established as standard address for I2C EEPROM. I admit that the datasheet could be clearer and should e.g. mention explicitly supported memory devices. There may be additional documentation.

- - - Updated - - -

There's a TI E2E discussion clarifying that only small memories with single address byte (I suppose M24C01 - M24C16) are supported. https://e2e.ti.com/support/audio/f/6/p/712544/2626589
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top