10#include "flexptp_options.h"
18static int CB_pps(
const CliToken_Type *ppArgs, uint8_t argc) {
20 float freq = atof(ppArgs[0]);
25 fc_exp = round(log2f(freq)) + 1;
28 if (fc_exp < ETHHW_PTP_PPS_1Hz) {
29 fc_exp = ETHHW_PTP_PPS_1Hz;
33 if (fc_exp > ETHHW_PTP_PPS_16384Hz) {
34 fc_exp = ETHHW_PTP_PPS_16384Hz;
37 sFreq = exp2(fc_exp - 1);
43 ETHHW_SetPTPPPSFreq(ETH, fc_exp);
74 MSG(
"PPS frequency: %u Hz\n",
sFreq);
76 MSG(
"PPS output is turned off.\n");
82static void ptphw_register_cli_commands() {
83 CLI_REG_CMD(
"ptp pps {freq} \t\t\tSet or query PPS signal frequency [Hz]", 2, 0, CB_pps);
92 ETHHW_EnablePTPTimeStamping(ETH);
99 ETHHW_InitPTPTime(ETH, 0, 0);
102 ETHHW_EnablePTPFineCorr(ETH,
true);
105 ETHHW_SetPTPAddend(ETH, addend);
108 ETHHW_SetPTPSubsecondIncrement(ETH, increment);
111 ETHHW_SetPTPPPSFreq(ETH, ETHHW_PTP_PPS_1Hz);
114 __HAL_RCC_GPIOG_CLK_ENABLE();
117 GPIO_InitTypeDef GPIO_InitStructure;
118 GPIO_InitStructure.Pin = GPIO_PIN_8;
119 GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
120 GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
121 GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
122 GPIO_InitStructure.Pull = GPIO_NOPULL;
123 HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);
127 ptphw_register_cli_commands();
134 ETHHW_GetPTPTime(ETH, &sec, &nsec);
#define CLI_REG_CMD(cmd_hintline, n_cmd, n_min_arg, cb)
ETH_HandleTypeDef EthHandle
void ptphw_gettime(TimestampU *pTime)
void ptphw_init(uint32_t increment, uint32_t addend)
uint32_t nanosec
nanoseconds