基于P89C61x2/ISP1581的USB接口电路的设计
发布时间:2008/6/3 0:00:00 访问次数:278
本设计采用控制芯片p89c61x2和接口芯片isp1581实现usb接口电路的设计。
p89c61x2包含1024b ram、64kb flash存储器、32个i/o口、3个16位定位/计数器、6个中断源-4个中断优先级-嵌套的中断结构、1个增强型uart、片内振荡器和时钟电路。此外,器件的静态设计使其具有非常宽的频率范围,可选择1mhz~12mhz的 晶体振荡器。具有两个软件可选的节电模式-空闲模式和掉电模式。
usb接口芯片isp1581是一种价格低、功能强的usb接口器件,符合usb2.0规范,并为基于微控制器或微处理器的系统提供了高速usb通信能力;具有7个in端点,7个out端点和1个固定的控制in/out端点;可以通过软件控制与usb总线的连接;内部集成了带pll的12mhz晶体振荡器;可通过内部上电复位、低电压复位电路和软件复位。
系统硬件设计
系统的连接框图如图1所示。
isp1581有两种工作模式:通用处理器工作模式和断开总线工作模式。本文的硬件设计中通过设置bus-conf=0实现断开总线
|
系统的固件设计
单片机的固件是usb设备运行的核心。主要包括以下几个部分:
kerne1.c:循环扫描usb事件;启动设备和系统的工作;
isr.c:中断服务程序;
chap9.c.包含标准usb命令,用于在设备和主机之间建立一个基本连接;
vendor.c:包含厂商定义命令,处理厂商请求;
init.c:初始化单片机和isp1581芯片。
初始化程序主要初始化各种状态变量,包括单片机的初始化以及设置isp1581寄存器。主要包括地址寄存器、模式寄存器、中断配置寄存器,中断使能寄存器以及端点寄存器等。
usb设备采用控制传输完成枚举,从而判断出设备的状况。
数据传输过程采用中断方式,单片机通过读取中断寄存器的状态判断中断源,并进入相应的中断处理程序。isp1581主要有setup中断、总线挂起中断以及端点输入/输出中断等,控制端点设置64b的缓冲区,每次只能传输64b,传输的数据量由单片机控制。若传输的字节数大于64b,将先传输64b,然后判断剩下的字节数,同时确定是否为空包或短包。如果没有数据传送到单片机,将发送一个空包表明数据发送完毕。
固件主要完成设备初始化、usb协议标准请求处理以及其它应用程序如数据交换功能。程序采用c51语言编写,使用 keil公司的uvision2编译器进行编译。
固件的主循环流程见图2。
设备驱动程序和应用程序的设计
usb设备驱动程序的开发,可采用drivel works和microsoft公司的2000ddk,并以vc++6.0作为开发环境。为了方便用户开发usb接口,在dp-1581的开发包中提供了一个通用驱动程序,该程序可不加修改,直接使用。在本电路设计中,采用的是开发版自带的驱动程序。
结语
本系统将原有的并口改进为usb接口,支持即插即用和热插拔.经实际试验验证,本系统性能稳定可靠,具有一定的实际应用价值。
本设计采用控制芯片p89c61x2和接口芯片isp1581实现usb接口电路的设计。
p89c61x2包含1024b ram、64kb flash存储器、32个i/o口、3个16位定位/计数器、6个中断源-4个中断优先级-嵌套的中断结构、1个增强型uart、片内振荡器和时钟电路。此外,器件的静态设计使其具有非常宽的频率范围,可选择1mhz~12mhz的 晶体振荡器。具有两个软件可选的节电模式-空闲模式和掉电模式。
usb接口芯片isp1581是一种价格低、功能强的usb接口器件,符合usb2.0规范,并为基于微控制器或微处理器的系统提供了高速usb通信能力;具有7个in端点,7个out端点和1个固定的控制in/out端点;可以通过软件控制与usb总线的连接;内部集成了带pll的12mhz晶体振荡器;可通过内部上电复位、低电压复位电路和软件复位。
系统硬件设计
系统的连接框图如图1所示。
isp1581有两种工作模式:通用处理器工作模式和断开总线工作模式。本文的硬件设计中通过设置bus-conf=0实现断开总线
|
系统的固件设计
单片机的固件是usb设备运行的核心。主要包括以下几个部分:
kerne1.c:循环扫描usb事件;启动设备和系统的工作;
isr.c:中断服务程序;
chap9.c.包含标准usb命令,用于在设备和主机之间建立一个基本连接;
vendor.c:包含厂商定义命令,处理厂商请求;
init.c:初始化单片机和isp1581芯片。
初始化程序主要初始化各种状态变量,包括单片机的初始化以及设置isp1581寄存器。主要包括地址寄存器、模式寄存器、中断配置寄存器,中断使能寄存器以及端点寄存器等。
usb设备采用控制传输完成枚举,从而判断出设备的状况。
数据传输过程采用中断方式,单片机通过读取中断寄存器的状态判断中断源,并进入相应的中断处理程序。isp1581主要有setup中断、总线挂起中断以及端点输入/输出中断等,控制端点设置64b的缓冲区,每次只能传输64b,传输的数据量由单片机控制。若传输的字节数大于64b,将先传输64b,然后判断剩下的字节数,同时确定是否为空包或短包。如果没有数据传送到单片机,将发送一个空包表明数据发送完毕。
固件主要完成设备初始化、usb协议标准请求处理以及其它应用程序如数据交换功能。程序采用c51语言编写,使用 keil公司的uvision2编译器进行编译。
固件的主循环流程见图2。
设备驱动程序和应用程序的设计
usb设备驱动程序的开发,可采用drivel works和microsoft公司的2000ddk,并以vc++6.0作为开发环境。为了方便用户开发usb接口,在dp-1581的开发包中提供了一个通用驱动程序,该程序可不加修改,直接使用。在本电路设计中,采用的是开发版自带的驱动程序。
结语
本系统将原有的并口改进为usb接口,支持即插即用和热插拔.经实际试验验证,本系统性能稳定可靠,具有一定的实际应用价值。
上一篇:节能的双线、4×4按键键盘接口