IEEE 1588 PTP daemon for STM32H7 and ATSAME70 microcontrollers. The software is tested to work with LWIP 2.x.
- Enable IGMP in LWIP and make sure it is working. Typically this is done by defining LWIP_IGMP to 1 in lwipopts.h. You typically need to enable IGMP in your network interface as well (for example netif->flags |= NETIF_FLAG_IGMP).
- Copy-paste the ptp folder to your solution.
- From port folder copy constants_dep.h, ptpd_dep.c and ptpd_dep.h files to the ptp/dep folder. From port folder copy constants.h to ptp folder.
- Every 1 ms update the PTPD timers, for example as below
// ptpd timers for (uint8_t i=0; i < TIMER_ARRAY_SIZE; i++) { switch (ptpdTimersCounter[i]) { case 0: break; case 1: ptpdTimersExpired[i] = TRUE; ptpdTimersCounter[i] = ptpdTimers[i]; break; default : ptpdTimersCounter[i]--; break; } }
- In the software initilization call function ptpd_init().
- Continuously call function ptpd_task(). Remember to call igmp_timer() every 100 ms as well.