Hi@erinc
Q1.How can 500 is approximately refers to 1ms?
I think you have misunderstood. This timestamp should be the interval between the start or end of each frame, not the time it takes for a frame to be transmitted.
Q2.It seems there is a correlation but timestamp is 16bit and only counts to 65535. So, it overflows at 200ms for example. How can I understand if it overflows and how many times?
Yes, the default is the Free running 16-bit timer, which has no overflow flag(i didn't see), but you can set CRTL1[TSYN] = 1, so that the timer will automatically reset after receivied Frame.
Q3.How can I activate HR timestamp as seen at below? I am using RTD 3.0.0 with S32DS 3.5
a.You need to enable the following options:

b.You need to configure Stm for HR timestamp.(ps,:you can refer to "Stm_Gpt_Example_S32k344")
c.Read HR timestamp, for example:
temp = (uint32)IP_CAN_0->HR_TIME_STAMP[mb_idx];
Also,You can enable the interrupt of Stm and record the number of overflows of Stm