Dec 07, 2020
04:14 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 07, 2020
04:14 AM
I use CANoe(Vector) and TC387 for developping.
If I set fastBaudRate as 2000000(2M), I faced to "The filter for the NACK error frames has been enabled!" msg on CANoe after several packets were received in TC387.
Here is description of msg in CANoe.
-----------------------------------------------------
The filter for the NACK error frames has been enabled!
For the CAN channel the NACK error frame filter was activated.
The filter is activated when the transmission error counter ≥ 128 and the transmitter is in error passive state.
-----------------------------------------------------
In case of 1000000(1M), it works ok. (fpbs -> 1000000)
Here is my setting. IfxCan_getModuleFrequency() return 80.0*e.6. (80MHz)
------------------------------------------------------
fbps = 2000000; // 2M
bps = 500000; // 500K
canNodeConfig.fastBaudRate.baudrate = fbps; /* up to 5 MBaud for CAN FD */
canNodeConfig.fastBaudRate.tranceiverDelayOffset = (uint8)(fbps/bps); /* we set an estimated value */
canNodeConfig.baudRate.baudrate = bps; /* up to 1 MBaud for standard CAN */
canNodeConfig.frame.mode = IfxCan_FrameMode_fdLongAndFast;
g_Can.canNode[nodeNumber].frameMode = IfxCan_FrameMode_fdLongAndFast;
canNodeConfig.clockSource = IfxCan_ClockSource_both;
------------------------------------------------------
What can I do check to operate CAN FD as 2M??
If I set fastBaudRate as 2000000(2M), I faced to "The filter for the NACK error frames has been enabled!" msg on CANoe after several packets were received in TC387.
Here is description of msg in CANoe.
-----------------------------------------------------
The filter for the NACK error frames has been enabled!
For the CAN channel the NACK error frame filter was activated.
The filter is activated when the transmission error counter ≥ 128 and the transmitter is in error passive state.
-----------------------------------------------------
In case of 1000000(1M), it works ok. (fpbs -> 1000000)
Here is my setting. IfxCan_getModuleFrequency() return 80.0*e.6. (80MHz)
------------------------------------------------------
fbps = 2000000; // 2M
bps = 500000; // 500K
canNodeConfig.fastBaudRate.baudrate = fbps; /* up to 5 MBaud for CAN FD */
canNodeConfig.fastBaudRate.tranceiverDelayOffset = (uint8)(fbps/bps); /* we set an estimated value */
canNodeConfig.baudRate.baudrate = bps; /* up to 1 MBaud for standard CAN */
canNodeConfig.frame.mode = IfxCan_FrameMode_fdLongAndFast;
g_Can.canNode[nodeNumber].frameMode = IfxCan_FrameMode_fdLongAndFast;
canNodeConfig.clockSource = IfxCan_ClockSource_both;
------------------------------------------------------
What can I do check to operate CAN FD as 2M??
Solved! Go to Solution.
1 Solution
Dec 15, 2020
07:46 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 15, 2020
07:46 PM
I found out the reason why my issue. Thanks for all advices above!
The point was 'Sample Point' setting.
After matching that setting, CAN communication works ok in 2Mbits/s.
The point was 'Sample Point' setting.
After matching that setting, CAN communication works ok in 2Mbits/s.
6 Replies
Dec 07, 2020
07:44 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 07, 2020
07:44 AM
Check what is the source clock for CAN peripheral ? Is it peripheral PLL ?
TC3xx Peripheral PLL clock source is close enough for 1 Mbps and slower,but not for CAN FD.
Also review below thread, this has similar issue what I faced earlier
https://www.infineonforums.com/threads/12018-Tolerance-Deviation-of-Peripheral-PLL-%28fpll1%29-TC377...
TC3xx Peripheral PLL clock source is close enough for 1 Mbps and slower,but not for CAN FD.
Also review below thread, this has similar issue what I faced earlier
https://www.infineonforums.com/threads/12018-Tolerance-Deviation-of-Peripheral-PLL-%28fpll1%29-TC377...
Dec 10, 2020
09:33 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 10, 2020
09:33 PM
I used KIT_A2G_TC387_3V3_TRB and it is a fixed crystal with 20MHz assembled.
If I change clockSource from IfxCan_ClockSource_both to IfxCan_ClockSource_synchronous, then system is stucked.
IfxCan_Node_enableConfigurationChange is not return in IfxCan_Can_initNode.
Do I have to change crystal ?
Here is clock setting of B'd.
IfxScuCcu_defaultClockConfig = (
pllInitialStepConfig = (
pllsParameters = (
xtalFrequency = 20000000,
pllInputClockSelection = IfxScuCcu_PllInputClockSelection_fOsc0,
sysPllConfig = (pDivider = 0, nDivider = 29, k2Divider = 5),
perPllConfig = (pDivider = 0, nDivider = 31, k2Divider = 1, k3Divider = 1, k3DividerBypass = 0)),
waitTime = 199.99999e-6),
sysPllThrottleConfig = (
numOfSteps = 3,
pllSteps = 0x8000A86C -> (
k2Step = 3,
waitTime = 99.999997e-6)),
clockDistribution = (
ccucon0 = (value = 119734547, mask = 268374015),
ccucon1 = (value = 554762770, mask = 1061097407),
ccucon2 = (value = 4609, mask = 16143),
ccucon5 = (value = 50, mask = 255),
ccucon6 = (value = 0, mask = 63),
ccucon7 = (value = 0, mask = 63),
ccucon8 = (value = 0, mask = 63),
ccucon9 = (value = 0, mask = 63)),
flashFconWaitStateConfig = 0x80000260,
modulationConfig = 0x80000268 -> (
Mod_Enable = IfxScuCcu_ModEn_disabled,
Mod_Amp = IfxScuCcu_ModulationAmplitude_0p5))
If I change clockSource from IfxCan_ClockSource_both to IfxCan_ClockSource_synchronous, then system is stucked.
IfxCan_Node_enableConfigurationChange is not return in IfxCan_Can_initNode.
Do I have to change crystal ?
Here is clock setting of B'd.
IfxScuCcu_defaultClockConfig = (
pllInitialStepConfig = (
pllsParameters = (
xtalFrequency = 20000000,
pllInputClockSelection = IfxScuCcu_PllInputClockSelection_fOsc0,
sysPllConfig = (pDivider = 0, nDivider = 29, k2Divider = 5),
perPllConfig = (pDivider = 0, nDivider = 31, k2Divider = 1, k3Divider = 1, k3DividerBypass = 0)),
waitTime = 199.99999e-6),
sysPllThrottleConfig = (
numOfSteps = 3,
pllSteps = 0x8000A86C -> (
k2Step = 3,
waitTime = 99.999997e-6)),
clockDistribution = (
ccucon0 = (value = 119734547, mask = 268374015),
ccucon1 = (value = 554762770, mask = 1061097407),
ccucon2 = (value = 4609, mask = 16143),
ccucon5 = (value = 50, mask = 255),
ccucon6 = (value = 0, mask = 63),
ccucon7 = (value = 0, mask = 63),
ccucon8 = (value = 0, mask = 63),
ccucon9 = (value = 0, mask = 63)),
flashFconWaitStateConfig = 0x80000260,
modulationConfig = 0x80000268 -> (
Mod_Enable = IfxScuCcu_ModEn_disabled,
Mod_Amp = IfxScuCcu_ModulationAmplitude_0p5))
Dec 10, 2020
11:04 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 10, 2020
11:04 PM
Even though I changed CLKSELMCAN of SCU_CCUCON1 to "fOSC0", this issue still occured. fOSC0 is 20MHz (XTTAL) as I said before.
Let me explain the issue detail below.
If I send CAN FD via 2Mbps with BRS on, then I can see that some eeor has occurred through a specific register below.
-> ECR : REC value is increased
-> PSR : LEC is changed to "Form_Error"
-> IR : PEA is changed to 1
And I found out the supported baudrate table in Infineon-AURIX_TC3xx_Part1-UserManual-v01_00-EN.pdf (ver 1.5.0, 2020-04).
Max BaudRate is 1000kBits/s. Table 56. Possible Baudrate and FOSC frequency combinations.
I'm so confused TC387 support 2MBits/s or not.
Let me explain the issue detail below.
If I send CAN FD via 2Mbps with BRS on, then I can see that some eeor has occurred through a specific register below.
-> ECR : REC value is increased
-> PSR : LEC is changed to "Form_Error"
-> IR : PEA is changed to 1
And I found out the supported baudrate table in Infineon-AURIX_TC3xx_Part1-UserManual-v01_00-EN.pdf (ver 1.5.0, 2020-04).
Max BaudRate is 1000kBits/s. Table 56. Possible Baudrate and FOSC frequency combinations.
I'm so confused TC387 support 2MBits/s or not.
Dec 11, 2020
02:49 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 11, 2020
02:49 AM
You can check your environment with the TriBoard Demo Software. The demo software can be downloaded from myicp.
When this software runs on your device, you can open a shell:
Connect the board to your PC via USB (make sure that the DAS server and drivers are installed, see DAS http://www.infineon.com/das
Now you should have a serial port for the board, maybe look in the device manager for COM number
Open any terminal program, use the COM port from your board with 115200 baud, 8 data bits, 1 stop bit, no flow.
In the terminal you should have access to the shell of the demo software. command help will show the available commands.
For CAN (execute the following commands):
caninit 2000000 -> this command initialize all can nodes to 2MB, only the two connected can nodes on the board are connected to pins all other can nodes are initialized in loopback mode
cannodeinit x y [lb] -> Initialize the Can node x with y baud [loopback], if you will configure each can node different/individual
cansend x id a b -> Send values a and b on Can node x with id
If there is any incoming message then the content will be displayed in the shell.
If your environment is ok, then you can compared what is the difference between the demo software and the your own software (e.g. port settings).
When this software runs on your device, you can open a shell:
Connect the board to your PC via USB (make sure that the DAS server and drivers are installed, see DAS http://www.infineon.com/das
Now you should have a serial port for the board, maybe look in the device manager for COM number
Open any terminal program, use the COM port from your board with 115200 baud, 8 data bits, 1 stop bit, no flow.
In the terminal you should have access to the shell of the demo software. command help will show the available commands.
For CAN (execute the following commands):
caninit 2000000 -> this command initialize all can nodes to 2MB, only the two connected can nodes on the board are connected to pins all other can nodes are initialized in loopback mode
cannodeinit x y [lb] -> Initialize the Can node x with y baud [loopback], if you will configure each can node different/individual
cansend x id a b -> Send values a and b on Can node x with id
If there is any incoming message then the content will be displayed in the shell.
If your environment is ok, then you can compared what is the difference between the demo software and the your own software (e.g. port settings).
Dec 15, 2020
07:46 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dec 15, 2020
07:46 PM
I found out the reason why my issue. Thanks for all advices above!
The point was 'Sample Point' setting.
After matching that setting, CAN communication works ok in 2Mbits/s.
The point was 'Sample Point' setting.
After matching that setting, CAN communication works ok in 2Mbits/s.
Apr 12, 2021
03:02 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 12, 2021
03:02 AM
ccirengi wrote:
I found out the reason why my issue. Thanks for all advices above!
The point was 'Sample Point' setting.
After matching that setting, CAN communication works ok in 2Mbits/s.
Hi ccirengi,
I also encountered the problem, could you share the "sample point" setting? Thanks
This widget could not be displayed.