想用stm32f103c8t6驱动2个步进电机(额定电压12V,额定电流1.5A),用参数多少的开关电源才合适?

想用stm32f103c8t6驱动2个步进电机(额定电压12V,额定电流1.5A),应该怎样驱动,需要用多少块驱动板,用参数多少的开关电源才合适?

通常按额定电流5倍冗余

  • 看下这篇博客,也许你就懂了,链接:【stm32】如何把原子哥的代码移植到最小系统板stm32f103c8t6 以跑马灯实验为例
  • 除此之外, 这篇博客: 从头开始写STM32F103C8T6驱动库(二)——编写系统初始化程序,配置时钟树中的 介绍系统时钟树 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • /**
      * @brief  Setup the microcontroller system
      *         Initialize the Embedded Flash Interface, the PLL and update the 
      *         SystemCoreClock variable.
      * @note   This function should be used only after reset.
      * @param  None
      * @retval None
      */
    void SystemInit (void)
    {
    #if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
      #ifdef DATA_IN_ExtSRAM
        SystemInit_ExtMemCtl(); 
      #endif /* DATA_IN_ExtSRAM */
    #endif 
    
      /* Configure the Vector Table location -------------------------------------*/
    #if defined(USER_VECT_TAB_ADDRESS)
      SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
    #endif /* USER_VECT_TAB_ADDRESS */
    }
    

    大家打开system_stm32f1xx.c文件找到SystemInit函数实现,这是STM32CubeMX生成的,我们需要将此函数进行改写。

    首先介绍一下STM32的时钟树
    在这里插入图片描述

    在STM32F103C8T6中有四个系统时钟源分别为
    1. 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
    2. 高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。
    3. 低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。
    4. 低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。

    我们选择信号稳定的高速外部时钟(HSE),假设我们的晶振频率是8MHz。而STM32F103C8T6最大频率不是72MHz吗怎么用8MHz呢?
    我们还需要将晶振输出的信号通过锁相环PLL进行9倍频输出给各个外设桥而8*9=72所以外设桥的工作频率实际上就是72MHz了