I'm trying to get PTP
timestamp on STM32H743 Nucleo
board. There is no proble with LwIP
and ethernet driver so far except for PTP
. I followed the instruction( 58.9.7 Programming guidelines for IEEE 1588 timestamping
) on reference manual (RM0433
) as follow.
CLEAR_BIT(heth->Instance->MACIER, ETH_MACIER_TSIE);
SET_BIT(heth->Instance->MACTSCR, ETH_MACTSCR_TSENA);
WRITE_REG(heth->Instance->MACSSIR, 20);
WRITE_REG(heth->Instance->MACTSAR, 894784853); // 2^63 / 20 / 480M
SET_BIT(heth->Instance->MACTSCR, ETH_MACTSCR_TSADDREG);
while(READ_BIT(heth->Instance->MACTSCR, ETH_MACTSCR_TSADDREG));
SET_BIT(heth->Instance->MACTSCR, ETH_MACTSCR_TSCFUPDT);
WRITE_REG(heth->Instance->MACSTSUR, 0x01);
WRITE_REG(heth->Instance->MACSTNUR, 0x02);
SET_BIT(heth->Instance->MACTSCR, ETH_MACTSCR_TSINIT); // If one-step timestamping is required follow reference manual
// TODO: configure pps
However, System time seconds register (ETH_MACSTSR
) does not count and just loaded initial value in System time seconds update register (ETH_MACSTSUR
). In reference maual there is no clear information about clock source for PTP
. In STM32F7
, there is a clock path for PTP
as in image below in CubeMX
clock configuraton page.
However there no clock path for PTP
in STM32H7
as in image below.
Am I missing something about to get system time from the registers ETH_MACSTSR
and ETH_MACSTNR
?