[技术问答] 是没人需用到外部震荡还是都能切换成功呢?就我运气差?

[复制链接]
1677|14
 楼主| lacha 发表于 2019-10-14 15:07 | 显示全部楼层 |阅读模式
我使用clk_switch例程修改的,始终都切换失败,总是卡死在Clk_SwitchTo(ClkXTH),用内部震荡是能工作的,但项目要求较高,需用外部晶振。
int32_t main(void)
{   volatile uint32_t u32Val = 0;

        LED_init();
       
    //RCH 22.12MHz
    Clk_SwitchTo(ClkRCL);
    Clk_SetRCHFreq(ClkFreq22_12Mhz);
    Clk_SwitchTo(ClkRCH);
    u32Val = Clk_GetHClkFreq();
       
        LED_enable; //点灯
        delay1ms(200);
        LED_disable; //熄灯
        delay1ms(1200);

    //XTH
    Clk_SwitchTo(ClkXTH);
    u32Val = Clk_GetHClkFreq();
       
        LED_enable; //点灯
        delay1ms(1200);
        LED_disable; //熄灯

    while (1);

}

martinhu 发表于 2019-10-14 15:54 | 显示全部楼层
按照楼主的这段代码,我下载到芯片上是可以直接跑到底的
126995da429b7352ab.png
 楼主| lacha 发表于 2019-10-15 09:12 | 显示全部楼层
跟编译系统会否有关系,我用的是MDK,而且还发现使用printf函数里带用中文会出现乱码的现象
martinhu 发表于 2019-10-21 09:02 | 显示全部楼层
lacha 发表于 2019-10-15 09:12
跟编译系统会否有关系,我用的是MDK,而且还发现使用printf函数里带用中文会出现乱码的现象 ...

和编译系统应该没关系,你外部晶振用的是多少M?驱动库是按照32M配置的,如果不是32M,需要调节XTH相关寄存器的参数。
 楼主| lacha 发表于 2019-10-21 15:02 | 显示全部楼层
我用的是11.0592MHZ / 22.12MHZ,有根据PDF资料修改XTH参数的,怀疑例程不行,自己按照PDF的11个步骤重写切换外部震荡,结果还是不行。。。
void C_Unlock(void)
{   M0P_CLOCK->SYSCTRL2 = 0x5A5A;
    M0P_CLOCK->SYSCTRL2 = 0xA5A5;
}

void Clk_TO_XT(en_clk_source_t enSource)
{        M0P_GPIO->P0ADS_f.P01 = TRUE; //1
        M0P_GPIO->P0ADS_f.P02 = TRUE;
        M0P_CLOCK->XTH_CR_f.DRIVER = 0x0A; //2 :22.12Mhz
        Clk_SetXTH_StableTime(ClkCycle16384); //3
        C_Unlock(); //4
        M0P_CLOCK->SYSCTRL0_f.XTH_EN = TRUE; //5
//频率大于24MHZ还需加入FLASH等待 //6
    while (FALSE == Clk_GetClkRdy(ClkXTH)) ; //7
        delay1ms(10);
        C_Unlock(); //8
        M0P_CLOCK->SYSCTRL0_f.CLK_SW4_SEL = ClkXTH; //9
        C_Unlock(); //10
        M0P_CLOCK->SYSCTRL0_f.RCH_EN = FALSE; //11
}

评论

GPIO的外设时钟使能了吗  发表于 2019-10-22 19:00
戈卫东 发表于 2019-10-21 15:20 | 显示全部楼层
是不是板子没弄好。。。
 楼主| lacha 发表于 2019-10-21 15:41 | 显示全部楼层
使用内部RC震荡可以正常工作的,外部震荡就只是增加1个晶振和配套的2个电容,晶振和电容都换过好几次了
2a.JPG
kq800 发表于 2019-11-3 00:36 | 显示全部楼层
就用例程,按要求做是可以起振的。但是晶振起振可靠性有点说不准!芯片要求比较高,比如芯片是3.3V供电如果I/O口有5V的电平那就根本不会起振!
liaotian001 发表于 2019-11-4 10:09 | 显示全部楼层
kq800 发表于 2019-11-3 00:36
就用例程,按要求做是可以起振的。但是晶振起振可靠性有点说不准!芯片要求比较高,比如芯片是3.3V供电如果 ...

L011 不支持5V-torlance 功能, IO电压不能超过VDD +0.3V,否则会损坏MCU
gwsan 发表于 2019-11-12 13:28 | 显示全部楼层
晶振没有问题吗
kxsi 发表于 2019-11-12 14:01 | 显示全部楼层
应该不是共性问题
D调胖子 发表于 2019-11-15 17:17 | 显示全部楼层
714715dce6ce8adbef.png
你PCB 设计时应该注意,不要让VCAP的滤波电容靠近晶体
会相互影响

评论

还有,晶体的匹配电容 设计也需要注意  发表于 2019-11-15 17:20
buffered 发表于 2019-11-17 18:28 | 显示全部楼层
是不是楼主的晶振质量不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

29

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部