(1) 中断服务程序:void fn_usb_isr()
(2) 端口0 OUT中断:void epo_rxdone(viod)
(3) 端口0 IN处理:void epo_txdone (viod)
协议层(CHAP_9.C)和PROTODMA.C用来处理标准的USB设备请求及特殊的厂商请求, 如DMA 等。所有请求都是通过端点0 接收和发送SETUP 包完成的。所有SETUP 包都由函数control_handler () 来处理。
Void control_handler ()
{
unsigned char type,req; //读取请求类型
type=ControlData.DeviceRequest.bmRequestType&USB_REQUEST_TYPE_MASK;
//读取请求代码
req= ControlData.DeviceRequest.bRequest&USB_REQUEST_MASK;
if(type==USB_STANDARD_REQUEST)
(*StandardDeviceRequest[req])(); //标准请求处理
else if (type==USB_VENDOR_REQUEST)
(*VendorDeviceRequest[req])(); //厂商请求处理
else
Stall_ep0(); //无效请求,返回STALL
}
应用层(mainloop.c ) 实现PDIUSBD12 的所有功能。
应用层要实现的任务包括:
(1) 初始化PDIUSBD12 ,包括初始化PDIUSBD12 的硬件连接、复位PDIUSBD12 、配置PDIUSBD12 的中断服务程序地址、初始化应用层相关的全局变量。
(2) 编写PDIUSBD12 中断服务程序,PDIUSBD12 几乎所有功能都通过PDIUSBD12 中断服务程序完成。
2.2 ARM程序设计
ARM程序整体流程为图3, 根据不同的按键值在液晶上显示不同的内容。
开始
初始化系统
数据采集、处理
USB中断?
Y
USB通信
N
有键按下? Y
N
根据处理、计算得到
的功率因数,通过无
触点开关投切电容器 键值分析
根据键值读取储存器
内容并在液晶上显示
图3 主程序流程图
3结束语
在ARM7 LPC2220嵌入式控制器硬件平台上,实现了对电网无功电流和无功电压的数据采集、处理、D12驱动,在I2C总线协议方式下,提供相应的硬件设计和软件设计方法。为无功动态补偿控制器提供了一种方便、可靠的方案。
为保证装置的可靠性,控制器采取了一系列的措施:
< >交流电源输入端加装电源滤波器;印制版电路采用最短走线法,元器件的排列尽量使分布电容最小,地线构成环路;采用 “看门狗”技术。黄锋,谢运祥,黄敏俊.智能TSC低压动态无功补偿控制器设计[J].电气传动自动化, 2007(03)
[3] 刘小林,范育兵,罗春晖. 基于FPGA的多通道数据采集系统设计,电子技术应用,2009.7,35(7):42-44.
[4] 杨健,张慧慧.基于DSP和ARM的网络化数据采集与信号分析终端[J].计算机工程,2006,32(8):269-271.
[5] 田小林,王建华;无功补偿控制器中数据采集及FFT算法处理[J];仪表技术与传感器;2004(04)
[6] 胡金双,吴文传,张伯明,孙宏斌,李民,高雪生,陈伯胜;基于分级分区的地区电网无功电压闭环控制系统[J];继电器;2005(01)