- UID
- 872339
|
摘要:为了实现直流电源的监控,提出了一种具有USB HID数据通信功能的直流电源设计方案。详细论述了基于STM32 USB固件库(USB-FS Device library V3.3)的自定义HID类下位机的实现,介绍了如何在VC2010集成开发环境中编写多线程上位机程序并运用PlotLab(一个快速信号绘图和可视化的VCL组件)显示实时波形,最后再以实验开发板和PC实现了HID数据通信,证明了此监控设计方案的可行性。
关键词:STM32;USB HID;VC2010;固件库
USB的“即插即用”使其成为了现行十分流行的计算机应用接口,从最初的USB1.1到USB2.0及已经出现的USB3.0协议,USB取得了很大的发展,并有取代RS232之趋势,越来越多的电子设备开始包含USB接口,当电子设备拥有了USB接口,设备将会更易实现数据通信方便设备的使用和功能的扩展。
1 USB HID类简介
在众多的USB设备类型中,HID类是Windows完全支持的第一批设备类型,它是为一些人工的输入输出设备而设计的,连接到计算机的USB设备几乎都包含HID类,用于信号控制。Windows系统自带了HID类的驱动程序,所以使用HID类来实现数据通信将无需为其开发、安装驱动,PC应用程序可以直接使用Windows API与之进行通信,这样将会大大的降低开发难度,缩短开发周期。
2 电源系统概述
直流电源基于STM32F107VC设计,可以通过电源的LCD和键盘或者PC上位机监控电源,PC上位机可以设定电源的输出并能以1 kHz或者100 kHz(只持续0.1 s)的采样率观察电源的输入输出波形。整个电源的系统简化框图如图1所示,市电经PFC(功率补偿)后经过不可控整流电路变成直流,STM32F107X主控模块通过电源面板或者USB接口连接PC上位机实现用户交互,同时STM32F107X利用AD检测电源的输入输出,运用数字PID产生PWM控制BUCK电路将整流后的直流变换成用户想要的输出,单端反激电路为主控模块提供5 V电源,这些与平常的BUCK直流电源相比除了拥有USB接口其他并无太多差异。整个下位机软件流程图如图2所示,下位机程序在开始时初始化外设和定义全局变量,再开启USB、DMA和定时器等中断,之后就循环等待本地面板的控制并刷新面板,DMA在将AD采样电源输入输出得到的数值存入4个全局变量之后产生中断将4个全局变量根据发送模式送入USB发送缓冲区,定时器定时利用这4个全局变量和PID算法控制电源的输出,USB中断将发送缓冲区的数据发送给上位机和将接收到的数据存入接受缓冲区并根据接收到的数据更改下位机的全局标志位。
USB HID类的速度有限,最大有效数据速度为64 kByte/s(最大1 kHz的传输频率,每次最大传输64 Byte),本设计采用的速度是:16kBy te/s(1 kHz的传输频率,每次传输16Byte);这样在不使用缓存的情况下只能以1 kHz的采样率显示实时波形,为了显示更高采样率的波形本设计使用了12 k的缓冲区存储100 kHz采样率的数据,12 K的缓冲区可以存储1 000次采样的数据,在下位机采样率为100 kHz的情况下1 000次采样对于下位机是0.1 s钟,但对于上位机却是1秒钟,所以上位机选择100 kHz采样率查看下位机输入输出的操作每秒钟只能操作一次,这也能基本满足谐波分析的需求。本设计中上下位机传递的16 Byte中每个字节的含义如图3所示。
|
|