浅谈USB闪存盘与PIC微控制器系统的连接
发布时间:2008/6/3 0:00:00 访问次数:550
作为现今普遍接受的移动存储工具,usb闪存盘在各种嵌入式系统中也获得广泛应用。本文介绍低成本pic控制器通过usb2.0全速接口与闪存盘进行连接的实现过程,并着重针对pic微控制器和vinculumusb接口芯片说明有关嵌入式接口的硬件设计以及程序的编写。
如今各种闪存盘和usb外设价格已相当低廉,并被广泛应用到带usb接口的pc中.而要将它们应用于8位或16位嵌入式系统中,如何解决成本和功耗等问题才是关键.这其中的原因主要是这类系统中用到的嵌入式控制器,如microchip公司推出并得到广泛应用的pic系列器件具有多种存储密度和外设,但由于缺乏接口、资源和性能,无法作为usb的主控制器。
在实际应用中,可用vnc1lvinculum控制器来实现这种连接,该芯片提供了作为系统控制器的pic和usb2.0全速端口之间的接口,顺利实现与usb闪存盘的连接,同时该方案具有很短的执行时间和最小系统成本。vinculum基于定制处理器内核,有两个直接存储访问(dma)引擎以加快数据传输和32位数字协处理器优化文件系统的计算,所有这些都在一个芯片里完成,芯片带有64k嵌入式闪存和4k内部数据sram。
vinculum专门针对嵌入式usb控制器市场,只需要很少外部支持元件。vinculum核与常用mcu核相比的一个主要特点是其代码长度大幅缩短,减少内核在代码上的开销,因此可以在单芯片e- flash存储器里装入更多功能,这一特点也正好可以弥补基于pic的嵌入式系统的不足。系统原理图见图1,通过vinculum将小型picmcu连到 usb“a”连接器上,然后就可以连接usb闪存盘了。
搭建模拟系统
pic是系统控制器,通过通用i/o引脚(引脚9、 10、11上的rc0、rc1、ra2)接收从传感器或其他来源传过来的数据,对数据格式进行转换,然后用数据流将数据写入闪存盘上的文件里。命令和数据通过txd(引脚6)传到vnc1l的rxd(引脚32),vnc1l在usb闪存盘上生成fat12/16/32文件并存储数据,并通过usb2dm (引脚28)和usb2dp(引脚29)和闪存盘通信。数据也用同样引脚读出,然后将数据通过vnc1l的txd(引脚31)传到pic的pxd(引脚 5)以供系统固件使用。
在pic引脚2和3之间接入一个20mhz晶振可在其uart接口获得高达115200bit/s波特率,而使用内部8mhz振荡器只能获得最高9600bit/s波特率,因此加接晶振可提高系统性能。 pic的io引脚rc2和rc3都被固件使用,以模拟与vnc1luart连接的rts/cts握手信号。系统由pic上的固件控制,数据传输则由pic 发出的指令控制,该指令由vinculum上的标准固件进行解释。虽然说起来很简单,但完成设计还有其他一些工作要做,例如器件还需要电源、控制时钟的晶振以及编程。
系统需要标准的5v250ma电源(psu),可为 usb“a”连接器提供高达200ma电流,同时为vnc1l和pic各提供25ma驱动电流。vnc1l采用3.3v电源,由一个3.3vldo调压器提供,它带有一个5v容限io引脚,可使其连到pic而不需要用到电平转换器。在低功耗应用中,vnc1l不工作时可进入2ma睡眠模式,如需唤醒器件,只需触发rart接口的振铃指示(ri)引脚(引脚38)。如果它连到rxd线上(如图所示),就可以用一个空命令触发以唤醒器件。
该设计还包括一个双色led指示器,由引脚16和18推动。它可以显示是否成功连上usb闪存盘并可以访问文件系统。
球
vnc1l和pic编程
该设计包括两个程序头文件,每个器件需要一个,同时还要有相应的开发环境。对于生产设计而言,两个器件都要在插入pcb之间预先编程,以减少连接头和跳线。
在正常工作状态下,j1和j2需要连上,而其他跳线保持断开。对vnc1l编程的时候,将j1和j2跳线移开以使vnc1luart输入与pic输出分开。把5vpsu断开,然后将ttl-232r-3v3线缆接到h2上,将该线缆的usb端接到pc上,而在pc上安装好vprog编程软件。将j4连上以便将vnc1l的prog#引脚拉低,并短暂将j3短路以使器件复位使其进入编程状态。编程完成后,记住恢复跳线设定到工作位置。
对pic编程时编程头连到器件的ra0、ra1和mclr#引脚,通过编程头提供5v编程电压。pic微控制器编程前先将5vpsu断开,编程头连到标准pic编程环境如pickit2上,可以使用microchip的调试与下载工具。
本文所附的c代码实例显示pic等待闪存盘检测,然后打开一个名为hello.txt的文件,接着将“helloworld”以及回车换行符写入该文件中,最后关闭文件并等待将闪存盘移开。
vnc1l固件
vnc1l 采用标准固件进行编程,称为vdap,它可以解释来自于pic的命令。这些vdap命令有些类似于dos指令,如dir、rd以及wr等,命令集也支持容易被微处理器控制的单字节十六进制命令,vdap命令包含在pic固件中,可控制usb闪存盘的接入,典型命令序列可以是生成一个文件、从文件中读出/写入数据然后关闭文件。
结论
ftdi 的vinculumvnc1l提供了一个低成本微控制器与usb2.0低/全速外设之间的接口,易于使用和编程,其指令集类似于dos命令,可在微控制器
如今各种闪存盘和usb外设价格已相当低廉,并被广泛应用到带usb接口的pc中.而要将它们应用于8位或16位嵌入式系统中,如何解决成本和功耗等问题才是关键.这其中的原因主要是这类系统中用到的嵌入式控制器,如microchip公司推出并得到广泛应用的pic系列器件具有多种存储密度和外设,但由于缺乏接口、资源和性能,无法作为usb的主控制器。
在实际应用中,可用vnc1lvinculum控制器来实现这种连接,该芯片提供了作为系统控制器的pic和usb2.0全速端口之间的接口,顺利实现与usb闪存盘的连接,同时该方案具有很短的执行时间和最小系统成本。vinculum基于定制处理器内核,有两个直接存储访问(dma)引擎以加快数据传输和32位数字协处理器优化文件系统的计算,所有这些都在一个芯片里完成,芯片带有64k嵌入式闪存和4k内部数据sram。
vinculum专门针对嵌入式usb控制器市场,只需要很少外部支持元件。vinculum核与常用mcu核相比的一个主要特点是其代码长度大幅缩短,减少内核在代码上的开销,因此可以在单芯片e- flash存储器里装入更多功能,这一特点也正好可以弥补基于pic的嵌入式系统的不足。系统原理图见图1,通过vinculum将小型picmcu连到 usb“a”连接器上,然后就可以连接usb闪存盘了。
搭建模拟系统
pic是系统控制器,通过通用i/o引脚(引脚9、 10、11上的rc0、rc1、ra2)接收从传感器或其他来源传过来的数据,对数据格式进行转换,然后用数据流将数据写入闪存盘上的文件里。命令和数据通过txd(引脚6)传到vnc1l的rxd(引脚32),vnc1l在usb闪存盘上生成fat12/16/32文件并存储数据,并通过usb2dm (引脚28)和usb2dp(引脚29)和闪存盘通信。数据也用同样引脚读出,然后将数据通过vnc1l的txd(引脚31)传到pic的pxd(引脚 5)以供系统固件使用。
在pic引脚2和3之间接入一个20mhz晶振可在其uart接口获得高达115200bit/s波特率,而使用内部8mhz振荡器只能获得最高9600bit/s波特率,因此加接晶振可提高系统性能。 pic的io引脚rc2和rc3都被固件使用,以模拟与vnc1luart连接的rts/cts握手信号。系统由pic上的固件控制,数据传输则由pic 发出的指令控制,该指令由vinculum上的标准固件进行解释。虽然说起来很简单,但完成设计还有其他一些工作要做,例如器件还需要电源、控制时钟的晶振以及编程。
系统需要标准的5v250ma电源(psu),可为 usb“a”连接器提供高达200ma电流,同时为vnc1l和pic各提供25ma驱动电流。vnc1l采用3.3v电源,由一个3.3vldo调压器提供,它带有一个5v容限io引脚,可使其连到pic而不需要用到电平转换器。在低功耗应用中,vnc1l不工作时可进入2ma睡眠模式,如需唤醒器件,只需触发rart接口的振铃指示(ri)引脚(引脚38)。如果它连到rxd线上(如图所示),就可以用一个空命令触发以唤醒器件。
该设计还包括一个双色led指示器,由引脚16和18推动。它可以显示是否成功连上usb闪存盘并可以访问文件系统。
球
vnc1l和pic编程
该设计包括两个程序头文件,每个器件需要一个,同时还要有相应的开发环境。对于生产设计而言,两个器件都要在插入pcb之间预先编程,以减少连接头和跳线。
在正常工作状态下,j1和j2需要连上,而其他跳线保持断开。对vnc1l编程的时候,将j1和j2跳线移开以使vnc1luart输入与pic输出分开。把5vpsu断开,然后将ttl-232r-3v3线缆接到h2上,将该线缆的usb端接到pc上,而在pc上安装好vprog编程软件。将j4连上以便将vnc1l的prog#引脚拉低,并短暂将j3短路以使器件复位使其进入编程状态。编程完成后,记住恢复跳线设定到工作位置。
对pic编程时编程头连到器件的ra0、ra1和mclr#引脚,通过编程头提供5v编程电压。pic微控制器编程前先将5vpsu断开,编程头连到标准pic编程环境如pickit2上,可以使用microchip的调试与下载工具。
本文所附的c代码实例显示pic等待闪存盘检测,然后打开一个名为hello.txt的文件,接着将“helloworld”以及回车换行符写入该文件中,最后关闭文件并等待将闪存盘移开。
vnc1l固件
vnc1l 采用标准固件进行编程,称为vdap,它可以解释来自于pic的命令。这些vdap命令有些类似于dos指令,如dir、rd以及wr等,命令集也支持容易被微处理器控制的单字节十六进制命令,vdap命令包含在pic固件中,可控制usb闪存盘的接入,典型命令序列可以是生成一个文件、从文件中读出/写入数据然后关闭文件。
结论
ftdi 的vinculumvnc1l提供了一个低成本微控制器与usb2.0低/全速外设之间的接口,易于使用和编程,其指令集类似于dos命令,可在微控制器
作为现今普遍接受的移动存储工具,usb闪存盘在各种嵌入式系统中也获得广泛应用。本文介绍低成本pic控制器通过usb2.0全速接口与闪存盘进行连接的实现过程,并着重针对pic微控制器和vinculumusb接口芯片说明有关嵌入式接口的硬件设计以及程序的编写。
如今各种闪存盘和usb外设价格已相当低廉,并被广泛应用到带usb接口的pc中.而要将它们应用于8位或16位嵌入式系统中,如何解决成本和功耗等问题才是关键.这其中的原因主要是这类系统中用到的嵌入式控制器,如microchip公司推出并得到广泛应用的pic系列器件具有多种存储密度和外设,但由于缺乏接口、资源和性能,无法作为usb的主控制器。
在实际应用中,可用vnc1lvinculum控制器来实现这种连接,该芯片提供了作为系统控制器的pic和usb2.0全速端口之间的接口,顺利实现与usb闪存盘的连接,同时该方案具有很短的执行时间和最小系统成本。vinculum基于定制处理器内核,有两个直接存储访问(dma)引擎以加快数据传输和32位数字协处理器优化文件系统的计算,所有这些都在一个芯片里完成,芯片带有64k嵌入式闪存和4k内部数据sram。
vinculum专门针对嵌入式usb控制器市场,只需要很少外部支持元件。vinculum核与常用mcu核相比的一个主要特点是其代码长度大幅缩短,减少内核在代码上的开销,因此可以在单芯片e- flash存储器里装入更多功能,这一特点也正好可以弥补基于pic的嵌入式系统的不足。系统原理图见图1,通过vinculum将小型picmcu连到 usb“a”连接器上,然后就可以连接usb闪存盘了。
搭建模拟系统
pic是系统控制器,通过通用i/o引脚(引脚9、 10、11上的rc0、rc1、ra2)接收从传感器或其他来源传过来的数据,对数据格式进行转换,然后用数据流将数据写入闪存盘上的文件里。命令和数据通过txd(引脚6)传到vnc1l的rxd(引脚32),vnc1l在usb闪存盘上生成fat12/16/32文件并存储数据,并通过usb2dm (引脚28)和usb2dp(引脚29)和闪存盘通信。数据也用同样引脚读出,然后将数据通过vnc1l的txd(引脚31)传到pic的d(引脚 5)以供系统固件使用。
在pic引脚2和3之间接入一个20mhz晶振可在其uart接口获得高达115200bit/s波特率,而使用内部8mhz振荡器只能获得最高9600bit/s波特率,因此加接晶振可提高系统性能。 pic的io引脚rc2和rc3都被固件使用,以模拟与vnc1luart连接的rts/cts握手信号。系统由pic上的固件控制,数据传输则由pic 发出的指令控制,该指令由vinculum上的标准固件进行解释。虽然说起来很简单,但完成设计还有其他一些工作要做,例如器件还需要电源、控制时钟的晶振以及编程。
系统需要标准的5v250ma电源(psu),可为 usb“a”连接器提供高达200ma电流,同时为vnc1l和pic各提供25ma驱动电流。vnc1l采用3.3v电源,由一个3.3vldo调压器提供,它带有一个5v容限io引脚,可使其连到pic而不需要用到电平转换器。在低功耗应用中,vnc1l不工作时可进入2ma睡眠模式,如需唤醒器件,只需触发rart接口的振铃指示(ri)引脚(引脚38)。如果它连到rxd线上(如图所示),就可以用一个空命令触发以唤醒器件。
该设计还包括一个双色led指示器,由引脚16和18推动。它可以显示是否成功连上usb闪存盘并可以访问文件系统。
球
vnc1l和pic编程
该设计包括两个程序头文件,每个器件需要一个,同时还要有相应的开发环境。对于生产设计而言,两个器件都要在插入pcb之间预先编程,以减少连接头和跳线。
在正常工作状态下,j1和j2需要连上,而其他跳线保持断开。对vnc1l编程的时候,将j1和j2跳线移开以使vnc1luart输入与pic输出分开。把5vpsu断开,然后将ttl-232r-3v3线缆接到h2上,将该线缆的usb端接到pc上,而在pc上安装好vprog编程软件。将j4连上以便将vnc1l的prog#引脚拉低,并短暂将j3短路以使器件复位使其进入编程状态。编程完成后,记住恢复跳线设定到工作位置。
对pic编程时编程头连到器件的ra0、ra1和mclr#引脚,通过编程头提供5v编程电压。pic微控制器编程前先将5vpsu断开,编程头连到标准pic编程环境如pickit2上,可以使用microchip的调试与下载工具。
本文所附的c代码实例显示pic等待闪存盘检测,然后打开一个名为hello.txt的文件,接着将“helloworld”以及回车换行符写入该文件中,最后关闭文件并等待将闪存盘移开。
vnc1l固件
vnc1l 采用标准固件进行编程,称为vdap,它可以解释来自于pic的命令。这些vdap命令有些类似于dos指令,如dir、rd以及wr等,命令集也支持容易被微处理器控制的单字节十六进制命令,vdap命令包含在pic固件中,可控制usb闪存盘的接入,典型命令序列可以是生成一个文件、从文件中读出/写入数据然后关闭文件。
结论
ftdi 的vinculumvnc1l提供了一个低成本微控制器与usb2.0低/全速外设之间的接口,易于使用和编程,其指令集类似于dos命令,可在微控制器
如今各种闪存盘和usb外设价格已相当低廉,并被广泛应用到带usb接口的pc中.而要将它们应用于8位或16位嵌入式系统中,如何解决成本和功耗等问题才是关键.这其中的原因主要是这类系统中用到的嵌入式控制器,如microchip公司推出并得到广泛应用的pic系列器件具有多种存储密度和外设,但由于缺乏接口、资源和性能,无法作为usb的主控制器。
在实际应用中,可用vnc1lvinculum控制器来实现这种连接,该芯片提供了作为系统控制器的pic和usb2.0全速端口之间的接口,顺利实现与usb闪存盘的连接,同时该方案具有很短的执行时间和最小系统成本。vinculum基于定制处理器内核,有两个直接存储访问(dma)引擎以加快数据传输和32位数字协处理器优化文件系统的计算,所有这些都在一个芯片里完成,芯片带有64k嵌入式闪存和4k内部数据sram。
vinculum专门针对嵌入式usb控制器市场,只需要很少外部支持元件。vinculum核与常用mcu核相比的一个主要特点是其代码长度大幅缩短,减少内核在代码上的开销,因此可以在单芯片e- flash存储器里装入更多功能,这一特点也正好可以弥补基于pic的嵌入式系统的不足。系统原理图见图1,通过vinculum将小型picmcu连到 usb“a”连接器上,然后就可以连接usb闪存盘了。
搭建模拟系统
pic是系统控制器,通过通用i/o引脚(引脚9、 10、11上的rc0、rc1、ra2)接收从传感器或其他来源传过来的数据,对数据格式进行转换,然后用数据流将数据写入闪存盘上的文件里。命令和数据通过txd(引脚6)传到vnc1l的rxd(引脚32),vnc1l在usb闪存盘上生成fat12/16/32文件并存储数据,并通过usb2dm (引脚28)和usb2dp(引脚29)和闪存盘通信。数据也用同样引脚读出,然后将数据通过vnc1l的txd(引脚31)传到pic的d(引脚 5)以供系统固件使用。
在pic引脚2和3之间接入一个20mhz晶振可在其uart接口获得高达115200bit/s波特率,而使用内部8mhz振荡器只能获得最高9600bit/s波特率,因此加接晶振可提高系统性能。 pic的io引脚rc2和rc3都被固件使用,以模拟与vnc1luart连接的rts/cts握手信号。系统由pic上的固件控制,数据传输则由pic 发出的指令控制,该指令由vinculum上的标准固件进行解释。虽然说起来很简单,但完成设计还有其他一些工作要做,例如器件还需要电源、控制时钟的晶振以及编程。
系统需要标准的5v250ma电源(psu),可为 usb“a”连接器提供高达200ma电流,同时为vnc1l和pic各提供25ma驱动电流。vnc1l采用3.3v电源,由一个3.3vldo调压器提供,它带有一个5v容限io引脚,可使其连到pic而不需要用到电平转换器。在低功耗应用中,vnc1l不工作时可进入2ma睡眠模式,如需唤醒器件,只需触发rart接口的振铃指示(ri)引脚(引脚38)。如果它连到rxd线上(如图所示),就可以用一个空命令触发以唤醒器件。
该设计还包括一个双色led指示器,由引脚16和18推动。它可以显示是否成功连上usb闪存盘并可以访问文件系统。
球
vnc1l和pic编程
该设计包括两个程序头文件,每个器件需要一个,同时还要有相应的开发环境。对于生产设计而言,两个器件都要在插入pcb之间预先编程,以减少连接头和跳线。
在正常工作状态下,j1和j2需要连上,而其他跳线保持断开。对vnc1l编程的时候,将j1和j2跳线移开以使vnc1luart输入与pic输出分开。把5vpsu断开,然后将ttl-232r-3v3线缆接到h2上,将该线缆的usb端接到pc上,而在pc上安装好vprog编程软件。将j4连上以便将vnc1l的prog#引脚拉低,并短暂将j3短路以使器件复位使其进入编程状态。编程完成后,记住恢复跳线设定到工作位置。
对pic编程时编程头连到器件的ra0、ra1和mclr#引脚,通过编程头提供5v编程电压。pic微控制器编程前先将5vpsu断开,编程头连到标准pic编程环境如pickit2上,可以使用microchip的调试与下载工具。
本文所附的c代码实例显示pic等待闪存盘检测,然后打开一个名为hello.txt的文件,接着将“helloworld”以及回车换行符写入该文件中,最后关闭文件并等待将闪存盘移开。
vnc1l固件
vnc1l 采用标准固件进行编程,称为vdap,它可以解释来自于pic的命令。这些vdap命令有些类似于dos指令,如dir、rd以及wr等,命令集也支持容易被微处理器控制的单字节十六进制命令,vdap命令包含在pic固件中,可控制usb闪存盘的接入,典型命令序列可以是生成一个文件、从文件中读出/写入数据然后关闭文件。
结论
ftdi 的vinculumvnc1l提供了一个低成本微控制器与usb2.0低/全速外设之间的接口,易于使用和编程,其指令集类似于dos命令,可在微控制器