要初始化触发器,可以使用相应的 PTP 触发器配置寄存器来设置触发器配置。启动触发器包括以下步骤:
- 设置 PTP 控制寄存器 (PTP_CTL) 中的“触发器加载”位以及触发器的“触发器选择”设置。如果之前启用了触发器,这将禁用触发器。
- 写入 PTP_TDR: Start_time_ns[15:0]
- 写入 PTP_TDR:初始状态、等待翻转、Start_time_ns[29:16](初始状态是 GPIO 在触发开始之前的阶段)(如果设置了等待翻转位,该位表示在时钟时间的秒字段从 0xFFFF_FFFF 翻转至 0 之前不会启动触发器。)
- 写入 PTP_TDR: Start_time_sec[15:0]
- 写入 PTP_TDR:Start_time_sec[31:16]
- 写入 PTP_TDR: Pulsewidth[15:0]
- 写入 PTP_TDR:Pulsewidth[31:16]
- 写入 PTP_TDR:Pulsewidth2[15:0]
- 写入 PTP_TDR:Pulsewidth2[31:16]
- 设置 PTP_CTL 寄存器中的“触发器启用”位以及触发器的“触发器选择”设置
对于边沿类型信号,脉冲宽度 2 被解释为 16 位秒字段,脉冲宽度 1 是 30 位纳秒字段。
对于触发器 0 和 1,当用于单脉冲或周期脉冲类型信号时,脉宽控制第一个脉冲宽度,脉宽 2 值控制第二个脉冲宽度(总周期为脉宽+脉宽 2)。对于脉冲宽度和脉冲宽度 2,bits[31:30] 表示秒字段,bits[29:0] 表示纳秒字段。
对于周期性模式下的所有其他触发器,高脉冲宽度和低脉冲宽度相同(周期是脉冲宽度的两倍),并且不使用脉冲宽度 2。对于脉冲宽度,bits[31:30] 表示秒字段、bits[29:0] 表示纳秒字段。
如果写入了所有适当的字段,则无需执行步骤 10。如果字段与以前的设置相同,则可以跳过后一个对 PTP_TDR 寄存器的写入,并可以排除步骤 10。
读取触发器控制设置与写入这些值的过程类似。
- 设置 PTP 控制寄存器 (PTP_CTL) 中的“触发器读取”位以及触发器的“触发器选择”设置。
- 按照上述顺序从 PTP_TDR 中读取字段。
请注意,对于周期性信号,要读回的时间值是下一个编程触发时间,而不是开始触发时间(这些值可以是,也可以不是相同的值)。此功能仅对诊断目的至关重要。