打印
[研电赛技术支持]

GD32F303ZE复位时间过长怎么解决?

[复制链接]
1064|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaobq|  楼主 | 2022-10-24 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gaobq 于 2022-10-24 11:17 编辑

使用GD32F303ZE,一直都是在嘉立创SMT,GD32,晶振都是嘉立创的基础库元器件。
最近做了5块板子,程序写进去,跑不起来,焊了两块都是一样的现象。
发现在单片机的RESET脚上对地并了一个100uF的大电容,单片机就能复位成功,软件正常运行。单不明白原因,为什么这批板子复位需要时间长才行,以前的板子都是复位10k上拉电阻,100nF对地电容,同样是GD32F303,从未出现过问题。
百度上找到一篇文件,说是可能外部晶振起振时间过长,在换外部晶振处加个延时,于是就在system_gd32f30x.c文件中的 外部120MHz定义处加了个软件延时,但是不起作用?
#elif defined (__SYSTEM_CLOCK_120M_PLL_HXTAL)
/*!
    \brief      configure the system clock to 120M by PLL which selects HXTAL(8M) as its clock source
    \param[in]  none
    \param[out] none
    \retval     none
*/
static void system_clock_120m_hxtal(void)
{
    uint32_t timeout = 0U;
    uint32_t stab_flag = 0U;
    uint32_t i;
   
    i=0xFFFFFF;
    while(i--);
   
    /* enable HXTAL */
    RCU_CTL |= RCU_CTL_HXTALEN;

    /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
    do{
        timeout++;
        stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB);
    }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));

    /* if fail */
    if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){
        while(1){
        }
    }
......

请问大家有没有遇到复位时间过长的问题?是什么原因导致的?怎么解决,飞个大电容可以解决,但是太麻烦,板子上没有设置安装电容的位置。

使用特权

评论回复
沙发
tpgf| | 2022-11-4 15:24 | 只看该作者
51单片机要复位只需要在第9引脚接个高电平持续2us就可以实现

使用特权

评论回复
板凳
qcliu| | 2022-11-4 15:35 | 只看该作者
电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。

使用特权

评论回复
地板
drer| | 2022-11-4 15:49 | 只看该作者
  在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。  

使用特权

评论回复
5
coshi| | 2022-11-4 16:06 | 只看该作者
1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。 2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

使用特权

评论回复
6
kxsi| | 2022-11-4 16:29 | 只看该作者
当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为低电平,之后随着时间推移电源通过电阻对电容充电,充满电时RST为高电平。正常工作为高电平,低电平复位。即上电低电平,然后转向高电平。当单片机上电瞬间由于电容电压不能突变会使电容两边的电位相同,此时RST为高电平,之后随着时间推移电源负极通过电阻对电容放电,放完电时RST为低电平。正常工作为低电平,高电平复位。

使用特权

评论回复
7
wiba| | 2022-11-4 16:37 | 只看该作者
单片机的复位引脚RST(全称RESET)出现2个机器周期以上的复位电平时,单片机就执行复位操作。

使用特权

评论回复
8
chenjun89| | 2022-11-4 21:13 | 只看该作者
外部晶振是MCU运行起来后先配置才生效的

使用特权

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

本版积分规则

172

主题

827

帖子

5

粉丝