找回密码
 立即注册
查看: 114|回复: 14

遇到的一个时钟问题,不能启用PLL时钟 | 用AiCube 配置时钟树

[复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 4 天前 | 显示全部楼层 |阅读模式
1.基本情况:MCU STC8051U PDIP40; VCC=5V;
更新后的硬件选项为:
  . 系统ISP工作频率: 24.000MHz
  . 内部IRC振荡器的频率: 24.000MHz
  . 掉电唤醒定时器的频率: 35.725KHz
  . 振荡器放大增益使能
  . 用户EEPROM大小被设置为 1 K
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚用作普通I/O口
  . 检测到低压时复位
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,将用户EEPROM区一并擦除
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 内部参考电压: 1193 mV (参考范围: 1100~1300mV)
芯片出厂序列号 : F8B4C8FD0299FA
  单片机型号: STC8051U-34K64
2. 问题介绍:使用内部IRC时钟和48MHZ时钟都没问题,但无法使用PLL时钟做为系统时钟,usb时钟和IO时钟。计划使用PLL96MHZ三分频后作为SYSCLK,2分频后为USBCLK,不分频到IO和TFPU。
之前使用最小系统时可以运行,但时有时无,有时PLL能启动。不知是硬还是软件问题,目前已在制做新的最小系统进行测试,代码方面参考的例程,请大家帮忙分析一下哪里有问题。P4.7脚有时输出8MHz的时钟。


    void clk_delay(void)    //100us @ 24MHz
{
    unsigned char data i, j;

    i = 3;
    j = 82;
    do
    {
        while (--j);
    } while (--i);
}



    HIRCCR = 0x80;        //打开IRC高速时钟
    while(!(HIRCCR&0x01));     //等待内部IRC时钟稳定
    CLKSEL &=0X7F;        //选择PLL输出为96MHz   
    USBCLK &= 0X1f;     //关闭PLL倍频器,清除分频器设置为00
    USBCLK |= 0X20;         //设置PLL输入分频器2分频
    USBCLK |= 0X80;         //打开PLL倍频器
    clk_delay();
    CLKDIV = 0X03;        //MCLK时钟3分频后送SYSCLK   
    CLKSEL &= 0XF0;        //清除数据
    CLKSEL |= 0X04;     //PLL输出到系统时钟分频器
    IRCBAND &= 0x3f;    //选通USB PLL/2 时钟
    HSCLKDIV = 0x01;     //IO时钟不分频 96 MHz
    CLKSEL |= 0X40;         //选择PLL为IO时钟, IRC为系统时钟
    MCLKOCR = 0X01;         //SYSCLK原频输出到P4.7



以上,谢谢。


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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-15 09:46:00

733

主题

1万

回帖

1万

积分

管理员

积分
16603
发表于 4 天前 | 显示全部楼层
AI8051U:
USB用自己的 48MHz, 不要跟其他时钟共享
CPU 时钟独立 《= 40MHz
其他 PWM/TFPU的 PLL时钟,从 CPU时钟分频率后PLL过来

截图202506121603253232.jpg

截图202506121605547763.jpg


截图202506121607525853.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 4 天前 | 显示全部楼层
需要提前进入给分频,并且打开PLL后需要等待大概2ms以上稳定时间.
因为你这个代码会出现再设置CLKDIV前,存在超过42Mhz时钟的情况给到了内核,
此时就会导致内核执行混乱异常重启。

所以需要先打开CLKDIV的分频,再切换到PLL
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 4 天前 | 显示全部楼层
王*** 发表于 2025-6-12 13:36
需要提前进入给分频,并且打开PLL后需要等待大概2ms以上稳定时间
因为你这个代码会出现再设置CLKDIV前,存 ...

我的代码是这样的啊,先设置的分频再进行选择的。
    CLKDIV = 0X03;        //MCLK时钟3分频后送SYSCLK   
    CLKSEL &= 0XF0;        //清除数据
    CLKSEL |= 0X04;     //PLL输出到系统时钟分频器

我之前也试过把启动PLL倍频器放到最后,还是不行。

点评

可以尝试使用stcisp中的aicube进行时钟树配置 时有时无可能是运行频率超过了内核上限,内核最大运行时钟应该小于42mhz  详情 回复 发表于 4 天前
问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-15 10:18:37
已绑定手机
已实名认证

112

主题

2387

回帖

6004

积分

版主

积分
6004
发表于 4 天前 | 显示全部楼层
guang*** 发表于 2025-6-12 14:38
我的代码是这样的啊,先设置的分频再进行选择的。
    CLKDIV = 0X03;        //MCLK时钟3分频后送SYSCLK ...

可以尝试使用stcisp中的aicube进行时钟树配置
时有时无可能是运行频率超过了内核上限,内核最大运行时钟应该小于42mhz
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 4 天前 | 显示全部楼层
等下我也想试试使用AICUBE,但如果能找到代码上的问题更好。加深对硬件的理解。
问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 3 天前 | 显示全部楼层
神*** 发表于 2025-6-12 16:01
AI8051U:
USB用自己的 48MHz, 不要跟其他时钟共享
CPU 时钟独立 《= 40MHz

昨晚和今早上试了,用AICUBE配置还是不行,下载到8051U盒子不能运行。附件是项目文件供参考。谢谢。


aicube_clock.zip

605.88 KB, 下载次数: 1

含AIC文件

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

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 3 天前 | 显示全部楼层
使用AICUBE配置的函数好像不对,
应该是启动内部IRC高速时钟,
但是函数好像是启动了外部32768时钟。


截图202506131458286937.jpg
截图202506131458549766.jpg
问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:443
  • 最近打卡:2025-06-13 08:57:40
已绑定手机

39

主题

2053

回帖

7054

积分

论坛元老

积分
7054
发表于 3 天前 | 显示全部楼层
代码 启动外部32K晶振 是因为你勾选了 “CRE 自动追频
截图202506131631565832.jpg

截图202506131635342449.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-06-15 09:35:48

12

主题

24

回帖

394

积分

中级会员

积分
394
发表于 3 天前 | 显示全部楼层
乘风*** 发表于 2025-6-13 16:32
代码 启动外部32K晶振 是因为你勾选了 “CRE 自动追频”

OK, 感谢指出问题。
问渠哪得清如许 唯有源头活水来
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 03:41 , Processed in 0.233009 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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