While operating the CP2114, can I switch between audio configurations on-the-fly? For instance, if operating the CP2114-B02 in 24-bit playback or record mode, can I dynamically switch the device to operate in 16-bit playback/16-bit record mode, or from 24-bit playback to 24-bit record? Other configuration changes could include:
- switching between left-justified and I2S data formats
- changing DAC/CODEC I2C addresses
Are these kind of dynamic configuration changes possible or recommended?
Because audio configurations for the CP2114 are pre-programmed into the one time programmable (OTP) ROM on the device and loaded at startup, runtime configuration changes are not supported. Although multiple configuration profiles can be programmed into a single device and it is possible to select which among the programmed configurations is loaded at device startup, it is not recommended to run different configurations or switch between configurations in an application.
On-the-fly device configuration switching is not recommended because the enumeration procedure and host behavior make it very likely that changing the device configuration after a device has enumerated for the first time will result in unpredictable and negative behavior. The first time a CP2114 device with a unique serial number enumerates, the host operating system caches some of the device descriptor information associated with that particular device for ease of use when the device disconnects and subsequently reconnects. Thus, if the device disconnects, changes its configuration options,and then re-enumerates, host side processes may access old or stale information from the descriptor cache, resulting in undesired behavior.
The intended purpose of the DAC select pins and the ability to program multiple configurations to the OTP ROM on the device is to enable flexibility for development purposes. Use of these features is not advised for dynamic configurations at run time.
For more information about programming the CP2114, please reference the CP2114 datasheet and AN721: