Japanese translation: FX3/CX3ブートローダがPMODEピンの状態を検出する方法 - KBA231617 - Comm... - Cypress Developer Community
To detect the state of PMODE pins, the FX3 bootloader enables internal pull-up and pull-down resistors on PMODE lines in the sequence as follows:
1. The bootloader initially pulls up all the PMODE pins internally to HIGH voltage with 50-kΩ resistors (see section Digital I/Os of FX3 datasheet). After waiting for 5 µs, the bootloader samples the state of the PMODE pins.
2. The bootloader removes the pull-up on PMODE lines and then pulls down the PMODE lines to the LOW voltage with 10-kΩ resistors (see page 13 of FX3 datasheet). Again, it waits for 5 µs and then samples the state of the PMODE pins. After this, the internal pull-downs are removed.
This process is repeated on every connection/reset of the device.
The bootloader checks whether a PMODE pin is floating. For this, it uses the sampled states of the PMODE lines when the pull-up and pull-down resistors were enabled.
Note: See Table 8 - DC specifications of the FX3 datasheet to understand the range of voltages that are interpreted as HIGH / LOW corresponding to the power domain voltage of a particular I/O.
If a PMODE pin is floating:
When placing an internal pull-up, the voltage on that pin will be HIGH. When an internal pull-down is placed on that pin, the voltage on that pin will be LOW. This change in the voltage level upon changing the internal pull-up and pull-down resistors is used by the bootloader to detect whether the pin is floating.
If a PMODE pin is pulled HIGH externally or supplied with a HIGH voltage externally:
When an internal pull-up is enabled on that pin by the bootloader, the voltage on that pin will be HIGH itself. Next, when an internal pull-down is enabled, a voltage divider is formed at that pin (external resistor and the internal 10kpull-down). Here, while choosing the external resistor, ensure that the voltage at that pin does not fall into the LOW level. If it falls into the LOW level, the bootloader will interpret that pin as floating.
If a PMODE pin is pulled down externally:
When an internal pull-up resistor is placed on that pin by the bootloader, a voltage divider is formed (50k internal pull-up and the external pull-down resistor). Here also, while choosing the external resistor, ensure that the voltage at that pin does not fall into the HIGH level. Next, when the bootloader places an internal pull-down resistor on that pin, the voltage on that pin will be LOW itself. Thus, if the voltage on the pin when the bootloader placed an internal pull-up resistance fell into the HIGH level, the bootloader would have detected the pin as floating.
The recommended value for external pull-up and pull-down resistors on PMODE lines is 10k.
Effect of dip and spike in PMODE voltage levels when the FX3/CX3 device is connected to host or reset.
See the following discussion thread in the Developer Community:
As mentioned earlier, the bootloader enables internal pull-up and pull-down resistors for detecting the state of PMODE pins. These pull-up and pull-down resistors enabled by the bootloader internally cause the dip and spikes seen on the PMODE lines. It will not affect the functionality of these pins.