Yes, the UHS-I SD memory card uses 3.3V signal voltage at initialization and then shifts to 1.8V.
How does it switch the I/O voltage?
We need an external regulator which shifts the voltage from 3.3 V to 1.8 V. This shifting will be controlled by the GPIO provided in the intfparams.
First, We have to set the parameters of the interface in such away that port supports the lowvoltage operation. This can be done by passing CyTrue to intfParams.lowVoltage. If it is true, next provide the GPIO which can be used for controlling the regulator. This should done in the application firmware.
And you have to connect the configured GPIO to regulator.
Looking for the card specification and asserting the GPIO, if required, is handled in the library.
In USB RAID 1 example project provided with the App Note AN89661, we have configured the port 0 parameters as follows:
intfParams.resetGpio = 0xFF; /* No GPIO control on SD/MMC power. */
intfParams.rstActHigh = CyTrue; /* Don't care as no GPIO is selected. */
intfParams.cardDetType = CY_U3P_SIB_DETECT_DAT_3;/* Card detect based on SD_DAT. */
intfParams.writeProtEnable = CyTrue; /* Write protect handling enabled. */
intfParams.lowVoltage = CyTrue; /* Low voltage operation enabled.*/
intfParams.voltageSwGpio = VSEL_S0_GPIO; /* Use GPIO_12 for voltage switch on S0 port.*/
intfParams.useDdr = CyTrue; /* DDR clocking enabled. */
intfParams.maxFreq = CY_U3P_SIB_FREQ_104MHZ; /* No S port clock limitation. */
intfParams.cardInitDelay = 5; /* No delay required between SD card insertion
before initialization. */
status = CyU3PSibSetIntfParams (0, &intfParams);
Refer the attached Schematic of FX3S RAID-ON-CHIP USB DONGLE, we have connected the VSEL_VIO2 (GPIO 12) to regulator U1 in page 6. This GPIO will triggered when you insert the UHS-I card.