要初始化觸發(fā)器,可以使用相應(yīng)的 PTP 觸發(fā)器配置寄存器來設(shè)置觸發(fā)器配置。啟動觸發(fā)器包括以下步驟:
- 設(shè)置 PTP 控制寄存器 (PTP_CTL) 中的“觸發(fā)器加載”位以及觸發(fā)器的“觸發(fā)器選擇”設(shè)置。如果之前啟用了觸發(fā)器,這將禁用觸發(fā)器。
- 寫入 PTP_TDR: Start_time_ns[15:0]
- 寫入 PTP_TDR:初始狀態(tài)、等待翻轉(zhuǎn)、Start_time_ns[29:16](初始狀態(tài)是 GPIO 在觸發(fā)開始之前的階段)(如果設(shè)置了等待翻轉(zhuǎn)位,該位表示在時鐘時間的秒字段從 0xFFFF_FFFF 翻轉(zhuǎn)至 0 之前不會啟動觸發(fā)器。)
- 寫入 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]
- 設(shè)置 PTP_CTL 寄存器中的“觸發(fā)器啟用”位以及觸發(fā)器的“觸發(fā)器選擇”設(shè)置
對于邊沿類型信號,脈沖寬度 2 被解釋為 16 位秒字段,脈沖寬度 1 是 30 位納秒字段。
對于觸發(fā)器 0 和 1,當(dāng)用于單脈沖或周期脈沖類型信號時,脈寬控制第一個脈沖寬度,脈寬 2 值控制第二個脈沖寬度(總周期為脈寬+脈寬 2)。對于脈沖寬度和脈沖寬度 2,bits[31:30] 表示秒字段,bits[29:0] 表示納秒字段。
對于周期性模式下的所有其他觸發(fā)器,高脈沖寬度和低脈沖寬度相同(周期是脈沖寬度的兩倍),并且不使用脈沖寬度 2。對于脈沖寬度,bits[31:30] 表示秒字段、bits[29:0] 表示納秒字段。
如果寫入了所有適當(dāng)?shù)淖侄?,則無需執(zhí)行步驟 10。如果字段與以前的設(shè)置相同,則可以跳過后一個對 PTP_TDR 寄存器的寫入,并可以排除步驟 10。
讀取觸發(fā)器控制設(shè)置與寫入這些值的過程類似。
- 設(shè)置 PTP 控制寄存器 (PTP_CTL) 中的“觸發(fā)器讀取”位以及觸發(fā)器的“觸發(fā)器選擇”設(shè)置。
- 按照上述順序從 PTP_TDR 中讀取字段。
請注意,對于周期性信號,要讀回的時間值是下一個編程觸發(fā)時間,而不是開始觸發(fā)時間(這些值可以是,也可以不是相同的值)。此功能僅對診斷目的至關(guān)重要。