意大利设计网站推荐,网站菜单栏代码,软件项目实施流程,做器材的网站近期在使用STM32H563ZIT6这款芯片在开发板上使用正常#xff0c;烧录到自己打的板子就遇到了芯片烧录一次后#xff0c;再次上电无法烧录的问题。
遇到问题需要从以下5点进行分析。
首先看下开发板的原理图
1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…近期在使用STM32H563ZIT6这款芯片在开发板上使用正常烧录到自己打的板子就遇到了芯片烧录一次后再次上电无法烧录的问题。
遇到问题需要从以下5点进行分析。
首先看下开发板的原理图
1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家搞个3.3V上拉10k电阻。防止出现烧录问题。 3.注意VCAP脚也是悬空的。VCAP是为核心供电的滤波电容引脚当ldo关闭时候核心电压直接从Vcap引脚进入。或者也可以打开内部LDO从VDDLDO引脚接入采用混合模式供电dcdcldo的模式。 4.要使用正版ST-LINK进行烧录。
判断ST-LINK是否是正版的方法如下
打开STM32CubeProgrammer识别ST-LINK。
注意ST-LINK的Serial number如果是一串很长的序列号则是正版ST-LINK。否则是盗版 ST-LINK。正版如下图所示。 5.代码配置注意代码中配置芯片核心区域使用供电方式。手册中重要部分如下。 从上图可知芯片核心区域默认是使用SMPS供电的当PWR_SCCR寄存器的BYPASS 置1时使用的是LDO供电。
注意SDK的代码的SystemClock_Config函数没有进行供电配置。说明使用SMPS供电正常烧录开发板是没有问题的。
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct {0};RCC_ClkInitTypeDef RCC_ClkInitStruct {0};/** Configure the main internal regulator output voltage*/__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState RCC_HSE_BYPASS_DIGITAL;RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource RCC_PLL1_SOURCE_HSE;RCC_OscInitStruct.PLL.PLLM 4;RCC_OscInitStruct.PLL.PLLN 250;RCC_OscInitStruct.PLL.PLLP 2;RCC_OscInitStruct.PLL.PLLQ 2;RCC_OscInitStruct.PLL.PLLR 2;RCC_OscInitStruct.PLL.PLLRGE RCC_PLL1_VCIRANGE_1;RCC_OscInitStruct.PLL.PLLVCOSEL RCC_PLL1_VCORANGE_WIDE;RCC_OscInitStruct.PLL.PLLFRACN 0;if (HAL_RCC_OscConfig(RCC_OscInitStruct) ! HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2|RCC_CLOCKTYPE_PCLK3;RCC_ClkInitStruct.SYSCLKSource RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV1;RCC_ClkInitStruct.APB3CLKDivider RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_5) ! HAL_OK){Error_Handler();}
}
但如果加入以下一句
HAL_PWREx_ConfigSupply(PWR_EXTERNAL_SOURCE_SUPPLY);
那么开发板就不能正常运行了也不能进行烧写了。
这条语句是将芯片核心区域设置为LDO进行供电。
解决方法如下
如下图所示将芯片的VCAP脚直连3.3V,就可以正常进行烧写程序了。 上图是我打的测试板将VCAP与VDD相连STM32CubeProgrammer就可以连接到芯片了。