你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32h750vbtx vos等级无法调整

[复制链接]
pedro 提问时间:2019-4-18 16:06 /
用cubemx自动生成代码,只要主频设置的超过200MHz就需要调整vos等级
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);  或者
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
只要调整完vos等级程序就会一直卡在vosrdy位上。系统默认的vos3等级不会卡在这一位上。
附上部分源码:
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};

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

  while ((PWR->D3CR & (PWR_D3CR_VOSRDY)) != PWR_D3CR_VOSRDY) <--  程序卡在这条
  {
   
  }
..........
}

收藏 评论10 发布时间:2019-4-18 16:06

举报

10个回答
pedro 回答时间:2019-4-19 10:39:38
不要沉下去啊
pedro 回答时间:2019-4-21 12:39:48
又沉下去了,顶上去
Kevin_G 回答时间:2019-4-21 22:49:04
试试官方例程:
/**
  * @brief  System Clock Configuration
  *         The system Clock is configured as follow :
  *            System Clock source            = PLL (HSE BYPASS)
  *            SYSCLK(Hz)                     = 400000000 (CPU Clock)
  *            HCLK(Hz)                       = 200000000 (AXI and AHBs Clock)
  *            AHB Prescaler                  = 2
  *            D1 APB3 Prescaler              = 2 (APB3 Clock  100MHz)
  *            D2 APB1 Prescaler              = 2 (APB1 Clock  100MHz)
  *            D2 APB2 Prescaler              = 2 (APB2 Clock  100MHz)
  *            D3 APB4 Prescaler              = 2 (APB4 Clock  100MHz)
  *            HSE Frequency(Hz)              = 8000000
  *            PLL_M                          = 4
  *            PLL_N                          = 400
  *            PLL_P                          = 2
  *            PLL_Q                          = 4
  *            PLL_R                          = 2
  *            VDD(V)                         = 3.3
  *            Flash Latency(WS)              = 4
  * @param  None
  * @retval None
  */
static void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;
  HAL_StatusTypeDef ret = HAL_OK;
  
  /*!< Supply configuration update enable */
  MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);

  /* The voltage scaling allows optimizing the power consumption when the device is
     clocked below the maximum system frequency, to update the voltage scaling value
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
  
  /* Enable HSE Oscillator and activate PLL with HSE as source */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
  RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
  RCC_OscInitStruct.CSIState = RCC_CSI_OFF;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

  RCC_OscInitStruct.PLL.PLLM = 4;
  RCC_OscInitStruct.PLL.PLLN = 400;
  RCC_OscInitStruct.PLL.PLLP = 2;
  RCC_OscInitStruct.PLL.PLLR = 2;
  RCC_OscInitStruct.PLL.PLLQ = 4;

  RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
  RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
  ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
  if(ret != HAL_OK)
  {
    Error_Handler();
  }
  
/* Select PLL as system clock source and configure  bus clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 | \
                                 RCC_CLOCKTYPE_PCLK2  | RCC_CLOCKTYPE_D3PCLK1);

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;  
  RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
  RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
  ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
  if(ret != HAL_OK)
  {
    Error_Handler();
  }

  /*activate CSI clock mondatory for I/O Compensation Cell*/  
  __HAL_RCC_CSI_ENABLE() ;
   
  /* Enable SYSCFG clock mondatory for I/O Compensation Cell */
  __HAL_RCC_SYSCFG_CLK_ENABLE() ;
  
  /* Enables the I/O Compensation Cell */   
  HAL_EnableCompensationCell();
  
}

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

pedro 回答时间:2019-4-22 00:44:42
谢谢,用 MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);后确实可以了,调试进去发现fclock确实是在400MHz了,但手册上这么说的
Bit 2 SCUEN: Supply configuration update enable
This bit is read-only:
0: Supply configuration update locked.
1: Single write enabled to Supply configuration (LDOEN and BYPASS)
这位只是使能了对bit1和bit2修改,并没有做任何实际操作啊,怎么就莫名其妙的可以修改vos了,这时给vcore供电的是稳压器呢还是vcap呢,我再另一个帖子上有相关的回复,麻烦看下
http://bbs.21ic.com/icview-2621990-1-1.html
谢谢Kevin201707
pedro 回答时间:2019-4-22 00:53:15
添加 MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);后确实可以,调试进去发现fclock确实是在400MHz了,但是官方手册上这么说的:
Bit 2 SCUEN: Supply configuration update enable
This bit is read-only:
0: Supply configuration update locked.
1: Single write enabled to Supply configuration (LDOEN and BYPASS)
PWR_CR3_SCUEN这一位只是使能了对bit1和bit2的修改,并没有什么实际操作啊,怎么就可以修改vos了呢,况且这个修改之后给vcore供电的是稳压器还是vcap呢不得而知啊。我在另一个论坛上也讨论过这个问题,麻烦移步看下,谢谢
http://bbs.21ic.com/icview-2621990-1-1.html
pedro 回答时间:2019-4-22 00:53:51
Kevin201707 发表于 2019-4-21 22:49
试试官方例程:
/**
  * @brief  System Clock Configuration

添加 MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);后确实可以,调试进去发现fclock确实是在400MHz了,但是官方手册上这么说的:
Bit 2 SCUEN: Supply configuration update enable
This bit is read-only:
0: Supply configuration update locked.
1: Single write enabled to Supply configuration (LDOEN and BYPASS)
PWR_CR3_SCUEN这一位只是使能了对bit1和bit2的修改,并没有什么实际操作啊,怎么就可以修改vos了呢,况且这个修改之后给vcore供电的是稳压器还是vcap呢不得而知啊。我在另一个论坛上也讨论过这个问题,麻烦移步看下,谢谢
pedro 回答时间:2019-4-22 00:55:19
可以搜索“CubeMX 生成的 USB HID 程序,芯片是 STM32H750VBT6”找那个帖子,直接贴网址好像不给审核通过
Kevin_G 回答时间:2019-4-22 09:13:44
你的修改没使能
Kevin_G 回答时间:2019-4-22 09:16:03
pedropeng 发表于 2019-4-22 00:44
谢谢,用 MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0);后确实可以了,调试进去发现fclock确实是在400MHz了,但 ...

新版cubemx可能有,使能这里是更新Vol配置,你之前配置了但是没更新,看看这个寄存器特性。
pedro 回答时间:2019-4-23 00:50:23
Kevin201707 发表于 2019-4-22 09:16
新版cubemx可能有,使能这里是更新Vol配置,你之前配置了但是没更新,看看这个寄存器特性。 ...

嗯,又仔细看了下手册,确实是没有使能。不过这么就使能了,bit0和bit1并没有设置,那我给vcore供电的是稳压器呢还是vcap,是不是高频的时候必须得vcap供电呢。
不过高频的问题还是解决了,再也不用怕复用swdio了,谢谢

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版