找回密码
 立即注册
查看: 951|回复: 7

STC8H使用外部晶振,如何关闭IRC?

[复制链接]
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 173 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1367

    积分

    荣誉版主

    积分
    1367
    发表于 2023-5-4 14:15:43 | 显示全部楼层 |阅读模式
    void OSC_SET(void)
    {
            u16 j;
           
            P_SW2 = 0x80;
            XOSCCR = 0xc0;
            for(j = 0;j < 32766;j ++)
            {
                    if(XOSCCR & 1)
                    {
                            CLKSEL = 0x01; //切换到外部晶振
                            CLKDIV = 0x00;
                            HIRCCR = 0;  //关闭内部IRC
                    //        HIRCCR &= ~0X80;  //关闭内部IRC
                            break;
                    }
            }
           
            P_SW2 = 0x00;
    }

    问:是用HIRCCR = 0;
    还是用HIRCCR &= ~0X80;  //关闭内部IRC
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 08:32
  • 签到天数: 95 天

    [LV.6]常住居民II

    70

    主题

    611

    回帖

    1888

    积分

    超级版主

    积分
    1888
    QQ
    发表于 2023-5-4 15:50:31 | 显示全部楼层
    1.png
    热线19952583534
    www.STCAI.com
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-5-4 16:43:21 | 显示全部楼层
    我也是启用了外部晶振,8h8k64u当尝试关闭内部IRC后,USB转的串口没了
    关闭irc是在转用晶振后做的:
                IRC24MCR &= ~ENIRC24M;
    程序正常运转,就是USB部分没了,是不是同时影响到了USB时钟?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-5-4 17:53:53 | 显示全部楼层


    STC提供的USB参考程序,一般USB用的时钟是内部独立的48M-IRC,跟 CPU 用的时钟无关
    1.png

    2.png


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3043

    回帖

    6861

    积分

    超级版主

    积分
    6861
    发表于 2023-5-5 09:42:11 | 显示全部楼层
            P_SW2 |= 0x80;        //SFR enable   

            P1IE = ~0xc0;                                //P1.6 P1.7关闭数字输入功能
    //        XOSCCR = 0x80;                        //启动外部有源时钟, 此时P1.6固定为高阻, 仅能用于数字输入或ADC输入.
    //        XOSCCR = 0xc0 + 0x00;                //启动外部晶振(STC8H8K64U),    12M以下+0x08, 24M以下+0x04, 48M以下+0x00.
            XOSCCR = 0xc0 + 0x00;                //启动外部晶振(STC8H其余系列), 12M以下+0x20, 24M以下+0x10, 48M以下+0x00.
            while (!(XOSCCR & 1));                //等待时钟稳定
            CKSEL    = 0x01;                        //选择外部晶振
            HIRCCR   = 0x00;                        //关闭内部高速时钟
            IRC32KCR = 0x00;                        //关闭内部32K IRC
            X32KCR   = 0x00;                        //关闭外部32K晶振
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-5-5 12:10:29 | 显示全部楼层
    本帖最后由 晓奇 于 2023-5-5 12:18 编辑

    按照梁工的代码试了一下,如果关闭了内部IRC,USB部分直接卡死在
        while (!(IRC48MCR & 0x01));
    后面的32K关闭没影响,看来这个内部的IRC是总开关,一旦关闭usb的48M也停了
    32g和8h8k64u都试了一下,都是IRC 不能关闭,一旦关闭,usb直接进不了
    为了验证外部晶振正常,特意用最低IRC下载,然后串口115200通信到另一个芯片接收再转发回来,没有误码。所以认为外部晶振正常工作

    点评

    按需要来,楼主估计是不用USB的。 用 了USB,就不要关闭内部IRC。  详情 回复 发表于 2023-5-5 14:03
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3043

    回帖

    6861

    积分

    超级版主

    积分
    6861
    发表于 2023-5-5 14:03:31 | 显示全部楼层
    晓奇 发表于 2023-5-5 12:10
    按照梁工的代码试了一下,如果关闭了内部IRC,USB部分直接卡死在
        while (!(IRC48MCR & 0x01));
    后面的32 ...

    按需要来,楼主估计是不用USB的。
    用 了USB,就不要关闭内部IRC。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
    发表于 2023-5-5 14:59:48 | 显示全部楼层
    我不动MCU应用N年了,这个STC8H8K64U 的时钟当时是我要求的:
    STC8H8K64U内部有2个独立的高速IRC
    ===1,USB-48MHz-HIRC
    ===2,CPU-可调高速-IRC,52MHz ~ 4MHz ?

    STC8H8K64U外部晶振支持2种,同时只能开1种
    ===1,外部高速晶振
    ===2,外部低速32768晶振

    ==============================================================================
    1,外部高速晶振,如启动,就不要启动外部低速32768RTC晶振,外部高速晶振的时钟进 MCU后,经过或者不经过 PLL
    ===1A, 【外部高速晶振,可+PLL】只给 USB 用,CPU使用【CPU-可调高速-IRC】或内部 LIRC-低速30K
    ===1B, 【外部高速晶振,可+PLL】给 USB 用, 也给 CPU及其他外设用
    ===1C,  不给USB用,【外部高速晶振,可+PLL】给 CPU及其他外设用,USB可使用内部USB专门的 USB-48MHz-HIRC

    2,外部低速32768RTC时钟,如启动,就不要启动外部高速晶振
    ===2A, 只给 RTC使用,  CPU及其他外设用 CPU-内部高速IRC-【HIRC 可+PLL】/ LIRC-低速30K
    ===2B, 给 RTC使用, 也给 CPU及其他外设用

    3, 外部高速,低速晶振都不使用
    ===3A, USB用USB-48MHz-HIRC,CPU及其他外设用 CPU-内部高速IRC -【HIRC 可+PLL】/ LIRC-低速30K
    ===3B, USB不用 【不启动外部晶振,也不启动内部USB-48MHz-HIRC】,CPU及其他外设用 CPU-内部高速IRC -【HIRC 可+PLL】/ LIRC-低速30K

    但还是看下图:


    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-19 22:38 , Processed in 0.083180 second(s), 62 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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