Я пытаюсь получить PTP
метку времени на доске STM32H743 Nucleo
. Пока нет проблем с LwIP
и драйвером ethe rnet, кроме PTP
. Я следовал инструкции (58.9.7 Рекомендации по программированию для IEEE 1588 timestamping
) в справочном руководстве (RM0433
) следующим образом.
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
Однако регистр секунд системного времени (ETH_MACSTSR
) не учитывается и только что загруженное начальное значение в регистр обновления секунд системного времени (ETH_MACSTSUR
). В справочном руководстве нет четкой информации об источнике часов для PTP
. В STM32F7
есть путь синхронизации для PTP
, как на изображении ниже на странице CubeMX
конфигурации часов.
![enter image description here](https://i.stack.imgur.com/wMC3B.png)
Однако нет путь к часам для PTP
в STM32H7
, как на рисунке ниже.
![enter image description here](https://i.stack.imgur.com/19cM9.png)
Я что-то упускаю из-за получения системного времени из регистров ETH_MACSTSR
и ETH_MACSTNR
?