Other Parts Discussed in Thread: TCAN4550,
Hello, I have some questions on how to properly define some compensation values in TCAN 4550:
We want to fine tune the sample point and synchronization for CAN FD, and we have some issues understanding how the various parameters affect the timing diagrams.
the User guide states the following:
In systems with CANFD and bitrate switching enabled, there will frequently be an additional propagation delay offset needed to properly sample bits. This delay is called the transmitter delay compensation and has its own register called TDCR(0x1048). If this value is not set properly, high speed data payloads will likely interpret the data incorrectly, or go into an error state.
However the proper setting for this register is not clear.
Transmitter Delay Compensation Offset
0x00-0x7F - Offset value defining the distance between the
measured delay from m_can_tx to m_can_rx and the secondary
sample point. Valid values are 0 to 127 mtq.
Transmitter Delay Compensation Filter Window Length
0x00-0x7F - Defines the minimum value of the SSP position,
dominant edges on m_can_rx that would result in an earlier SSP
position are ignored for transmitter delay measurement. The
feature is enabled when TDCF is configured to a value greater
than TDCO. Valid values are 0 to 127 mtq.
Based on the above statements our hypothesis was that the TDCR will act only on packets generated by the TCAN4550, with self compensation set correctly it should verify all the transitions to recessive and identify correctly an error state or a stuck dominant.
We observed exactly that, moving the sample point position did improve on the TX side and we removed a timing issue we were experiencing.
However we also observed a change in other behaviors, where the other “modules” connected to the bus would fail to acknowledge in some cases, or the TCAN4550 forced an error on the bus in seemingly random places.
We did not expect that a change in the TDCR would impact the RX side of the communication and/or the behavior of other modules.
In the following image we can see the bus states with the added RX and TX of the (external) transmitting module.
The error state is forced by the TCAN4550 and followed by the other modules that recognize the error.
It seems like an issue of sampling point on RX side but it only happens when we regulate the TDCR
So to wrap up:
after reading other posts i now understand the inner working of the SSP and TDCR (also with the help of Bosch M-CAN user guide that was recommended)
and this only further increase my doubts about the measured value. the above behavior is not at all present when the SSP is 1tq shorter, but being on the receive side it shouldn't matter. the only point where i expect some issues can be related to ACK response, and in the same situation (only with longer SSP) we can find exactly some missing ACK, from both side of the communication, but i cannot understand how to debug the issue.
The modification was implemented due to some TX errors that was caused by a mismatch between SP and SSP, that was solved with this fix, but we cannot explain the reason why we have extra issues, mostly in the receive side.
i understand that this post may be a little confused and lacking info, but i can provide more information as needed in the thread.
Thank you