打印
[STM32F4]

使用PTP相关寄存器维护时间

[复制链接]
1572|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
912293097|  楼主 | 2016-4-21 18:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想做这样一件事情:

stm32F4x7系列的单片机具有以太网相关的寄存器,其中包含了 实现IEEE1588协议的PTP协议的相关寄存器。
能不能 给ptp相关寄存器一个初始时间然后让它相关的寄存器自己维护这个时间呢?  换句话说有PTP相关寄存器没有这样的功能使可以从初始值进行精确的累加 然后维护这个时间呢?
如果可以的话,就可以把它当做时钟源了。
沙发
912293097|  楼主 | 2016-4-21 19:01 | 只看该作者
不能沉

使用特权

评论回复
板凳
912293097|  楼主 | 2016-4-22 09:21 | 只看该作者
系统时间校准方法
使用 PTP 输入参考时钟 HCLK 更新 64 位 PTP 时间。该 PTP 时间可用作时钟源,以获取 MII 上发送或接收的以太网帧的快照(时间戳)。可使用粗略校准方法或精密校准方法对系 统时间定时器进行初始化或校准。
使用粗略校准方法时,初始值或偏移值会写入时间戳更新寄存器(请参见第 29.8.3 节:第 903 页的IEEE 1588 时间戳寄存器)。对于初始化,会将时间戳更新寄存器中的值写入系统 时间计数器;对于系统时间校准,会将偏移值(时间戳更新寄存器)加到系统时间中或从系统时间中减去。
使用精密校准方法时,从时钟(参考时钟)频率相对于主时钟(如 IEEE 1588 中定义)的偏 移会在一段时间内进行校准,而不像粗略校准方法中那样,在单个时钟周期内进行校准。校准时间越长,越有助于保持线性时间,并且不会导致各 PTP 同步消息间隔之间的参考时间 发生剧烈变化(或者大型抖动)。在此方法中,会使用一个累加器对加数寄存器中的内容求和,如图 344 所示。累加器生成的算数进位将用作使系统时间计数器递增的脉冲。累加器和 加数寄存器均为 32 位寄存器。此处,累加器用作高精度频率乘法器或除法器。图 344 给出 了该算法。

使用特权

评论回复
地板
912293097|  楼主 | 2016-4-22 09:22 | 只看该作者
系统时间生成初始化的编程步骤
通过将时间戳控制寄存器 (ETH__PTPTSCR) 中的位 0 置 1 来使能时间戳功能。但之后必须 对时间戳计数器进行初始化才能启动时间戳操作。适当的顺序如下:
1.通过将 MACIMR 寄存器中的位 9 置 1 以屏蔽时间戳触发中断。
2. 编程时间戳寄存器位 0 以使能时间戳。
3. 根据 PTP 时钟频率编程亚秒递增计数器。
4. 如果使用精密校准方法,编程时间戳加数寄存器并将时间戳控制寄存器的位 5 置 1(加 数寄存器更新)。
5. 轮询时间戳控制寄存器,直到位 5 清零。
6. 要选择精密校准方法(根据需要),编程时间戳控制寄存器位 1。
7. 用适当的时间值编程时间戳高位更新寄存器和时间戳低位更新寄存器。
8. 将时间戳控制寄存器位 2 置 1(时间戳初始化)。
9. 用时间戳更新寄存器中写入的值初始化时间戳计数器后,时间戳计数器便开始运行。
10. 使能 MAC 接收器和发送器以使时间戳功能正常运行。
注意:如果将 ETH_PTPTSCR 寄存器中的位 0 清零来禁止时间戳操作,必须重复执行以上步骤以 重新启动时间戳操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

22

帖子

0

粉丝