XMC™ Forum Discussions
text.format{('custom.tabs.no.results')}
Sort by:
XMC™
HelloThe trouble is that on the board KIT_XMC48_RELAX_ECAT_V1 it is impossible to activate any CAN nodes, except Node 1, for which a transceiver is pr...
Show More
Hello
The trouble is that on the board KIT_XMC48_RELAX_ECAT_V1 it is impossible to activate any CAN nodes, except Node 1, for which a transceiver is provided on the board.
I use DAVE IDE and MULTICAN_CONFIG application to configure CAN Nodes. Its no issues with Node 1,
it works properly, but i cant see any tx data on the oscilloscope from any other node (0,2,3,4,5) with
identity settings (exept gpio, of course).
In loopback mode, information is received from all nodes, however, in normal operation, data
transmitted only from node 1 while the configuration of the remaining nodes is absolutely identical.
All gpiol pins, assigned to other nodes, are not occupied by any other resources.
The correct configuration of the pins is verified with datasheet values of the RXSEL, and its fully consistent with the
MULTICAN_CONFIG configuration-based generated code.
I dont see any reasons to block data stream from nodes 0,2,3,4,5 in XMC4800 datasheet.
So, is it possible to work with more then one CAN node (and that node is Node 1) on KIT_XMC48_RELAX_ECAT_V1? Pay attention on
that i trying to make CAN rx and CAN tx gpio work, of course i will attach it to the external tranciever after success. Show Less
The trouble is that on the board KIT_XMC48_RELAX_ECAT_V1 it is impossible to activate any CAN nodes, except Node 1, for which a transceiver is provided on the board.
I use DAVE IDE and MULTICAN_CONFIG application to configure CAN Nodes. Its no issues with Node 1,
it works properly, but i cant see any tx data on the oscilloscope from any other node (0,2,3,4,5) with
identity settings (exept gpio, of course).
In loopback mode, information is received from all nodes, however, in normal operation, data
transmitted only from node 1 while the configuration of the remaining nodes is absolutely identical.
All gpiol pins, assigned to other nodes, are not occupied by any other resources.
The correct configuration of the pins is verified with datasheet values of the RXSEL, and its fully consistent with the
MULTICAN_CONFIG configuration-based generated code.
I dont see any reasons to block data stream from nodes 0,2,3,4,5 in XMC4800 datasheet.
So, is it possible to work with more then one CAN node (and that node is Node 1) on KIT_XMC48_RELAX_ECAT_V1? Pay attention on
that i trying to make CAN rx and CAN tx gpio work, of course i will attach it to the external tranciever after success. Show Less
XMC™
We are using multiple IN EPs in our design. I configure the endpoints in the USB_Descriptor_Configuration_t configuration_descriptor in Dave/Generated...
Show More
We are using multiple IN EPs in our design. I configure the endpoints in the USB_Descriptor_Configuration_t configuration_descriptor in Dave/Generated/USBD_WINUSB/winusb/descriptors.c and h file.
The endpoints show up ok in Windows but communication on other EPs than the first does not work (data gets stuck in the EP, USBD_Endpoint_t ep->InInUse is true).
Using the same number of endpoints on a competitor MCU works with no issues using the same test application in Windows.
The reported error in Windows is: ERROR_GEN_FAILUE 31 (ox1F) A device attached to the sustem is not functioning.
Communication on the first endpoint is working well.
Any ideas what could be causing this behaviour?
This is the winusb configuration:
.winusb_interface =
{
.Header = {.Size = sizeof(USB_Descriptor_Interface_t),
.Type = DTYPE_Interface},
.InterfaceNumber = 0,
.AlternateSetting = 0,
.TotalEndpoints = 3,
.Class = USB_CSCP_VendorSpecificClass,
.SubClass = USB_CSCP_NoDeviceSubclass,
.Protocol = USB_CSCP_NoDeviceProtocol,
.InterfaceStrIndex = NO_DESCRIPTOR
},
This is the configurations of the IN EPs
.winusb_data_in_endpoint =
{
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t),
.Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DIR_IN | WINUSB_TX_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = WINUSB_TXRX_EPSIZE,
.PollingIntervalMS = 0x00
}
.winusb_data_in2_endpoint =
{
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t),
.Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DIR_IN | WINUSB_TX2_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = WINUSB_TXRX_EPSIZE,
.PollingIntervalMS = 0x00
}
WINUSB_TXRX_EPSIZE is 64
WINUSB_TX1_EPNUM is 2
WINUSB_TX2_EPNUM is 3
typedef struct
{
USB_Descriptor_Configuration_Header_t config;
USB_Descriptor_Interface_t winusb_interface;
USB_Descriptor_Endpoint_t winusb_data_out_endpoint;
USB_Descriptor_Endpoint_t winusb_data_in_endpoint;
USB_Descriptor_Endpoint_t winusb_data_in2_endpoint;
} USB_Descriptor_Configuration_t; Show Less
The endpoints show up ok in Windows but communication on other EPs than the first does not work (data gets stuck in the EP, USBD_Endpoint_t ep->InInUse is true).
Using the same number of endpoints on a competitor MCU works with no issues using the same test application in Windows.
The reported error in Windows is: ERROR_GEN_FAILUE 31 (ox1F) A device attached to the sustem is not functioning.
Communication on the first endpoint is working well.
Any ideas what could be causing this behaviour?
This is the winusb configuration:
.winusb_interface =
{
.Header = {.Size = sizeof(USB_Descriptor_Interface_t),
.Type = DTYPE_Interface},
.InterfaceNumber = 0,
.AlternateSetting = 0,
.TotalEndpoints = 3,
.Class = USB_CSCP_VendorSpecificClass,
.SubClass = USB_CSCP_NoDeviceSubclass,
.Protocol = USB_CSCP_NoDeviceProtocol,
.InterfaceStrIndex = NO_DESCRIPTOR
},
This is the configurations of the IN EPs
.winusb_data_in_endpoint =
{
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t),
.Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DIR_IN | WINUSB_TX_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = WINUSB_TXRX_EPSIZE,
.PollingIntervalMS = 0x00
}
.winusb_data_in2_endpoint =
{
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t),
.Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DIR_IN | WINUSB_TX2_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = WINUSB_TXRX_EPSIZE,
.PollingIntervalMS = 0x00
}
WINUSB_TXRX_EPSIZE is 64
WINUSB_TX1_EPNUM is 2
WINUSB_TX2_EPNUM is 3
typedef struct
{
USB_Descriptor_Configuration_Header_t config;
USB_Descriptor_Interface_t winusb_interface;
USB_Descriptor_Endpoint_t winusb_data_out_endpoint;
USB_Descriptor_Endpoint_t winusb_data_in_endpoint;
USB_Descriptor_Endpoint_t winusb_data_in2_endpoint;
} USB_Descriptor_Configuration_t; Show Less
XMC™
Hello everyone,I have a simple task -> transmit data uint16_t srcBuffer[1024] -> UART at 1Mbod speed.I took example "DMA003_USIC" from this thread MEMORY->UART...
Show More
Hello everyone,
I have a simple task -> transmit data
uint16_t srcBuffer[1024] -> UART at 1Mbod speed.
I took example "DMA003_USIC" from this thread
MEMORY->UART
I migrate it to my XMC4500 Relax Kit, create TestArray by srcBuffer=16*i+1 and catch transmitted data by Realterm.
Data transmitted regularly through UART, but their integrity is NOT OK.
Approximately first 30 words transmitted fine, but then some amount of data missed, and so on.
I have impression that something wrong with handshake, so FIFO buffer is overwritten on some reason.
BR
K Show Less
I have a simple task -> transmit data
uint16_t srcBuffer[1024] -> UART at 1Mbod speed.
I took example "DMA003_USIC" from this thread
MEMORY->UART
I migrate it to my XMC4500 Relax Kit, create TestArray by srcBuffer=16*i+1 and catch transmitted data by Realterm.
Data transmitted regularly through UART, but their integrity is NOT OK.
Approximately first 30 words transmitted fine, but then some amount of data missed, and so on.
I have impression that something wrong with handshake, so FIFO buffer is overwritten on some reason.
BR
K Show Less
XMC™
Hello,I´m trying to receive an extern interrupt.I used Dave APPs(- EventDedector ; EventGenerator; NVIC; DIGITAL IO)I never get into the service routi...
Show More
Hello,
I´m trying to receive an extern interrupt.
I used Dave APPs(- EventDedector ; EventGenerator; NVIC; DIGITAL IO)
I never get into the service routine... I used example : XMC4500_RelaxKit_ERU_ISR
Its not working on XMC4300 Board with button 2 but i changed it to a other Pin.
Im using a jumper wire (3,3V - Pin0.6) but without getting in InterruptService Routine....
Someone have experience with that case ????? Show Less
I´m trying to receive an extern interrupt.
I used Dave APPs(- EventDedector ; EventGenerator; NVIC; DIGITAL IO)
I never get into the service routine... I used example : XMC4500_RelaxKit_ERU_ISR
Its not working on XMC4300 Board with button 2 but i changed it to a other Pin.
Im using a jumper wire (3,3V - Pin0.6) but without getting in InterruptService Routine....
Someone have experience with that case ????? Show Less
XMC™
Using the PWM app in Dave, I see that the compare value is dependent on the Frequency and the the duty cycle.
How is this calculated?
How is this calculated?
XMC™
CCU42 on XMC 4100 (or 4200)
Solved
I wanted to use CCU42 on the XMC 4100 for a timer (having previously got this working on CCU40) . I tried to run the example project in XMClib for th...
Show More
I wanted to use CCU42 on the XMC 4100 for a timer (having previously got this working on CCU40) . I tried to run the example project in XMClib for the XMC4500, however I get the error " 'CCU42_CC43' undeclared (first use in this function)"
Investigating further I found CCU42_CC43 is defined in XMC_Peripheral_Library_v2.1.24/CMSIS/Infineon/XMC4500_series/Include/XMC4500.h , but in the same file for the XMC4100 or XMC4200 there are only definitions for CCU40 and CCU41.
I am wondering why there wouldn't be definitions for CCU42 and CCU43 for these micro controllers. Is there another way to use these CCUs?
Thank you for any help or information Show Less
Investigating further I found CCU42_CC43 is defined in XMC_Peripheral_Library_v2.1.24/CMSIS/Infineon/XMC4500_series/Include/XMC4500.h , but in the same file for the XMC4100 or XMC4200 there are only definitions for CCU40 and CCU41.
I am wondering why there wouldn't be definitions for CCU42 and CCU43 for these micro controllers. Is there another way to use these CCUs?
Thank you for any help or information Show Less
XMC™
I'm using the Dave app ADC_MEASUREMENT_ADV.One of the channels has a FIFO of 4 stages. Can I trigger an event interrupt when that channel's ADC FIFO i...
Show More
I'm using the Dave app ADC_MEASUREMENT_ADV.
One of the channels has a FIFO of 4 stages. Can I trigger an event interrupt when that channel's ADC FIFO is half way full?
Cheers Show Less
One of the channels has a FIFO of 4 stages. Can I trigger an event interrupt when that channel's ADC FIFO is half way full?
Cheers Show Less
XMC™
Hi, I wold like to select an external oscillator for XMC4800 device.I want to use the DSX321G with the following specification.https://www.kds.info/product/dsx321g/...
Show More
Hi,
I wold like to select an external oscillator for XMC4800 device.
I want to use the DSX321G with the following specification.
https://www.kds.info/product/dsx321g/
My application is ESC controller for robot.
Could you tell me if this oscillator can satisfy this application?
Thanks. Show Less
I wold like to select an external oscillator for XMC4800 device.
I want to use the DSX321G with the following specification.
https://www.kds.info/product/dsx321g/
My application is ESC controller for robot.
Could you tell me if this oscillator can satisfy this application?
Thanks. Show Less
XMC™
Hi,Is it possible to synchronize the conversion between 2 ADC_MEASUREMENT_ADV Dave apps?I see "Sync. Conversion" tab but not sure how to use it. Is th...
Show More
Hi,
Is it possible to synchronize the conversion between 2 ADC_MEASUREMENT_ADV Dave apps?
I see "Sync. Conversion" tab but not sure how to use it. Is there an app note perhaps?
Using XMC1400 series.
Cheers! Show Less
Is it possible to synchronize the conversion between 2 ADC_MEASUREMENT_ADV Dave apps?
I see "Sync. Conversion" tab but not sure how to use it. Is there an app note perhaps?
Using XMC1400 series.
Cheers! Show Less
XMC™
Hello, everyone.I have a question about XMC4200 CAN bit timing.Could you please guide me, how can I switch it at runtime?Specially, if my hardware is ...
Show More
Hello, everyone.
I have a question about XMC4200 CAN bit timing.
Could you please guide me, how can I switch it at runtime?
Specially, if my hardware is already initialized by DAVE's init functions.
Namely, I need to reinit my CANs from 83333 to 500000.
Here is my code, which does not work:
This is usage example:
NOTE: my CANs works fine at 83333, I have to update
in main.c before DAVE_Init(), because GUI does not allow to set CAN's baudrate less than 100k.
It also works fine at 500000 baud, if inited by DAVE_Init().
Now the method, which I use to check how it works:
I add 2 MOs on my CANs: CAN1, CAN2, one for receive and transmit respectively.
Then I add Rx and Tx events on needed MOs and link them to corresponding INTERRUPTs.
When I do so, and enable these INTERRUPTs, they start to occur and receive CAN frames as I expect.
I'm sending packets every 10 ms and all of them are received.
This works fine with settings inited by GUI both at 83333 and 500000 bauds.
But do not work when I try to switch baudrate. At least INTERRUPTs do not occurs.
For example, I'm starting to send infinit number of frames at 500000 baud/s, and while CAN initialized at 83333 it obviously does not receive anything. But when CAN switches to 500000 it still does not receive anything. Show Less
I have a question about XMC4200 CAN bit timing.
Could you please guide me, how can I switch it at runtime?
Specially, if my hardware is already initialized by DAVE's init functions.
Namely, I need to reinit my CANs from 83333 to 500000.
Here is my code, which does not work:
void CANxUpdateBaudrate( const CAN_NODE_t* handle, uint32_t baudrate )
{
//Disable CAN node participation in CAN traffic
XMC_CAN_NODE_SetInitBit(handle->node_ptr);
//Function to configure the baud rate based on UI configuration
//Keep sample_point and sjw as they was before, update baudrate.
CAN_NODE_ConfigBaudrate(handle, baudrate, handle->baudrate_config->sample_point, handle->baudrate_config->sjw);
//Enable CAN node participation in CAN traffic
XMC_CAN_NODE_ResetInitBit(handle->node_ptr);
}
This is usage example:
CANxUpdateBaudrate( &CAN1, 500000 );
NOTE: my CANs works fine at 83333, I have to update
CAN1_BitTimeConfig.baudrate = 83333;
CAN2_BitTimeConfig.baudrate = 83333;
in main.c before DAVE_Init(), because GUI does not allow to set CAN's baudrate less than 100k.
It also works fine at 500000 baud, if inited by DAVE_Init().
Now the method, which I use to check how it works:
I add 2 MOs on my CANs: CAN1, CAN2, one for receive and transmit respectively.
Then I add Rx and Tx events on needed MOs and link them to corresponding INTERRUPTs.
When I do so, and enable these INTERRUPTs, they start to occur and receive CAN frames as I expect.
I'm sending packets every 10 ms and all of them are received.
This works fine with settings inited by GUI both at 83333 and 500000 bauds.
But do not work when I try to switch baudrate. At least INTERRUPTs do not occurs.
For example, I'm starting to send infinit number of frames at 500000 baud/s, and while CAN initialized at 83333 it obviously does not receive anything. But when CAN switches to 500000 it still does not receive anything. Show Less