当前位置:首页 > 单片机 > 单片机
[导读]目前,通过单片机去控制硬盘的ATA接口,大多采用PIO模式实现,速度和性能上都不够理想,硬盘与PC机的连接也相当繁琐。要频繁地与PC机交换大量资料,采用USB硬盘是一个相当好的解决方案。本文给出一个如何利用单片机完成对

目前,通过单片机去控制硬盘的ATA接口,大多采用PIO模式实现,速度和性能上都不够理想,硬盘与PC机的连接也相当繁琐。要频繁地与PC机交换大量资料,采用USB硬盘是一个相当好的解决方案。本文给出一个如何利用单片机完成对硬盘的读写,同时具有USB-ATA功能的可行方案。

1 USB、GPIF、ATA接口

1.1 USB总线

    USB(Universal Serial Bus)[4]是一种串行接口的新标准,其主要优点是速度快、功耗低、支持即插即用(Plug & Play)、使用安装方便。USB支持最多5个Hub层以及127个外设,所有外设通过协议共享USB的带宽。目前使用中的USB协议有1.0、1.1和2.0三个版本,通讯速率分别为1.5Mbps、12Mbps、480Mbps,USB协议向下兼容。

    从逻辑结构上讲,USB数据的传输是通过管道进行的,管道的两端连接host和device的端点BUFFER,BUFFER的大小直接影响通讯的速率。USB系统软件通过缺省管道(与端点0相对应)管理设备,设备驱动程序通过其它管道来管理设备的功能接口。每一个USB设备在主机看来就是一个端点的集合,主机只能通过端点与设备进行通讯。在USB系统中,每一个端点都有唯一的地址,这是由设备地址和端点号给出的。每个端点都有一定的特性,其中包括:传输方式、总线访问频率、带宽、端点号、数据包的最大容量等。根据应用场合的不同选择相应的端点类型。USB数据流模型见图1。

1.2 GPIF

    GPIF(general programmable interface)[1、2]即通用可编程接口,是CYPRESS公司在其EZ-USB FX以及FX2系列单片机里设计的一个可由用户编程的接口,具有快速、灵活等特点,可使用多种协议完成与外围器件的无缝连接,如EIDE/ATAPI、IEEE1284、Utopia等。对其可以根据需要进行编程,且运行中不需要CPU的干预,仅通过一些CPU标志和中断与增强型8051内核通讯。GPIF与8051内核的关系见图2。

 GPIF主要组成部分:

    (1)ADR[5..0]:地址线,可作为扩展存储器的低位地址,在连续执行GPIF动作时具有自动增一功能。可对其对应的寄存器进行读写(FX2系列中扩充为9根地址线)。

    (2)RDY[5..0]:输入Ready信号,可对指定的信号进行连续采样,以确定GPIF动作继续、等待或是反复不断采样,直到信号的指定状态出现。通常用来等待指定信号的某个状态出现,然后继续剩余动作。

    (3)CTL[5..0]:输出Control信号,根据编程指令输出高低电平或集电极开路。通常用作选通信号、非总线输出信号,以及产生简单的脉冲信号。

    (4)FD[15..0]:双向FIFO数据线,一般又称AFI、BFI。

    (5)IFCLK:时钟接口,决定使用外接时钟还是使用内部48MHz或30MHz时钟周期。

    (6)GSTATE[2..0]:当前GPIF状态数,可用来判断当前GPIF工作状态,一般调试用。

    (7)GPIF PROGRAM:GPIF程序存储区间0x7900~0x797F,存储GPIF指令,可存储4组波形的程序代码(FX2系列存储区间为0xE400~0xE47F)。

    每个GPIF动作都由七段组成:Interval0~Interval6,简称I0~I6。执行完I0~I6的动作后,最后都进入IDLE(I7),即空闲状态,以准备启动下一次GPIF动作。每个Interval可以定义为Non-Decision Interval,简称NDP;或是Decision Point Interval,简称DP。

    当某个Interval定义为NDP,在执行这个Interval动作时,只是简单地延时,用来确定产生指定电平的延续时间;而当Interval定义为DP时,它将根据RDY0~RDY5上的输入信号状态,以及内部FIFO的可编程标志和一个内部自定义的Internal Ready标志,将这些信号进行逻辑与、逻辑或,或是进行逻辑异或,根据得到的逻辑结果在I0~I6中选择下一个即将执行的Interval。在每个Interval执行时,都可指定CTL0~CTL5输出用户指定的状态。通过RDY和CTL以及内部一些标志位的组合,能完成各种复杂的时序电路的控制。

