XMC™ Forum Discussions
Hello
I want to use the XMC family of microcontrollers (xmc1000 and xmc4000) but I only have J-Link BASE and J-Link EDU Mini programmer, I have two questions.
- Can I use any of these two programmers with the XMC family? -
Where can I find the programming pins of these microcontrollers?
Thanks for the help
Show LessHi,
I followed this link to enable XMC_DEBUG/printf() function.
However, I got this error at the end. Can you guide me to resolve this? Thank you
<Error content>
"\"C:\\Infineon\\Tools\\DAVE IDE\\4.5.0.202105191637\\eclipse\\ARM-GCC-49\\bin\\make\"" --output-sync -j8 all
arm-none-eabi-gcc: fatal error: c:/infineon/tools/dave ide/4.5.0.202105191637/eclipse/arm-gcc-49/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/nosys.specs: attempt to rename spec 'link_gcc_c_sequence' to already defined spec 'nosys_link_gcc_c_sequence'
'Building target: 1300_LC.elf'
compilation terminated.
'Invoking: ARM-GCC C Linker'
make: *** [1300_LC.elf] Error 1
"C:/Infineon/Tools/DAVE IDE/4.5.0.202105191637/eclipse/ARM-GCC-49/bin/arm-none-eabi-gcc" -T"../linker_script.ld" -nostartfiles -Xlinker --gc-sections -specs=nano.specs -specs=nosys.specs -u _printf_float -u _scanf_float -Wl,-Map,"1300_LC.map" -specs=rdimon.specs -specs=nosys.specs -mcpu=cortex-m0 -mthumb -g -gdwarf-2 -o "1300_LC.elf" "@objects.rsp" -lm
makefile:54: recipe for target '1300_LC.elf' failed
Hi, I would like to know what is the expected total ADC error rate for the part number XMC1402Q048X0032AAXUMA1.Along with that I would Iike to know whether the error rate is after calibration is done or not.
Show LessHello everyone,
I am trying to make the following code run. After building there seems to be no error and everything looks fine.
#include <DAVE.h>
// int8_t RxBuffer[64] = { 0 };
// int8_t TxBuffer[64] = { 0 };
uint8_t Bytes;
uint32_t event_count;
uint32_t result_Isignal;
uint32_t i = 0;
bool Isignalstatus = 0;
int8_t TxBuffer[64];
int main(void)
{
DAVE_STATUS_t status;
status = DAVE_Init();
if (status == DAVE_STATUS_FAILURE)
{
XMC_DEBUG(("DAVE Apps initialization failed with status %d\n", status));
while (1U)
{
}
}
if(USBD_VCOM_Connect() != USBD_VCOM_STATUS_SUCCESS)
{
return -1;
}
while(!USBD_VCOM_IsEnumDone());
ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0);
while (1U)
{
if (Isignalstatus==1)
{
sprintf(TxBuffer,"\n\rResult=%d",result_Isignal);
for(int i=0;TxBuffer != '\0';i++)
{
USBD_VCOM_SendByte(TxBuffer);
CDC_Device_USBTask(&USBD_VCOM_0);
}
Isignalstatus = 0;
}
}
return 1;
}
void Time_Interval_Event(void)
{
/* Acknowledge Period Match interrupt generated on TIMER_CCU_1 */
TIMER_ClearEvent(&TIMER_0);
ADC_MEASUREMENT_StartConversion(&ADC_MEASUREMENT_0);
}
/*End of measurements interrupt*/
void Adc_Measurement_Handler(void)
{
/*Read out conversion results*/
result_Isignal = ADC_MEASUREMENT_GetResult(&ADC_MEASUREMENT_Channel_A_handle);
Isignalstatus = 1;
}
/*
{
Bytes = USBD_VCOM_BytesReceived();
if (Bytes)
{
USBD_VCOM_ReceiveByte(&RxBuffer[0]);
USBD_VCOM_SendByte(RxBuffer[0]);
}
CDC_Device_USBTask(&USBD_VCOM_cdc_interface);
}
return 1;
}
*/
Now my XMC4500 is connected to my laptop. After debugging I on
I can't run the code after debugging as you can see. Also When Using Teraterm (instead of putty) there is no data flow.
Best regards 🙂
Show LessI want to communicate over SPI with 16MHz.
The issue is that there is an isolation IC with a 32nsec propagation delay between the master (XMC4800) and slave device.
1. Master delay compensation did not work on my first attempt. USIC AI.008 provides an explanation for why the "close loop delay compensation" does not working. Still not fixed?
2. The datasheet describes that sharp edge (A2) pads rise/fall time 3.7nsec. In my testing the "strong driver sharp edge" pads faster than "strong driver soft edge", but still rise/fall time about 20 nsec. I miss something?
Best Regards...
Show LessI have downloaded all required software for the XMC Flasher (Java JRE 18.0.2) as well as Segger JLink but when I attempt to run the XMC Flasher from both the developer center, as well as the file installation location I am receiving a Java Exception. I have attempted to run this from windows powershell as well and I also receive an error of: Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application.
I'm not exactly sure what to do at this point, so any help will be appreciated.
Show LessLooking for Microcontroller with 2 ethernet, 2 RS485, 3 MODBUS, 12 Analog input, 42 digital IO, Analog 6no. Please suggest
Industrial Microcontroller.
Show LessDear sir:
I am using DAVE to develope a programme for XMC4000, using it to perform some data processing using CMSIS. Using float32 to calculate data will meet significant calculation error. May I possible to update the dave's app CMSIS to its latest version 1.10, so many newer fuctions will be available. Thanks so much.
regards.
Show LessHi,
I'd like to trigger interrupts on pins 2.1, 2.2 and 2.3 on a XMC 1300 eval board (boot kit).
The interrupts should be triggered on any edge of an external digital signal connected to the pins.
Pins 2.2 and 2.3 work, but 2.1 does not trigger any interrupt.
Is it possible at all to configure this setup and if, how?
Inside the "ERU Application Note" (V1.0, 2015-07) in section 5.3 there are only ERU0 mappings for pins 2.2 and 2.3 mentioned, however in the "Reference Manual XMC1300 AB-Step" (V1.3 2016-08) in table 23-14 there is also ERU0.1B0 mentioned for pin 2.1.
(Note that the ERU application note states pin 0.9 for ERU0.1B0 while the reference manual says 0.9 has no ERU connection at all and the ERU0.1B0 would be connected to 2.1).
I'm using the XMClib directly, i.e. without the graphical DAVE apps. So far my configuration looks like that:
/* === configuration ==== */
static const XMC_ERU_ETL_CONFIG_t eru_config_p21 =
{
.input = (ERU0_ETL1_INPUTB_P2_1 << 2), // input seems broken for source B
.source = XMC_ERU_ETL_SOURCE_B
.edge_detection = XMC_ERU_ETL_EDGE_DETECTION_BOTH,
.status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_HWCTRL,
.enable_output_trigger = true,
.output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL0,
};
static const XMC_ERU_ETL_CONFIG_t eru_config_p22 =
{
.input = (ERU0_ETL0_INPUTB_P2_2 << 2),
.source = XMC_ERU_ETL_SOURCE_B,
.edge_detection = XMC_ERU_ETL_EDGE_DETECTION_BOTH,
.status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_HWCTRL,
.enable_output_trigger = true,
.output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL1,
};
static const XMC_ERU_ETL_CONFIG_t eru_config_p23 =
{
.input = (ERU0_ETL1_INPUTB_P2_3 << 2),
.source = XMC_ERU_ETL_SOURCE_B,
.edge_detection = XMC_ERU_ETL_EDGE_DETECTION_BOTH,
.status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_HWCTRL,
.enable_output_trigger = true,
.output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL2,
};
static const XMC_ERU_OGU_CONFIG_t eru_ogu_config =
{
.enable_pattern_detection = false,
.peripheral_trigger = XMC_ERU_OGU_PERIPHERAL_TRIGGER2,
.service_request = XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER,
};
/* === ISR === */
static void ERU0_0_IRQHandler(void)
{ // not executed
...
}
static void ERU0_0_IRQHandler(void)
{ // executed
...
}
static void ERU0_0_IRQHandler(void)
{ // executed
...
}
/* === Initialization === */
void eru_init(void)
{
XMC_ERU_ETL_Init(ERU0_ETL1, &eru_config_p21);
XMC_ERU_ETL_Init(ERU0_ETL0, &eru_config_p22);
XMC_ERU_ETL_Init(ERU0_ETL1, &eru_config_p23);
XMC_ERU_OGU_Init(ERU0_OGU1, &eru_ogu_config);
XMC_ERU_OGU_Init(ERU0_OGU2, &eru_ogu_config);
XMC_ERU_OGU_Init(ERU0_OGU3, &eru_ogu_config);
NVIC_SetPriority(ERU0_0_IRQn, (3U));
NVIC_SetPriority(ERU0_1_IRQn, (3U));
NVIC_SetPriority(ERU0_2_IRQn, (3U));
NVIC_EnableIRQ(ERU0_0_IRQn);
NVIC_EnableIRQ(ERU0_1_IRQn);
NVIC_EnableIRQ(ERU0_2_IRQn);
XMC_SCU_INTERRUPT_SetEventHandler(ERU0_0_IRQn, &ERU0_0_IRQHandler);
XMC_SCU_INTERRUPT_SetEventHandler(ERU0_1_IRQn, &ERU0_1_IRQHandler);
XMC_SCU_INTERRUPT_SetEventHandler(ERU0_2_IRQn, &ERU0_2_IRQHandler);
}
Would be great if someone could enlighten me here! 🙂
Kind regards,
nfr