基于USB的接口卡
发布时间:2008/9/1 0:00:00 访问次数:834
前言
现代以计算机为核心的总线技术发展迅速,各种基于usb、pci以及isa等总线的系统已非常普遍,但对于用户的特殊要求却不能很好的满足,往往需要单独设计。单独设计开发无论从成本还是从时间上都是很大的浪费。以pdiusbd12(以下简单d12)和单片机构成的usb总线接口卡,可以根据用户不同的需要,在不必掌握复杂的usb协议的情况下,使自己设备很容易的应用usb跟计算机交换数据,而且能很方便的改造旧系统,充分享用usb带来的诸多方便,如对一般系统不用外接电源。此接口卡具有通用性好、速度快、成本低廉等特点。
1组成结构
本套系统的核心就是usb接口芯片d12,它可以与微处理器实现无缝接口,微处理器采用的是winbond的高性能单片机77e58,控制中枢是cpld(epm7064s),实现usb数据传输的dma功能,系统还预置了用户ram区,便于用户根据特殊需要灵活的编程控制。
接口卡留给用户使用的接口包括以下几种:a、fifo入口方向的九位数据线;b、77e58的串行口;c、用77e58的p1口模拟的i2c总线;d、用户控制指令数据接口;e、对用户板操作的八位i/o口。
图1 usb接口卡系统框图
注:双箭头代表数据线,单箭头代表控制线
2工作原理
1)用户接口部分
a、232接口就是使用单片机的txd和rxd两根线构成,在用户使用此接口之前,可以通过计算机上的软件来设置接口的工作方式及相应的波特率。
b、i2c总线是由两根线组成:scl和sda,其中scl是作为数据传输的时钟线,sda是作为传输数据的串行线,在本例中,是通过77e58的两个p1口来模拟i2c总线时序的,用p1.0和p1.1两根线分别模拟sda和scl。此卡只能作为i2c总线的主机端来使用。
c、九位并行数据线接口。在本例中,把fifo的一端的数据线开放,留给用户,可以通过此数据线把数据传到fifo,实现用户板与usb接口卡的通讯,此种接口适用于要求速度比较快的场合。其中,最高位还可作为用户通讯的校验位来使用,提高通讯的质量。
d、控制指令数据接口,即把单片机的数据线对用户开放,可以直接读到控制数据,一般用于传输从pc机下达的指令,便于控制用户板的工作,如ad采集的场合等。
e、对用户板上的i/o口,是从cpld中接出的,可以根据用户要求,从pc机上传达io控制,通过单片机把各io状态直接反映到cpld的i/o口上。
以上接口所涉及到的并行总线均使用74ls245实现总线隔离,在使用之前,需要用户从计算机上发送选择指令,确定使用哪种通讯方式,再由单片机来控制各个总线的开关,使得整个系统能够顺畅工作,避免引起总线的竞争。
2)usb传输部分
在usb传输部分采用接口芯片d12,是一款性价比很高的usb器件,它通常用作微处理器系统中,实现与微处理器进行通信的高速通用并行接口。符合通用串行总线usb1.1版规范,片内集成了sie、320字节多结构fifo存储器收发器,可与任何外部微处理器实现并行接口,数据吞吐量可达2mb/s,拥有完全自治的直接内存存取dma操作,主端点的双缓冲配置增加了数据吞吐量,能轻松实现实时数据传输。在批量模式和同步模式下均可实现1mb/s的数据传输速率,具有良好emi特性,还可为用户提供500ma的总线供电能力。
3)、cpld的控制部分
cpld程序是采用vhdl语言编写的,主要是配合用户要求,完成数据从fifo传输到d12的dma功能,能够实现用户的快速性要求。另外,就是产生对fifo的读写信号以及产生接口卡对用户板的一些地址片选信号和8bit的i/o控制信号。
d12可以通过中断与单片机进行指令通讯,通过cpld实现dma方式的数据传输,把数据从fifo传输d12中。只要把用户的数据传输到d12的fifo里面,应用程序就可以通过驱动程序把数据读到计算机的缓存,其具体的传输过程是不需要用户参与的。
3程序设计
在本例中,软件包括以下几个部分:单片机中固件(firmware)程序、计算机上的驱动程序和用户态的dll以及调用dll的范例程序。
1)固件程序设计
固件程序是被固化到单片机中,能够配置d12与计算机实现usb通信的程序。固件程序完成的主要工作可以简化为:当d12从usb总线上检测到主机启动的某一请求时,便通过中断方式将此请求传递给单片机,固件程序进行解析执行相应的操作,以完成与主机的对话。另外还执行用户通过计算机对接口卡的工作方式进行设置的操作。
2)设备驱
前言
现代以计算机为核心的总线技术发展迅速,各种基于usb、pci以及isa等总线的系统已非常普遍,但对于用户的特殊要求却不能很好的满足,往往需要单独设计。单独设计开发无论从成本还是从时间上都是很大的浪费。以pdiusbd12(以下简单d12)和单片机构成的usb总线接口卡,可以根据用户不同的需要,在不必掌握复杂的usb协议的情况下,使自己设备很容易的应用usb跟计算机交换数据,而且能很方便的改造旧系统,充分享用usb带来的诸多方便,如对一般系统不用外接电源。此接口卡具有通用性好、速度快、成本低廉等特点。
1组成结构
本套系统的核心就是usb接口芯片d12,它可以与微处理器实现无缝接口,微处理器采用的是winbond的高性能单片机77e58,控制中枢是cpld(epm7064s),实现usb数据传输的dma功能,系统还预置了用户ram区,便于用户根据特殊需要灵活的编程控制。
接口卡留给用户使用的接口包括以下几种:a、fifo入口方向的九位数据线;b、77e58的串行口;c、用77e58的p1口模拟的i2c总线;d、用户控制指令数据接口;e、对用户板操作的八位i/o口。
图1 usb接口卡系统框图
注:双箭头代表数据线,单箭头代表控制线
2工作原理
1)用户接口部分
a、232接口就是使用单片机的txd和rxd两根线构成,在用户使用此接口之前,可以通过计算机上的软件来设置接口的工作方式及相应的波特率。
b、i2c总线是由两根线组成:scl和sda,其中scl是作为数据传输的时钟线,sda是作为传输数据的串行线,在本例中,是通过77e58的两个p1口来模拟i2c总线时序的,用p1.0和p1.1两根线分别模拟sda和scl。此卡只能作为i2c总线的主机端来使用。
c、九位并行数据线接口。在本例中,把fifo的一端的数据线开放,留给用户,可以通过此数据线把数据传到fifo,实现用户板与usb接口卡的通讯,此种接口适用于要求速度比较快的场合。其中,最高位还可作为用户通讯的校验位来使用,提高通讯的质量。
d、控制指令数据接口,即把单片机的数据线对用户开放,可以直接读到控制数据,一般用于传输从pc机下达的指令,便于控制用户板的工作,如ad采集的场合等。
e、对用户板上的i/o口,是从cpld中接出的,可以根据用户要求,从pc机上传达io控制,通过单片机把各io状态直接反映到cpld的i/o口上。
以上接口所涉及到的并行总线均使用74ls245实现总线隔离,在使用之前,需要用户从计算机上发送选择指令,确定使用哪种通讯方式,再由单片机来控制各个总线的开关,使得整个系统能够顺畅工作,避免引起总线的竞争。
2)usb传输部分
在usb传输部分采用接口芯片d12,是一款性价比很高的usb器件,它通常用作微处理器系统中,实现与微处理器进行通信的高速通用并行接口。符合通用串行总线usb1.1版规范,片内集成了sie、320字节多结构fifo存储器收发器,可与任何外部微处理器实现并行接口,数据吞吐量可达2mb/s,拥有完全自治的直接内存存取dma操作,主端点的双缓冲配置增加了数据吞吐量,能轻松实现实时数据传输。在批量模式和同步模式下均可实现1mb/s的数据传输速率,具有良好emi特性,还可为用户提供500ma的总线供电能力。
3)、cpld的控制部分
cpld程序是采用vhdl语言编写的,主要是配合用户要求,完成数据从fifo传输到d12的dma功能,能够实现用户的快速性要求。另外,就是产生对fifo的读写信号以及产生接口卡对用户板的一些地址片选信号和8bit的i/o控制信号。
d12可以通过中断与单片机进行指令通讯,通过cpld实现dma方式的数据传输,把数据从fifo传输d12中。只要把用户的数据传输到d12的fifo里面,应用程序就可以通过驱动程序把数据读到计算机的缓存,其具体的传输过程是不需要用户参与的。
3程序设计
在本例中,软件包括以下几个部分:单片机中固件(firmware)程序、计算机上的驱动程序和用户态的dll以及调用dll的范例程序。
1)固件程序设计
固件程序是被固化到单片机中,能够配置d12与计算机实现usb通信的程序。固件程序完成的主要工作可以简化为:当d12从usb总线上检测到主机启动的某一请求时,便通过中断方式将此请求传递给单片机,固件程序进行解析执行相应的操作,以完成与主机的对话。另外还执行用户通过计算机对接口卡的工作方式进行设置的操作。
2)设备驱