1.3 ATA接口

    ATA[3]接口是在ST506基础上改进而成的,它将控制器集成到驱动器中,采用8个端口寄存器完成对硬盘的读写。这些端口寄存器统称为命令块寄存器,各寄存器功能见表1。ATA有两种工作模式:PIO模式和DMA模式。PIO传输模式是由处理器负责信息的传输,以扇区为单位,用中断请求方式与处理器进行数据交换。DMA传输模式分多点DMA和UDMA两种方式,其不需要处理器参与整个数据传输过程,而由I/O口直接将数据传送到存储器中,从而节约大量CPU时间,可更好地处理其他事务。UDMA中采用了冗余校验技术(CRC)。控制器对硬盘的操作分为两种:8位数据的命令操作和16位数据的数据传输操作。在对硬盘输出控制命令前,程序需对端口完整输出7字节的命令块。其中前六个端口输出为参数,最后一个端口为命令码。在读写数据端口时,以512个字节作为数据块进行读写。硬盘执行命令后,发出中断请求,表示操作结束(命令传输);或置控制器状态空闲,表示扇区请求传输(数据传输)。然后,控制器读取硬盘状态寄存器,检测硬盘操作的成功与否。操作正常,则进行下一次动作;否则,进入错误处理程序。状态寄存器各位信息描述见表2。

2 GPIF与ATA接口的硬件连接

    GPIF与ATA接口的连接见表3。

其中PB[0..7]和PD[0..7]是双向FIFO数据线,用来连接数据线DD[0..15],进行数据的传送;PA3连接RESET信号线,对硬盘进行复位操作;ADR[0..2]与DA[0..2]连接,对寄存器选址;RDY0、RDY1分别与IORDY、IOCS16连接,使FIFO分别工作在8位的命令传输和16位的数据传输模式下。

3 软件设计流程

    GPIF的程序存储区可存储4组波形的程序代码。一般情况下存储的4组波形分别用于单字节读、单字节写、多字节连续读、多字节连续写。对不同寄存器的读写操作将触发指定波形程序代码的执行,例如:读SGLDATLTRIG寄存器,GPIF将执行单字节读操作;而写SGLDATLTRIG寄存器,GPIF则执行单字节写操作。当GPIF处于IDLE方式时,可以对程序区进行读写操作,从而改变波形程序。对GPIF的编程,可采用CYPRESS公司提供的一个基于Windows界面的开发工具。这个工具使得对GPIF的编程成为一个填表式的选择过程。对所有选项选择完毕后,它将自动生成C51的源代码,完成初始化过程。现分别以EZ-USB FX系列和EZ-USB FX2系列中的GPIF为例,实现ATA接口中的PIO工作模式和UDMA工作模式。

    在EZ-USB FX系列里,FIFO只有64字节大小,BULK端点BUFFER最大也只能设置为64字节。因此,用此系列的GPIF实现ATA接口的PIO模式比较合适。GPIF程序存储区分别存储单字节读、单字节写、多字节连续读、多字节连续写4条波形程序。单字节读、写操作时,选择数据宽度为8位,完成命令传输操作。多字节读、写操作时,选择数据宽度为16位,完成数据传输操作。USB数据上传给PC机,采用BULK方式。在EZ-USB FX系列中,端点2支持BULK方式,且可以设置成双缓冲模式。单字节读过程中,总线宽度为8位,RDY0信号接IORDY引脚,在每个Interval中可以根据选定的PIO模式指定合适的延时,也可以对IORDY信号采样,直到指定状态出现才继续动作。图3是根据PIO模式4采用GPIF产生的单字节读波形。单字节写波形的编程类似于单字节读过程,如图4所示。单字节操作一般用在命令传输中,数据传输则采用多字节读写操作,此时FIFO宽度为16,长度为64字节。与单字节操作不同的是,多字节读写操作在一次读写操作完成后,自动开始下一次读写操作,不需要再次触发,直到完成指定的次数,从而减少了CPU参与的时间。在对一个扇区进行操作时,总共需要连续进行256次读写。为此,设计一个连续64次读写的多字节读写操作程序,调用4次,则完成对一个扇区的读写。PIO模式流程图如图5所示。

在EZ-USB FX2系列中,GPIF功能进一步完善,能更好地与ATA接口连接,并可以支持UDMA功能。FX2系列支持USB2.0的控制芯片,BULK端点大小可以设置为512字节或是1024字节。为实现UDMA功能,FX2系列中的GPIF做了几方面的改善。先是让GPIF中的Slave FIFO与USB通讯中端点BUFFER直接建立连接,数据的传送不再需要CPU的参与。当端点BUFFER写满后,置BUFFER满标志位,而GPIF则根据此标志位停止读写动作。此外,GPIF中还多了一项Re-execute功能,即重复执行功能。设定此项后,GPIF可以不经过IDLE状态而根据采样RDY信号重复下一次动作,直到出现了指定的标志位后才停止动作。这项功能一般用于大批量数据的连续读写,如UDMA模式下对一个或多个扇区的读写操作。为完成UDMA模式下的CRC校验,FX2系列的芯片中还设置了特殊寄存器来完成CRC校验工作,具体使用详见芯片技术手册。可见,FX2系列芯片的GPIF能很好地胜任ATA接口中的UDMA模式传输。

    上述方案较好地实现了USB-ATA的功能,并实现了PIO和UDMA两种模式。在运行中,GPIF不需要CPU的干预,仅通过一些CPU标志和中断与8051内核通讯,节约大量CPU资源。从该方案中还可以看出,EZ-USB FX以及FX2系列芯片的地址线、数据线都未用到。因此,在此方案上还可以进行其他扩展,从而实现基于硬盘的大容量数据采集系统,应用于某些特殊环境下的数据采集。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