PPS与PWM深度解析:原理、区别与ADIN6310时钟设计实战
一、时间与功率控制的核心技术
在现代电子系统中,PPS(Pulse Per Second) 和 PWM(Pulse Width Modulation) 是两种基础但至关重要的信号技术。它们在工业自动化、通信系统、电力电子等领域扮演着关键角色。本文将从原理、波形、应用场景深入解析两者的区别,并重点分析ADIN6310以太网PHY芯片的时钟设计。
二、PPS技术深度解析
1. PPS核心概念
PPS是一种高精度时间同步信号,每个脉冲精确表示1秒的开始时刻。其核心价值在于提供亚微秒级的时间基准,是时间敏感网络(TSN)的基石。
2. PPS波形特征

3. PPS应用场景
- 工业自动化:多轴机械臂协同控制
- 通信系统:5G基站时间同步
- 电力系统:继电保护装置同步
- 科学实验:射电望远镜阵列
三、PWM技术深度解析
1. PWM核心概念
PWM通过改变脉冲宽度来传递信息或控制功率,本质是占空比调制技术。其数学表达为:
占空比 = t high T × 100 % \text{占空比} = \frac{t_{\text{high}}}{T} \times 100\% 占空比=Tthigh×100%
2. PWM波形特征

3. PWM应用场景
- 电机控制:无刷直流电机驱动
- 电源管理:DC-DC转换器
- LED调光:亮度精确控制
- 音频系统:Class D放大器
四、PPS与PWM关键区别对比
| 特性 | PPS | PWM |
|---|---|---|
| 核心功能 | 时间同步 | 功率/信号调制 |
| 关键参数 | 脉冲时间精度 | 占空比 |
| 频率特性 | 固定1Hz | 可配置(Hz-MHz) |
| 脉冲宽度 | 固定(通常5-100ms) | 动态变化 |
| 精度要求 | 纳秒级时间精度 | 占空比分辨率 |
| 典型应用 | 时间戳同步、网络同步 | 电机控制、电源转换 |
| 信号稳定性 | 相位噪声敏感 | 占空比稳定性敏感 |
| 硬件实现 | 高精度时钟源+比较器 | 定时器+计数器 |
五、ADIN6310时钟设计深度解析
1. ADIN6310时钟架构
ADIN6310是ADI公司推出的工业以太网PHY芯片,其时钟系统设计精妙:
2. 发送时钟(TX_CLK)本质
结论:ADIN6310的发送时钟不是PWM信号!
ADIN6310的发送时钟是典型的网络同步时钟:
- 固定频率:根据以太网速率固定为2.5MHz(10Mbps)、25MHz(100Mbps)或125MHz(1Gbps)
- 占空比恒定:50% ±1%(IEEE 802.3标准要求)
- 核心功能:提供数据发送时序基准

