Table 3.13 in the CP2615 Datasheet (captioned "Read CP2615 Firmware Revision") depicts an operation available in Configuration Mode to read the Firmware Version Number. How does the value obtained by this sequence map to a CP2615 firmware revision?
The CP2615-A02 firmware version number consists of an ASCII-encoded null-terminated string in the format 2615.x.y.z, where 'x', 'y', and 'z' comprise the firmware version number, and can be one or more characters each. The following table illustrates the data returned by reading 16 bytes from address 0xFFFB on a CP2615-A02 device:
The CP2615-A01 device does not have its firmware version encoded as described above. For the -A01 device, reading 16 bytes from address 0xFFFB returns the following data
For more information, including an alternative means to determine the revision of a CP2615 device (suitable for an end-user situation, e.g. where an app running on the phone or USB host would query the version number), see the KB article "Methods to determine CP2615 revision".
What is the right way to determine the revision (A01/A02/...) of my CP2615?
In Section 188.8.131.52 "Special Operations", the CP2615 Datasheet depicts (in Table 3.13 "Read CP2615 Firmware Revision") an operation available in Configuration Mode to read the Firmware Version Number.
In Section 3.2 "iop_AccessoryInfo", AN1139: CP2615 I/O Protocol depicts a "PartID" described as "Encoded part number of the chip (0x1400 for CP2615-A01, 0x1500 for CP2615-A02)."
Reading the version via I2C in config mode requires an external I2C Master, e.g. the special-PID CP2112 on the CP2615 EVB. This method is suitable for a prototyping environment (it's how Xpress Configurator determines the attached device), or in a customer's production-line environment (e.g. the external I2C master can verify the proper device version before programming the config). For this method, the CP2615 must be powered up, but doesn't have to be connected to a USB host. See Knowledge Base Article "Parsing the CP2615 Firmware Version Number" for details on how to interpret this value.
Reading the version via the iop protocol is suitable for an end-user situation, e.g. an app running on the phone or USB host would query the version number before issuing any version-dependent commands (e.g. downloading user profiles, which is only supported on the -A02).