XMC4300 failures over EtherCAT

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

cross mob
User18219
Level 1
Level 1
Hello,
I developed custom board for large printing machine based on EtherCAT.
In this board there is XMC4300 and FPGA, the XMC4300 is used as a bridge between the EtherCAT network and the logic that runs by the FPGA.
The FW in the XMC4300 is very simple - every EtherCAT cycle the XMC4300 send the PDO received to the FPGA and send back to the netwrok the PDI basedon data received using SPI.

The EtherCAT master is TwinCAT running on Beckhoff PLC, cycle time is 1mSec using DC.
I use the SSC 5.12 and the Infineon sample with the minimal changes, DAVE version 4.4.2.

In the machine I have 130 EtherCAT nodes and randomly every 1-2 hours I have one board that is available on the EtherCAT bus but does not exchange data with the master, the network continue to work, and the EtherCAT error LED is solid, which means that there was a PDO that was not read by the CPU.
The failed board could not be reset by EtherCAT network reset, but requires cycle power (I can not wait with debugger because of the large number of boards which falls randomly).

In order to understand the problem source I use the ARM exception procedures and once the CPU gets into exception it periodically sends the 16 words of the exception stack to the UART. Then I can read it by serial terminal, and go back to the .lst file to look for the exception source.
The exception function that the CPU is looping during this freeze is "BusFault_Handler" and back to the .lst file I can see that the exception source is in the code array of the "ECAT_Main", "MBX_Main" "HW_GetALEventRegister" and other functions in this array.

There are no branches in my code, no arithmetic and it is not running from the interrupt - in the "process_app" I copy the data into FW variables and run it from the main()

Please help me overcome this issue
Thanks
Gal Lior
0 Likes
0 Replies