使用 EMACTimestampSysTimeUpdate()向硬件时间戳寄存器添加/减去偏移量,似乎在其运行的范围内受到限制,而不会出现 EMAC 接口故障。 如果
1) 1)添加、 被视为64位数字的更新大于0x00000000001fffll、或
2)减去、被视为64位数的更新大于0x001fffffffffffll、
更新操作会导致 EMAC 接口锁定。
如果此信息有用,EMACTimestampSysTimeSet()会显示大于0x3fffffffffffffffffll 的参数的锁定灵敏度。
EMACTimestampSysTimeUpdate()的正确功能对于该设计至关重要,因此我要寻找一种变通办法。 具体而言、我想知道时间戳更新与 EMAC 硬件本身之间是否存在某种相互依赖关系。 在更新时间戳时、也许需要暂时冻结 EMAC? 时间戳逻辑中是否存在已知错误?
如需记录、以下是更新代码:
uint64_t =……
EMACTimestampSysTimeUpdate()
EMAC0_BASE、
(uint32_t)(t >> 31)、
(uint32_t)(t & EMAC_TIMNANO_TSSS_M)、
false // t:减法、f:加法
);