打印

GD32F303VE初始化死循环

[复制链接]
804|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aokai|  楼主 | 2023-4-26 16:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
GD32F303VE,外部8M晶振,boot0采用10K下拉到GND,时钟配置为HXTAL,48M,结果下载程序,运行到   
while(0U == (PMU_CS & PMU_CS_HDRF)){
    }
卡死,手册上说1.2V电源域高驱动模式,卡死在这里,表示1.2V电源域高驱动模式未准备就绪。外部晶振也未起振,3.3V供电也正常,3.3V是通过LDO将5V转换过来的。
百思不得其解,打样回来5块电路板都是这个效果。

使用特权

评论回复
沙发
sonicll| | 2023-4-27 13:41 | 只看该作者
本帖最后由 sonicll 于 2023-4-27 13:44 编辑

你的时钟是外部HSE 48M,还是用PLL倍频到48M?如果HSE是48M,好像超范围了吧,手册上最大32M

使用特权

评论回复
板凳
aokai|  楼主 | 2023-4-28 09:01 | 只看该作者
sonicll 发表于 2023-4-27 13:41
你的时钟是外部HSE 48M,还是用PLL倍频到48M?如果HSE是48M,好像超范围了吧,手册上最大32M ...

外部是8M无源晶振,采用PLL,倍频到48MHz的,
system_gd32f30x.c中这样定义的:
/* use HXTAL(XD series CK_HXTAL = 8M, CL series CK_HXTAL = 25M) */
//#define __SYSTEM_CLOCK_HXTAL                    (uint32_t)(__HXTAL)
#define __SYSTEM_CLOCK_48M_PLL_HXTAL            (uint32_t)(48000000)
//#define __SYSTEM_CLOCK_72M_PLL_HXTAL            (uint32_t)(72000000)
//#define __SYSTEM_CLOCK_108M_PLL_HXTAL           (uint32_t)(108000000)
//#define __SYSTEM_CLOCK_120M_PLL_HXTAL           (uint32_t)(120000000)

系统初始化的时候,也是调用这个函数static void system_clock_48m_hxtal(void)
这都是GD官网上下载的库例程中

使用特权

评论回复
地板
aokai|  楼主 | 2023-4-28 09:06 | 只看该作者
本帖最后由 aokai 于 2023-4-28 09:25 编辑
sonicll 发表于 2023-4-27 13:41
你的时钟是外部HSE 48M,还是用PLL倍频到48M?如果HSE是48M,好像超范围了吧,手册上最大32M ...

同样的,我采用GD32F303RC做的另外一块电路板,也是8Mhz无源晶振,则很正常,没有类似问题。
boot0下拉电阻也是10K到GND,供电也是LDO 1117输出的3.3V。各电源电容也靠近了管脚。芯片在兆易天猫官方旗舰店买的样品,顺表吐槽一下,包装太随意了。


原理图.png (576.73 KB )

原理图.png

PCB.png (338.17 KB )

PCB.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

87

帖子

1

粉丝