3. 时钟配置实战(STM32F439)
硬件连接
// ADIN6310与STM32连接
#define PHY_RESET_GPIOGPIOA
#define PHY_RESET_PINGPIO_PIN_1
#define PHY_MDC_GPIOGPIOB
#define PHY_MDC_PINGPIO_PIN_11
#define PHY_MDIO_GPIOGPIOB
#define PHY_MDIO_PINGPIO_PIN_12
#define PHY_INT_GPIOGPIOC
#define PHY_INT_PINGPIO_PIN_5
时钟初始化代码
void ETH_Clock_Config(void) {
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
// 配置RMII时钟
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ETH;
PeriphClkInit.EthClockSelection = RCC_ETHCLKSOURCE_PLL;
PeriphClkInit.PLL.PLLM = 25;// HSE=25MHz
PeriphClkInit.PLL.PLLN = 288;// VCO=288*25MHz=7.2GHz
PeriphClkInit.PLL.PLLP = 2;// PLLP=3.6GHz
PeriphClkInit.PLL.PLLQ = 5;// PLLQ=1.44GHz
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
// 配置PHY参考时钟
__HAL_RCC_ETH1MAC_CLK_ENABLE();
__HAL_RCC_ETH1TX_CLK_ENABLE();
__HAL_RCC_ETH1RX_CLK_ENABLE();
}
精确时间戳捕获(PPS相关)
// 配置定时器捕获PPS
void TIM5_Capture_Init(void) {
TIM_IC_InitTypeDef sConfigIC = {0};
htim5.Instance = TIM5;
htim5.Init.Prescaler = 180-1;// 1MHz计数
htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
htim5.Init.Period = 0xFFFFFFFF;
htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_IC_Init(&htim5);
sConfigIC.ICPolarity = TIM_ICPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
HAL_TIM_IC_ConfigChannel(&htim5, &sConfigIC, TIM_CHANNEL_1);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_1);
}
// PPS中断处理
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
if(htim->Instance == TIM5) {
uint32_t capture = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
// 记录精确时间戳
system_time_ns = capture * 1000; // 转换为ns
}
}
六、工业场景应用案例
1. 多轴机械臂协同控制
2. 电力系统保护装置
// 基于PPS的相位同步保护
void power_protection() {
uint64_t zero_cross_time = get_last_zero_cross(); // 过零点时间
// 计算与PPS的时间关系
int64_t phase_offset = zero_cross_time - last_pps_time;
if(abs(phase_offset) > PHASE_THRESHOLD) {
trigger_circuit_breaker();
log_fault("Phase desync: %lld ns", phase_offset);
}
}
七、设计经验与避坑指南
1. PCB布局黄金法则
| 信号类型 | 布线要求 | 隔离措施 |
|---|---|---|
| PPS | 最短路径,阻抗匹配±1% | 同轴连接器,屏蔽层接地 |
| PWM | 避免平行长走线 | 光电隔离驱动 |
| TX_CLK | ≤5cm走线,参考层完整 | 地屏蔽环 |
2. 抗干扰设计
3. 软件优化技巧
// 高精度PWM输出(基于TIM1)
void set_motor_pwm(uint8_t duty) {
// 使用DMA避免中断延迟
static uint16_t pwm_val = 0;
pwm_val = (TIM1->ARR * duty) / 100;
HAL_DMA_Start(&hdma_tim1, (uint32_t)&pwm_val,
(uint32_t)&TIM1->CCR1, 1);
__HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_CC1);
}
// PPS抖动补偿算法
void pps_compensation() {
static int32_t history[5] = {0};
static uint8_t index = 0;
history[index] = current_capture - expected_capture;
index = (index + 1) % 5;
// 移动平均滤波
int32_t avg = 0;
for(int i=0; i<5; i++) avg += history[i];
avg /= 5;
// 调整时钟补偿值
TIM5->EGR |= TIM_EGR_UG; // 产生更新事件
TIM5->CNT = avg; // 补偿计数器
}
八、前沿技术融合
1. IEEE 1588 PTP协议
PTP时间同步协议栈:
主时钟
│
├── Sync消息(t1发送)
│
│从时钟记录t2(接收时间)
│
├── Follow_Up(包含t1精确时间)
│
│从时钟计算:偏移 = t2 - t1
│
├── Delay_Req(t3发送)
│
│主时钟记录t4(接收时间)
│
└── Delay_Resp(包含t4时间)
最终校正:
从时钟时间 = 本地时间 + 偏移 - ( (t4 - t3) - (t2 - t1) )/2
2. 软件定义时钟(SDC)
# Python伪代码:软件定义时钟服务
class SoftwareDefinedClock:
def __init__(self, phy):
self.phy = phy
self.phase_lock = PhaseLockedLoop()
def synchronize(self, pps_signal):
while True:
# 硬件捕获PPS
hw_capture = self.phy.capture_pps()
# 软件相位检测
phase_error = self.phase_lock.detect(hw_capture)
# 动态调整时钟
if abs(phase_error) > threshold:
self.phy.adjust_clock(phase_error * Kp)
九、总结与展望
1. 核心区别再强调
- PPS:时间基准信号,关注脉冲出现时刻的绝对精度
- PWM:功率调制信号,关注脉冲宽度比例的精确控制
- TX_CLK:网络同步时钟,属于固定频率方波信号
2. 工业4.0中的演进
随着工业互联网的发展,时间敏感网络(TSN)技术正在融合PPS和时钟技术:
- IEEE 802.1AS:广义的PTP时间同步
- IEEE 802.1Qbv:时间感知调度器
- IEEE 802.1Qbu:帧抢占机制
3. 设计建议
- 时钟选型:工业场景优先选择TCXO或OCXO时钟源
- 信号隔离:PPS/PWM关键信号必须光电隔离
- 同步监测:实时监控时钟漂移(<±100ppm)
- 冗余设计:主备双时钟源自动切换
未来展望:随着5G和工业互联网的发展,时间同步精度将从微秒级向纳秒级演进,PPS技术将更加关键。而PWM技术将在宽禁带半导体(GaN/SiC)驱动下向MHz级高频发展。
完整参考设计:ADIN6310-EVALZ
1943

被折叠的 条评论
为什么被折叠?



