月月鸟刘 发表于 2018-10-19 15:35:13

STM32F405晶体不起振

STM32F405的一个板子,现在外接低频晶体32.768MHz用作实时时钟;还外接了25MHz晶体用作CPU主时钟晶体;现在板子焊好可以连接J-link,能够识别STM32型号,下载程序也正常,但是外接的两个晶体都不能起振,示波器测试没有波形,一直为低,请问是什么原因导致的,与程序是否有关?(现在已经换了几个晶体了,也用过12M和16M的,同样不能起振;负载电容也调整过,都不能起振;引脚测试连线没有问题,电源也正常)

wenyangzeng 发表于 2018-10-19 16:00:47

本帖最后由 wenyangzeng 于 2018-10-19 16:02 编辑

HSE如果没有使能当然不起振了:



不过这个F405的LSE在CubeMX中好像使能不了,选项是灰色的。

void SystemClock_Config(void)
{

RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;

    /**Configure the main internal regulator output voltage
    */
__HAL_RCC_PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

    /**Initializes the CPU, AHB and APB busses clocks
    */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}

    /**Initializes the CPU, AHB and APB busses clocks
    */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}

    /**Configure the Systick interrupt time
    */
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    /**Configure the Systick
    */
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}


奏奏奏 发表于 2018-10-19 16:24:28

不起振的现象是用示波器测出来的吗?
如果是的话,先查硬件问题。

s2333 发表于 2018-10-19 16:29:17

会不会是system_stm32f4xx.c里面的时钟参数忘记设置了

jyl518-283289 发表于 2018-10-19 16:34:51

PCB不良,或是焊接不良,或是晶体不良

月月鸟刘 发表于 2018-10-19 18:05:56

硬件连接没问题,晶振,负载电容,串阻能换的都换了,但是还是无法起振。

月月鸟刘 发表于 2018-10-19 18:07:16

wenyangzeng 发表于 2018-10-19 16:00
HSE如果没有使能当然不起振了:




我是搞硬件的,对于软件配置了解不多,就是需要软件相关配置,晶振才能起振吗?

wenyangzeng 发表于 2018-10-19 20:52:56

月月鸟刘 发表于 2018-10-19 18:07
我是搞硬件的,对于软件配置了解不多,就是需要软件相关配置,晶振才能起振吗? ...

是的,楼主可以将2楼的代码运行一下试试

maxtch 发表于 2018-10-20 11:49:05

STM32 默认上电是不启动晶振的,需要代码里面去专门开启。

月月鸟刘 发表于 2018-11-19 16:08:51

wenyangzeng 发表于 2018-10-19 16:00
HSE如果没有使能当然不起振了:




OK,最后发现确实是软件的问题,谢谢。
页: [1] 2
查看完整版本: STM32F405晶体不起振