STM32开放式开发环境:释放创造力的利器
接器(微控制器的32个引脚都在这个连接器上)。
-Morpho 连接器,可以连接STM32微控制器的全部引脚(76个引脚都在这个连接器上)。
STM32 Nucleo扩展板让设计人员像搭积木一样,在主板上插接多块不同功能的子板,创建一个完整的应用系统。目前意法半导体网站(www.st.com/x-nucleo) 上有20余款扩展板(图4)在售,按功能划分,可以分为五类:
-感测:MEMS 9轴运动传感器; 压力传感器,环境传感器,接近检测传感器; MEMS麦克风
-连接: 低能耗蓝牙、Wi-Fi、NFC和Sub-GHz射频;
-电机控制/致动: 直流电机驱动器、步进电机驱动器、3相直流无刷电机驱动器
-输入/输出: I/O模块(家庭自动化和工业自动化)
-信号调理: 运算放大器
图4 – 各种型号的STM32 Nucleo扩展板
STM32 Nucleo板功能扩展方法类似于Arduino和Raspberry Pi解决方案,便于设计人员快捷开发产品原型。利用这些连接工具,可以将扩展板堆叠插接在主板上,给系统增添新的功能,唯一不足之处是,堆叠式连接方法受限于微控制器外设的使用方式,这个问题的解决方法是,使用I2C和SPI总线替代UART等速度慢的数据总线,这样可提高同一总线上所连接设备的数量。此外,Arduino连接器不对称排列设计可有效防止STM32 Nucleo扩展板连接方向错误,降低电源连接错误损坏设备的风险。扩展板使用STM32 Nucleo开发板上LDO稳压器通过板上5V电源生成的3.3V电源,用户可以使用跳线(JP5)为开发板选择USB 5V电源或外部E5V电源。有些扩展板需要更高的电压,例如,电机驱动器和I/O扩展板,因此,开发板上还增加一个电源连接器,利用外部电源驱动负载,提供更高的电压Vbus(最高45V)。
为安全起见,多数扩展板是为低功率应用设计,50V以下电压在电源极性接反或短路时可以降低板子烧毁风险,所以适合初学者和学生使用。
这些低功耗的扩展板还可以单独连接高压高功率的电机控制扩展板,但是,我们只建议电机控制专业人士选用这种配置。为了便于区分,我们将高功率STM32 Nucleo扩展板涂成绿色,其余的扩展板全都是蓝色。高功率电机控制扩展板兼备高压高功率扩展板和低压扩展板的双重优点,在电机控制应用中轻松增加数据通信功能,例如,使用射频技术远程驱动高压电机或使用低能耗蓝牙或Wi-Fi获取电机驱动信息和远程记录失败数据。
STM32Cube扩展软件
STM32 Nucleo扩展板可以像搭积木一样插接到开发板上,几分钟就能组建一个硬件平台。不过,软件才是设计项目中最耗时的环节,通常占用研发周期70-80%的时间。STM32Cube将积木式组装方法带到软件设计中。软硬件一致是STM32开放式开发环境的特性之一,因此,每个STM32Cube扩展软件包都为用户提供例程,其中包含各种软件库,例如,电机控制、低能耗蓝牙协议栈或NFC射频处理功能,全部都是开源软件。
STM32Cube扩展软件包附加的例程非常实用,能够帮助设计人员快速熟悉设备软件库。以下面的步进电机驱动软件演示项目为例,用户可将其中所需功能复制到自己的软件项目:
//----- Init of the Motor control library
/* Start the L6474 library to use 1 device */
/* The L6474 registers are set with the predefined values */
/* from file l6474_target_config.h*/
BSP_MotorControl_Init(BSP_MOTOR_CONTROL_BOARD_ID_L6474, 1);
/* Attach the function MyFlagInterruptHandler (defined below) to the flag interrupt */
BSP_MotorControl_AttachFlagInterrupt(MyFlagInterruptHandler);
/* Attach the function Error_Handler (defined below) to the error Handler*/
BSP_MotorControl_AttachErrorHandler(Error_Handler);
//----- Move of 16000 steps in the FW direction
/* Move device 0 of 16000 steps in the FORWARD direction*/
BSP_MotorControl_Move(0, FORWARD, 16000);
/* Wait for the motor of device 0 ends moving */
BSP_MotorControl_WaitWhileActive(0);
/* Wait for 2 seconds */
HAL_Delay(2000);
//----- Move of 16000 steps in the BW direction
/* Move device 0 of 16000 steps in the BACKWARD direction*/
BSP_MotorControl_Move(0, BACKWARD, 16000);
/* Wait for the motor of device 0 ends moving */
BSP_MotorControl_WaitWhileActive(0);
…
因为基于STM32Cube的软件库的模块化结构,每个扩展板软件模块都可以作为中间件添加到用户项目,添加操作可以在项目开发过程中随时进行,也可以添加到已经存在的复杂项目内(图5)。
图 5
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- 微控制器省电管理方法(05-04)
- 基于DSP和Cygnal单片机的移动数据处理传输系统 (07-06)
- 从硅片工艺技术到嵌入式软件的全方位低功耗系统设计(01-01)
- 基于IAP的STM32程序更新技术(01-23)
- 发挥ARM Cortex-M3和M4微控制器最大作用的要诀(01-21)