GPIF examples which use a 32-bit wide GPIF interface, such as the AN65974 example, do not work when compiled with the libraries from FX3 SDK 1.3.3. The same examples work with FX3 SDK 1.3.1. Why does this happen?
There are two possible reasons:
- To support other parts in the libraries, SDK 1.3.3 has enabled checks to identify the active FX3 or derivative part and to validate the IO configuration and GPIF settings that are used. The PMODE pin combinations are also used to identify the active part.
The PMODE pin combination for USB boot on FX3 is supposed to be “F11”. If the combination “111” is used instead; the library will identify the device as CYWB0263, by mistake. As CYWB0263 does not support the 32-bit wide GPIF interface, the CY_U3P_ERROR_NOT_SUPPORTED error is reported if you attempt to select a 32-bit wide GPIF configuration.
The fix is to use only the valid PMODE pin combinations documented in the FX3 device datasheet.
- FX3 SDK 1.3.3 has also enabled additional checks on the IO matrix parameters passed to the CyU3PDeviceConfigureIOMatrix() API. If any of the fields in the structure are left uninitialized, it is possible that the default values in the corresponding memory locations cause an error to be flagged.
The fix is to ensure that the CyU3PIoMatrixConfig_t structure is zeroed out, and then only the relevant fields are initialized before calling the CyU3PDeviceConfigureIOMatrix() API.