找回密码
 立即注册
查看: 228|回复: 3

求助:关于8051U使用PLL无法正常获得时钟的问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-29 16:05:38

7

主题

10

回帖

261

积分

中级会员

积分
261
发表于 2025-1-17 18:13:01 | 显示全部楼层 |阅读模式
各位坛友好,

本来准备使用PLL来提供系统时钟,同时关闭48MHz的USB时钟。通过寄存器设置无法获得正确的频率。
通过P4.7输出SYSCLK后用示波器观察,实际频率为8MHz。 IRC设置的是24MHz, 通过PLL锁频后输出96MHz, 再3分频给到SYSCLK,从结来看似乎PLL没起到作用。但检查寄存器又没找到问题,因此发上来希望有高手指导一下。 谢谢。

1.寄存器设置如下:

        HIRCCR |= 0X80;
        MCLKOCR = 0X01; //SYSCLK原频输出到P4.7
        HSCLKDIV = 0x02; //IO对96MHz 2分频
        CLKSEL = 0x44;        //选择PLL96MHz为系统时钟和IO时钟;
        USBCLK &= 0x0f;
        USBCLK |= 0xa0; //使能PLL倍频, HIRC 2分频送PLL, HIRC为24MHz
        CLKDIV = 0x03; //对PLL 3分频后送给SYSCLK
        IRC48MCR &= 0x7f; //关闭48MHz USB专用时钟.
        IRCBAND = 0x02;
        while(!(HIRCCR&0x01))         //等待内部IRC时钟稳定
        {
                _nop_();
                _nop_();
        }



2.ISP设置:
继续检测目标单片机 ...
  单片机型号: STC8051U-34K64

当前芯片的硬件选项为:
  . 系统ISP工作频率: 24.010MHz
  . 内部IRC振荡器的频率: 24.000MHz
  . 掉电唤醒定时器的频率: 35.725KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 1 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚用作普通I/O口
  . 检测到低压时复位

截图202501171812505013.jpg



3.输出频率为8MHz,和程序跑的情况一致。
截图202501171810172692.jpg
问渠哪得清如许 唯有源头活水来
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-1-17 20:09:52 | 显示全部楼层

设计好时钟路径,然后挨个寄存器配置一遍
截图202501172009201007.jpg
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-29 16:05:38

7

主题

10

回帖

261

积分

中级会员

积分
261
发表于 2025-1-17 23:00:08 | 显示全部楼层
已经搞定了, 问题出在代码执行顺序上, 不能一开始就选通时钟路径。 等PLL启动后再选通道就可以了。 寄存器值设置本身没有问题。


        IRC48MCR &= 0x7f;
        while(!(HIRCCR&0x01))         //等待内部IRC时钟稳定
        {
                _nop_();
                _nop_();
        }
        CLKSEL = 0X00;  //可以不写这行
        USBCLK &= 0X0f;
        USBCLK |= 0X20;
        USBCLK |= 0X80;
        clk_delay();
        CLKDIV = 0X03;        
        CLKSEL |= 0x04; //选通MCLK
        IRCBAND &= 0x3f;//选通USB 96Mhz/2 时钟
        HSCLKDIV = 0x02; //IO时钟分频 96/2 MHz
        CLKSEL |= 0X40;//选通IO时钟
        MCLKOCR = 0X01; //SYSCLK原频输出到P4.7


开心
截图202501172259585004.jpg


问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-04-29 16:05:38

7

主题

10

回帖

261

积分

中级会员

积分
261
发表于 2025-1-17 23:01:44 | 显示全部楼层
Debu*** 发表于 2025-1-17 20:09
设计好时钟路径,然后挨个寄存器配置一遍

已解决,谢谢。
问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:22 , Processed in 0.162116 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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