查看: 1971|回复: 2

[经验分享] BUG解决:LPC8N04基准时间不准

[复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 1336 天

    [LV.10]以坛为家III

    88

    主题

    4293

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9056
    最后登录
    2024-5-5
    发表于 2021-9-28 22:31:08 | 显示全部楼层 |阅读模式
    本帖最后由 jobszheng5 于 2021-9-28 22:34 编辑

    BUG解决:LPC8N04基准时间不准

    ISSUE
        基准时间不准。在使用代码初始化时钟后,配置systick外设,使其中断触发间隔为1ms,并在中断函数内对全局变量timeline_ms自增操作。通过在线调试jtag,获取全局变量timeline_ms的值,源代码如下:

    1. void SysTick_Handler(void)
    2. {
    3.   timeline_ms++;
    4.         if(timeline_ms == 1000)
    5.         {
    6.                 timeline_ms = 0;
    7.         }
    8. }
    复制代码



        理论上,每次获取的timeline_ms的值应该相差较小,但实际值却偏差450左右,近一半的误差。
    SOLVED:
        在使用JTAG在线调试器后,回读SYSON寄存器的TRIM字段时,发现其默认值为0x2E。
        阅读手册后,该寄存器的值将直接影响主频,即修正RC时钟的误差。于是将其使用JTAG直接操作修改为零。再次观察systick中的timeline_ms全局变量的值,其基本正常。
    后记
        再次审查了源代码,发现在代码初始化过程中并不会涉及此寄存器的修改操作。所以,我怀疑我拿到的开发板很可能并未出厂修正过。
        考虑到也挺懒的,所以我也就凑合着使用了。不过,我觉得通过clk_out引脚输出的方式,再配合频率计的测量,应该可以非常精确的校准LPC8N04的RC主频时钟了。



    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 148 天

    [LV.7]常住居民III

    10

    主题

    387

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1270
    最后登录
    2024-4-29
    发表于 2021-9-29 11:00:43 | 显示全部楼层
    真的吗?我没发现。。。
    加油加油
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 1336 天

    [LV.10]以坛为家III

    88

    主题

    4293

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9056
    最后登录
    2024-5-5
     楼主| 发表于 2021-9-29 14:25:44 | 显示全部楼层
    thinkking1985 发表于 2021-9-29 11:00
    真的吗?我没发现。。。

    刚开始我还以为是我的systick的问题呢。后来又找了是不是IAR软件的问题。最后,才定位到这个字段
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-6 02:03 , Processed in 0.100396 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表