SPRUIV7B May 2022 – September 2023 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP
Each PRUSS PRU processor implements fast general purpose outputs (GPO) through its R30 register and fast general purpose inputs (GPI) through its R31 register. The device multiplexes all GPI signals and their corresponding GPO signals onto the same device pin using different device multiplexing modes. In some applications it may be necessary for the PRU to switch between GPO and GPI operation in a fast (or at least a deterministic) manner. This is not possible using SoC level pin muxing since each pin being switched requires a write to a separate pin configuration register located in Control Module (CTRL_MMR0).
In order to address the fast switching issue, special I/O pin connectivity for the PRUSS GPO/GPI pins is implemented. This feature makes use of the IEP EDIO signal controls to provide input/output switching using a single SoC level pin multiplexing mode.
The IEP EDIO interface has 32 data input (DATA_IN) and 32 data output (DATA_OUT) signals. It also has a set of 32 corresponding data output enable (DATA_OUT_EN) signals to be used as (active low) output driver enables to allow each DATA_OUT/DATA_IN to be implemented as a bidirectional pin. On this device, only 4 of the IEP EDIO I/Os of each PRUSS module are pinned out (PRG[2:0]_IEP_EDIO_DATA_IN_OUT[31:28]). This leaves a majority of the DATA_OUT_EN signals unused. The device allows these unused output enables to be optionally re-purposed for use as GPO enables. This allows each PRUSS GP pin to function as either a GPO or as a GPI when the I/O pin is configured for the GPO muxmode.
A set of SoC level registers (CTRLMMR_ICSS[2:0]_CTRL[2:0]) are used to determine the behavior of each GPO mode pin. When a register’s [19-0]GPM_BIDI bit field is set to 0h (default value), the corresponding GPO pin operates only as an output when the GPO multiplexing mode is selected and is driven with the R30 bit value. The corresponding GPI signal (PRUSS GPI<n> input, where n = 0 to 19) is driven low. When a register’s [19-0]GPM_BIDI bit field is set to 1h, the corresponding ICSS_DIGIO_DATA_OUT_EN_REG[31-0] DATA_OUT_EN bit field is used to control the GPO output buffer. If [31-0] DATA_OUT_EN bit field is set to 0h the output is driven and the pin acts as a GPO. If [31-0] DATA_OUT_EN bit field is set to 1h the output is disabled and the pin acts as a GPI.
The PRU[1:0]_GPM[19:0] output signals are propagated to the PRG_PRU[1:0]_GPO[19:0] pins using Muxmode 0 function and the PRU[1:0]_GPN[19:0] input signals are propagated to the PRG_PRU[1:0]_GPI[19:0] pins using Muxmode 1 function. Any GPO (Muxmode 0 function) can be made bidirectional by setting the corresponding bit field [19-0]GPM_BIDI in CTRLMMR_ICSS_CTRL[2:0] register.