Only one POSIF unit mapped to XMC1400 with VQFN48 package

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
Hello Guys,

while creating schematic with the XMC1400 I experienced a problem with the VQFN48 package. In the datasheet on page 11 it tells me that the XMC1402-Q048 has got two POSIF units. BUT by comparing the Pinout on page 24 with the I/O mapping on page 34 and 36 one can see that POSIF1 is only mapped to P1.6/P1.7/P1.8 (for POSIF1A) or P4.1/P4.2/P4.3 (for POSIF1B). From all these ports only P1.6 is available with the VGFN48 package.

In the general documentation of the POSIF unit there is a MUX where POSIF1 A-D should be available. But lines C and D I cannot find in the documentation for XMC1400.

I hope i didn't get anything wrong. So is there any way of using this second POSIF unit (e.g. connecting two quadrature encoders) to the XMC1400 with the VQFN48 package or is there an Error in the documentation.

thanks in advance for your help

Jakob
0 Likes
2 Replies
jferreira
Employee
Employee
10 sign-ins 5 sign-ins First like received
Hi,

The POSIF1 can use as inputs:
POSIF1.IN0: (P1.8), (P4.1), ERU1.PDOUT0
POSIF1.IN1: (P1.7), (P4.2), ERU1.PDOUT1
POSIF1.IN2: P1.6, (P4.3), ERU1.PDOUT2

The ones in parethesis are not available in Q48.
But using the ERU you can extend the connectivity. See code snippet below.

Regards,
Jesus

#include 
#include
#include

// Makes P3_0 available as POSIF1.IN1D using ERU

const XMC_ERU_ETL_CONFIG_t eru_etl_config =
{
.input_a = ERU1_ETL0_INPUTA_P3_0,
.source = XMC_ERU_ETL_SOURCE_A,
.status_flag_mode = true,
.edge_detection =XMC_ERU_ETL_EDGE_DETECTION_RISING
};

const XMC_ERU_OGU_CONFIG_t eru_ogu_config =
{
.enable_pattern_detection = true,
.pattern_detection_input = XMC_ERU_OGU_PATTERN_DETECTION_INPUT0
};

int main(void)
{

XMC_ERU_ETL_Init(XMC_ERU1, 0, &eru_etl_config);
XMC_ERU_OGU_Init(XMC_ERU1, 1, &eru_ogu_config);

/* Placeholder for user application code. The while loop below can be replaced with user application code. */
while(1U)
{

}
}
0 Likes
Not applicable
Thanks for the quick answer, that's really helpful!
0 Likes