可穿戴设备+Qi兼容无线充电是完 可穿戴设备在今年全面爆发,智能手表、智能手环、智能眼镜等越来越多。而目前可穿戴设备遇到最大的问题就是电池续航时间短、充电不方便,无线充电解决方案可令这些问题迎刃而
摘 要: 由于视频监控技术的快速发展,云台控制系统的实时性定位成了需要解决的问题,因此选用高性能的微处理器和实时操作系统可以提高系统性能,解决实时性和互通性问题。设计基于FreeRTOS的云台控制系统,STM32作为云台解码板的主控器,通过解析云台控制命令驱动步进电机的转动,利用FreeRTOS将应用程序划分为多个重要性不同的任务,在各个任务之间合理地分配CPU时间和系统资源。调试结果表明,系统实现了实时性全方位精确定位,支持并自动识别PELCO-D、PELCO-P、SAMSUNG等通信协议。
关键词: 实时操作系统;STM32;FreeRTOS;移植;云台控制
0 引言
随着视频监控系统中智能高速球型摄像机的广泛应用,云台控制系统的稳定性对其性能起着主导作用。但大部分云台控制系统不能实现快速实时性定位,不同品牌摄像机和云台解码板存在通信协议互通问题。文献[1]采用低功耗直流电机,配合旋转编码器实现云台精确定位。文献[2]基于ARM和Linux设计系统,实现步进电机的控制。文献[3]以LPC2132为主控制器,μC/OS-II为软件平台实现球机控制。文献[4]介绍了PELCO-D协议,基于Windows下的VC++,实现对云台和镜头的控制。这些研究实现了监控定位功能,但是,采用Linux开发难度大,采用μC/OS-II又要考虑版权成本问题,系统实时性需要改进,支持多种标准通信协议的云台控制系统还有待研究。
FreeRTOS是源码公开的实时操作系统[5],能移植于各种微处理器,提高实时性;ARM Cortex-M3处理器具有低功耗、高性能、外设完善的优点。因此,本文设计基于FreeRTOS和STM32F103的云台控制系统,通过STM32处理云台控制命令驱动步进电机的转动,FreeRTOS作为云台控制系统软件平台,实现水平垂直方向准确定位、预置点巡航、花样扫描、定时扫描的功能,支持并自动识别多种通信协议,确保系统的可靠性和实时性[6]。
1 基于STM32F103的云台控制系统
高速球机监控系统主要由一体化摄像机、云台驱动解码装置组成。云台控制系统是高速球机的核心,兼容PELCO-D、PECLO-P、SAMSUNG、DAHUA、YAAN等云台协议,通信方式为RS485,将控制器发送过来的大电流电感器工厂码源信号解码处理,完成码源信号中定义的操作,包括电机、机芯控制以及大量数据存储、调用。STM32F103基于ARM Cortex-M3内核,主频高达 72 MHz,通过定时器产生PWM输出控制电机转动[7]。主控板硬件电路包括以下部分:步进电机控制驱动、数据存储、球机参数配置模块、OSD字符显示及电源模块电路等,如图1所示。
STM32F103控制其他模块电路完成各自的功能。由于STM32的GPIO口数量有限,采用两片74HC165AD对GPIO口扩展,将拨码开关等并行数据转成串行数据送给STM32;STM32自带独立看门狗IWDG和窗口看门狗WWDG模块,检测和解决由系统软件错误引起的故障,保证系统可靠性;PWM脉冲信号和L6219电机驱动芯片构成电机控制模块主要电路,控制器发出PWM脉冲信号,脉冲个数决定电机角度位移量,脉冲频率决定电机转动速度;L6219驱动两相步进电机绕组,内部具有二极管及PWM电流控制,实现球机在水平360°和垂直180°的旋转;N2553和25Q80 Flash芯片实现字库存储OSD菜单功能,使球机配置更灵活简便;数据存储电路使用EEPROM实现预置位、参数、运行状态等数据的掉电存储。
2 FreeRTOS在STM32上的移植
FreeRTOS提供任务、时间和内存管理以及信号量、消息队列等功能,具有多任务调度策略、占用空间和内存小、可移植裁剪的特点; FreeRTOS的移植主要包含编译器相关的数据类型和堆栈类型定义、任务调度器启动函数、临界区进入与退出、时钟中断嵌套服务程序等。
2.1 FreeRTOS移植原理
云台控制系统软件在STM32上移植,需要修改startup_stm32f10x_ha.s启动文件,FreeRTOS采用中断完成任务处理[8],修改STM32固件库默认的中断服务函数名称,这样中断发生后跳转到FreeRTOS代码里定义的中断服务函数,改SVC_Handler、PendSV_Handler、SysTick_Handler为vPortSVHandle、xPortPendSVHandler、xPortSysTickHandler。为了保证系统软件可移植性,FreeRTOS中代码不直接使用和编译器相关的C语言 long、short、int等数据类型,所以在portmacro.h中根据使用编译器IAR的字节长度定义对这些数据类型进行定义。
2.2 移植的关键点