zhongshichun
驱动牛犊
驱动牛犊
  • 注册日期2009-06-22
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4125回复:1

DP83640芯片使用问题

楼主#
更多 发布于:2010-05-25 21:16
     请问有没有哪位使用过DP83640芯片?我对DP83640芯片的Step值调整有一点疑问:文档第7页说的Step调整值可以为正或者负(Note that the adjustment value can be positive or negative)。我对Step值的正值调整的步骤为:写调整值到PTP_TDR寄存器中,然后写0x8到PTP_CTL寄存器即完成了调整。但是对于负的Step值不知如何设置,设置成补码写到PTP_TDR寄存器中,时间仍然变大了。没有缩小。请问怎么设置负的step调整值啊?
hyh8754
驱动牛犊
驱动牛犊
  • 注册日期2010-07-01
  • 最后登录2010-07-02
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-07-01 20:14
您好,我也在使用这款芯片,下面是我在参考别人的代码后写的函数,也许能给你一些帮助
另外,你有“Software Development Guide for the DP83640”这个资料吗,我一直在找
我的QQ是264693247,邮箱:hyh8754@126.com,希望能和你联系上,共同讨论这个芯片的使用

/*negativeFlag取1表示减,取0表示加*/
void DP83640StepClock(UInteger32 seconds, Integer32 nanoseconds,UInteger8 negativeFlag)
{
    if (negativeFlag == 1)//如果做负方向调整,对时间值取补码
    {
        seconds     = (0xFFFFFFFF - seconds + 1) & 0xFFFFFFFF;
        nanoseconds = (0xFFFFFFFF - nanoseconds + 1) & 0xFFFFFFFF;
    }
    
    WriteDP83640Reg(DP83640_PTP_TDR, nanoseconds & 0xFFFF);
    WriteDP83640Reg(DP83640_PTP_TDR, nanoseconds >> 16);
    WriteDP83640Reg(DP83640_PTP_TDR, seconds & 0xFFFF);
    WriteDP83640Reg(DP83640_PTP_TDR, seconds >> 16);
    
    SetDP83640RegBit(DP83640_PTP_CTL, 1 << 3);
    
    return;
}
游客

返回顶部