# stm32h7_atsame70_ptpd **Repository Path**: andy_teng/stm32h7_atsame70_ptpd ## Basic Information - **Project Name**: stm32h7_atsame70_ptpd - **Description**: 基于mpthompson 的项目基础上做的,将STM32H7 的PTP 底层驱动直接地通过访问底层硬件寄存器完成,支持lwIP 2.0 ,使用UDP 组播方式(IGMP 协议) 实现PTPD 协议。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-13 - **Last Updated**: 2024-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PTPD FOR STM32H7 AND ATSAME70 IEEE 1588 PTP daemon for STM32H7 and ATSAME70 microcontrollers. The software is tested to work with LWIP 2.x. ## Usage 1. 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). 2. Copy-paste the _ptp_ folder to your solution. 3. 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. 4. 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; } } ``` 5. In the software initilization call function ptpd_init(). 6. Continuously call function ptpd_task(). Remember to call igmp_timer() every 100 ms as well.