新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于AVR VUSB技术的数控直流稳压电源设计

基于AVR VUSB技术的数控直流稳压电源设计

作者: 时间:2013-10-11 来源:网络 收藏


图3 电压电流放大电路。

1.3 VUSB接口

VUSB是用普通的通用单片机,配以较高频率的晶振(12MHz或16MHz),模拟产生USB所需信号,从而模拟出标准的USB HID设备(鼠标、键盘、简单通信)的解决方案,构成一个低成本的USB设备。USB共有4根线,2根5V电源,两根差分信号线D+、D-.由于是低速设备,D-必须要有1.5kΩ的上拉电阻。

VUSB接口电路如图4所示,单片机的PD1和PD2通过68Ω的限流电阻分别接入标准USB接口的D-、D+.

需要注意的是D+必须接上单片机的外部中断0管脚,在此为了简化连接直接将PD2(INT0)接入作为其中的一根信号线使用。由于USB信号线的电压最大为3.6V,所以在D-和D+上分别并接了一个3.6V的稳压二极管。

图4 VUSB接口电路。

2 系统软件设计


软件设计包括下位机和上位机2部分。下位机主要负责接收上位机的设置电压值,并经过转换后输入到MAX522,从而输出设置电压。上位机则通过VUSB与下位机连接,并通过模拟的USB协议向下位机写入数据。

2.1 下位机软件

下位机软件流程图如图5所示。其中设备初始化包括单片机端口初始化、DAC初始化及VUSB端口初始化。在初始化之后,程序进入主循环,在其中加入了USB轮询函数usbPoll(),用来侦测USB事件。一旦侦测到上位机有USB通信请求时,usbdrv就会调用usbFunctionSetup()函数来处理请求。在此请求函数中接收上位机传来的数据并将此数据转换后写入MAX522数据端口,启动DAC输出电压。

图5 下位机软件流程。

设计中需注意以下几点:

1)单片机方面的VUSB 底层驱动函数使用USB,最新版本的-USB为C语言编写并有详细的注释。开发平台为WinAVR.GCC项目文件夹中需包含驱动文件(usbdrv文件夹),并对usbconfig.h中的部分宏定义做一些修改。

#define USB_CFG_IOPORTNAME D//这个接口连接USB总线。当配置为"D"时,寄存器PORTD,PIND and DDRD将有效。

#define USB_CFG_DMINUS_BIT 1//位配置,是在USB_CFG_IOPORT 中连接USB D-的线。可以配置为接口的任何位。

#define USB_CFG_DPLUS_BIT 2//位配置,是在USB_CFG_IOPORT 中连接USB D+的线。也可以连接到任意口,但是注意D+一定要连接都中断口INT0

2)单片机在接收到读取数据命令时会自动调用usbFunctionSetup(uchar data[8]),在函数内把全局指针*usbMsgPtr指向所要发送的数据首地址,然后返回(函数返回值)所发送数据的长度就可以了。由于采用的是命令包方式传输数据,每次只能接收4个字节的有效数据,存储在data[2]~data[4]中。


评论


相关推荐

技术专区

关闭