用单片机构建带usb接口的cf读卡器

第11卷第6期2005年12月

上海大学学报(自然科学版)

JOURNALOFSHANGHAIUNIVERSITY(NATURALSCIENCE)

vol1lNo.6

Dec2005

文章编号:1007—2861(2005)06-0570.04

研究简报?

用单片机构建带USB接口的CF读卡器

吴伟1,马文丽k2,梁斌1,郑文岭1’2

(1上海大学电子生物技术研究中心,上悔200072;2.南方医科大学基因工程研究所,广州510515)

摘要:介绍了CompactFlashcad(以下简称为CF扛)的性能特点,在此基础上,用单片机实现了基于USDl.1协议的CF帚接口,能够读取各种型号的cF卡,可作为通用的cF读卡器.

关键词:单片机;CF卡;通用串行总线

中国分类号:TP368文献标识码:A

DesignofCFCardReaderwithUSBInterfaceUsing

Single-ChipMicrocomputer

WUWei’,MAWen-li’一,LIANGBinl,ZHENGWen-lin91’2

(1BioelectmnicsResearchCenter,ShanghaiUniversity,,‰#‰200072,Ck(tm;

2.InstituteofGeneticEngineefing.NanfangMedicalUniversity,Guan础lou510515,China)Abstract:Based011thecharacteristicsofCompactFlashCard(CFCard),theinterfacebetweenasingle—chip

microcomputerandtheCFcardisstudiedand

implementedaccordingto

theUSBprotocolversion1.1.This

inteffacecallreaddatafromallkindsofCFcard.tobeusedasalluniversalCFreader.Keywords:single-chipmicrocomputer;CFcard;USB(UniversalSerialBus)

在数据采集、图像语音处理等场合,经常要实时保存大量的现场数据,当存储量达到十几兆甚至几百兆时,若采用RAM或EEPROM,在成本、体积、功耗和安全性上都不合适一般的串行或并行FLASH芯片,虽然容量大、成本低,也可以达到比较高的速度,但是FLASH芯片没有存储控制器,可造成闪存性能低下,寿命较短.而cF卡作为一种先进的移动数码存储产品,具有高速度、大容量、体积小、重量轻、功耗低等优点,且没有技术和权利金障碍,在市场上得到了广泛的应用,是通用性最强的存储卡之一.因此采用CF卡不失为一种大容量存储的有效解决方法.本文中以CF卡作为存储介质,通过USB接口使计算机与cF卡进行高速、可靠的数据交换,硬件电路中自带cF卡插槽可以识别各种型号的cF卡,可作为通用的CF读卡器.

1带USB接口的CF读卡器硬件设计1.1单片机

本次设计中采用的是华邦公司的高性能8位微控制器W78E516BP.该单片机主要的功能就是协调USB接口芯片PDIUSBDl2(以下简称D12)和cF卡以及主机之间的通信,也就是说,当主机发出一定命令后,引起D12中断,单片机开始根据主机的命令进行相关的操作.设备牧举阶段,就是将各种描述符送到主机,完成设备的配置;数据传输阶段,就是通过USB端点将主机发送的数据存入CF卡或者读取

收稿日期:2004.11-03通信作者:马文丽(1964一),女,教授,博士生导师,研究方向为分子生物学与基因芯片技术E-mail:wenli@fimmuCOrn

第6期

吴伟,等:用单片机构建带USB接口的cF读卡器

cF卡的数据送人主机.

I.2

USB及其接口芯片PDIUSBDl2

通用串行总线(USB),是一种快速、灵活的总线

接口.本次设计所使用的器件是飞利浦公司的USB接口;茁=片PDIUSBDl2”j.D12是一个性能优化的USB器件,符合USBI.1规范,它采用模块化的方法实现

喁.

23

甲厂忑‘

VC

一个USB接口,用并行接口与单片机进行通信,是开发低成本、高效的USB外围设备解决方案的一种

最快途径.D12的A比引脚接地表示采用了多路地

址/数据总线方式,当输入,输出地址为奇地址时,表示输人/输出的是命令,偶地址时表示输入,输出为数据,具体的线路连接见图1.

USB+DATA0USBDATAl

。。。≤涨;

’。DArA4

RESET

DATA7

VoL盯33

CLKOUT

AO

舞憾

EOT

SUSPEND

1斫

WE

鼍习刁。:一l

爿一””

GNDTl04T]04T”4

R1^5.470

kn

2“琶1

vcc

幽1D12连线图

f龟.1

Circuit"ofD12

1.3

CF卡

CF卡由两个基本部分组成(见图2):控制芯片

和闪存模组.闪存用于存储信息,控制芯片用来实现与主机的连接及控制数据在闪存模块中的传输.cF卡为50针接口(图3).其中重要的信号线16根数据线、11根地址线、2根寄存器组选择信号线(CSO、CSl)、数据的读写线(IORD、IOWR)、1根中断信号请求线(INTRQ)和1根复位线(RESET).

1mHer{aostce●

?晦Data

图2

CF卡基本组成部分

Fig.2

BasiccomponentofCFcard

1.3.1

CF卡控制器

CF卡的寄存器都是8bit的,只有数据寄存器

Iilm120kn||20ko

GND

l,

薹孽

Ⅱr—丁Dr—了Dr—下

Ⅱ丁—了Ⅱ=r—蛩

面时广而t

斜蒌解

△L—世创——皿&己—立

cD【礤

帑CD2

圈3

CF卡接口连线图

Fig.3

CircuitofCFconnector

是16bit.cF卡控制器中包含两组寄存器:命令寄存器和控制寄存器,它们通过REG信号进行区分cF卡共有三种工作方式,分别是I/0Mode、Memery

Mode和True

IDE

Mode.本文选择TrueIDE工作方式,

一孺

一一

“1

誊矛

572上海大学学报(自然科学版)第1l卷

表1为此模式下寄存器组具体功能和地址分配表衰1TrueIDE模式下的寄存器配置”1

Tab.1R晒咖reonltguratloatnflaeTrueⅢEMode

备注:一表示低电平有效,寄存器实际地址是Offset叠加到基地址空间上.

1.3.2CF卡的编址方式

CF卡的扇区寻址有两种方式:物理寻址方式(CHS)和逻辑寻址方式(LBA).物理寻址方式使用柱面(Cylinder,有时也称磁道Track)、磁头(Head)和扇区号(Sector)表示一个特定的扇区,通常一个扇区拥有512Byte的数据空间.一个驱动数格式化后的容量为磁头数×柱面数×扇区数×512Byte.在物理寻址模式下,扇区(S)是最低的地址单位,其次是磁头(H),最后的柱面(c)为最高寻址单位,总共可访问的最大磁盘容量为255×1023×63×512Byte=8024.66MByte.此外,还有逻辑寻址方式(LBA).在这种寻址方式下,cF卡按照以连续序列的逻辑扇区编号寻址,主机不必知道cF卡的物理几何结构,便于编程.使用28个数据位来表示逻辑扇区的地址,可寻址2”个扇区,理论上可寻址136GB的容量.本例中采用LBA寻址方式.逻辑块地址和物理地址的关系为:

LBA=(((Track*HeadTrk)+Head)*SecTrk)+(Sector一1)㈨

Sector=fIJBAmodSeeTrk)+1

Head=(LBA/SecTrk)modHeadTrk

Track=(LBA/SecTrk)/Headlh

LBA为逻辑块地址(4Byte),Track为磁道号或柱面号,HeadTrk为每柱面磁头数,Head为磁头编号,SecTrk为每磁道扇区数,Seetor为扇区编号

2设备固件程序设计和实现

根据USB协议1.1,USB设备被分成:显示器、通讯设备、音频设备、人机输入、海量存储“。.本次设计中采用的是基于Bulk—Onlv传输协议的MassStorage设备,在Windows2000操作系统中,bulkusb.i11f已经提供了上述协议的驱动程序,可以直接引用,从而省去了编写繁琐的用户驱动程序的麻烦.在Bulk—Only传输方式下,有三种类型的数据在USB和设备之问传送:CBW、CSW和普通数据.CBW(CommandBlockWrapper,即命令块包)是从USBHost发送到设备的命令,命令格式遵从接口中的bInterfaceSubClass所指定的命令块,这里为UFI传输命令集.USB设备要将UFI命令从CBW中提取出来,按照UFI命令集的定义执行相应的操作,或是需要接收下一个Bulk。Out发来的数据,或是需要向Host传送数据,完成以后向Host发出反映前命令执行状态的CSW(ComnumdStatusWrapper),Host根据CSW来决定是否继续发下一个CBW或是数据”o.当设备插入到USB后,USB即对设备进行搜索,并要求设备提供相应的描述符.在USBHost得到上述描述符后,即完成了设备的配置,识别出为Bulk—Only的MassStorage设备,后即进入Bulk—Oh传输方式.在此方式下,USB与设备间的所有数据均通过Bulk.In(在D12中为端点索引5),Bulk.Out(在D12中为端点索引4)来进行传输,不再通过控制端点传输任何数据.这里,In或Out都是从主机的角度来讲的,前者用于设备向主机发送数据,后者用主机向设备发送数据,Bulk.In端点的处理比较简单,在需要的时候,Device将要发往Host的数据通过此端点送出即可,如果数据一次不能发完,则设置标志位,通过发送中断的产生可以实现连续发送.Bulk.Out端点的情况比较复杂一些,要判断收到的是协议内容还是数据,如果是协议内容,要对协议包进行解析,根据协议中的内容得到UFI命令,然后再根据这些命令处理相应的请求.

下面以图4为例,说明USB一个控制传输的完成过程.一个控制传输分为三个阶段:建立阶段(SETUP)、数据阶段(DATA)和状态阶段(STATUE)每个阶段又有令牌分组(TokenPacket)、数据分组(DataPacket)和握手分组(HandshakePacket)组成.每次的传输事务都是由主机发送SETUP包开始的,握

第6期吴伟,等:用单片机构建带USB接口的cF读卡器573

手分组是报告数据传输的状态的,而状态阶段是反应建立阶段的状态.在建立阶段和状态阶段,可能会存在控制传输的的数据阶段,如果有的话,由一个以上的输入或输出事务构成在数据阶段中要发送的数据的数量和其方向在建立阶段里被指定.如果数据的数量超过了此端点的数据分组大小(MaxPacketSize),则会在多个数据传输阶段(输入或者输出)来传输,每次都按最大分组数据传输,任何剩下的数据都作为剩余在最后的传输阶段中被发送.

建立目r段彀据Wr段拭悉目r段

r——。L_弋/—————————————7、————————————、r——。L1

控制写围回回…回回

DATAODATAlDATA0DATA0/】DATAl

雠帻囤回回…圃围

图4控制传输示意图

Flg.4Sketchmapofcontrollralksmlsstonprocess图5是主机通过Bulk—In端点读取CF卡一个扇

区的流程图.在主机方,当采用devieeioctl或者

readfile命令向设备请求数据时,底层驱动就会持续

向设备发送in令牌,直到请求的所有数据都正确返

回或者连续有3次错误产生为止.当主机发送读取

扇区的CBW后,Bulk.Out端点接收并对其进行CBW

包的校验,然后从中提取出UFl指令,得到所要读取

扇区的LBA地址(4B)和扇区数(1B),读取CF卡状

态寄存器来检查UFI指令的完成情况,50H表示已

经完成,51H表示出现错误,58H表示指令没有完

成.如果没有完成,则将Bulk—In端点的中断标志清

零,同时清空该端点的缓冲区,依次读取扇区的64B

(端点5的MaxPacketSize最大为64B,而一个扇区

为512B,所以需要分8次传送),存放于端点的缓冲

区中,缓冲区填满后,等待主机发送In令牌后数据

会自动发走,无需人工干预,同时引发端点5的中断,单片机将确定剩余的字节数是否为零,如果已经没有数据要发送,单片机需要发送一个空的包以指示主机数据发送完毕,否则将剩下的数据从CF卡中读出,并写人USB端点5的缓存区中,为下一次传送作准备,这样循环往复,直到CF的状态寄存器等于50H,整个子程序结束.写扇区的过程与读扇区的过程基本类似,只是用到的端点正好反过来而已.3总结

经实验证明,在Windows2000以上操作系统上,将各种型号的CF卡插入插槽,然后接到主机以后,能够被主机正确识别,可像U盘一样进行高速、可靠的数据存储,为进一步使该设计应用于生物信号采集和存储奠定了基础

图5读一个扇区数据发送至主机流程图

Fig.5Flowchartofreadingasectordatafrom

CFgardtohost

参考文献:

[1j周立功.PDIUSBDl2USB固件编程与驱动开发[M]北京:北京航空航天大学出版社,2003l一89

[2j倪其昌,向麦黄.ssT48CF系列CompactFlashCard及其与8051单片机的接fI[J].国外电子元器件,2004,(4):31—33

l3]USBlmplemcntersForura,UniversalSetialBusMassStorageClassUFICommandSpecification【SJ19981214

[4]USBlmplementersForum,MassStorageSpecification

0"view1l[S]2000l7

[5jUSBlmplementersForum,UniversalSerialBusMassStorageClassBulk—OnlyTransportlSJ19991—22

(编辑:刘志强)

用单片机构建带USB接口的CF读卡器

作者:吴伟, 马文丽, 梁斌, 郑文岭, WU Wei, MA Wen-li, LIANG Bin, ZHENG Wen-ling 作者单位:吴伟,梁斌,WU Wei,LIANG Bin(上海大学,电子生物技术研究中心,上海,200072), 马文丽,郑文岭,MA Wen-li,ZHENG Wen-ling(上海大学,电子生物技术研究中心,上海,200072;南方

医科大学,基因工程研究所,广州,510515)

刊名:

上海大学学报(自然科学版)

英文刊名:JOURNAL OF SHANGHAI UNIVERSITY (NATURAL SCIENCE EDITION)

年,卷(期):2005,11(6)

引用次数:0次

参考文献(5条)

1.周立功PDIUSBD12 USB固件编程与驱动开发 2003

2.倪其昌.向麦黄SST 48CF系列Compact Flash Card及其与8051单片机的接口[期刊论文]-国外电子元器件

2000(4)

https://www.360docs.net/doc/564218610.html,B Implementers Forum,Universal Serial Bus Mass Storage Class UFI Command Specification 1998

https://www.360docs.net/doc/564218610.html,B Implementers Forum,Mass Storage Specification Overview 1.1 2000

https://www.360docs.net/doc/564218610.html,B Implementers Forum,Universal Serial Bus Mass Storage Class Bulk-Only Transport 1999

相似文献(10条)

1.期刊论文郭振武.李维祥.王文博单片机实现对CF卡的读写-单片机与嵌入式系统应用2004(11)

CF卡是一种包含了控制器和大容量Flash存储器的标准器件,具有容量大、体积小、高性能、携带方便等优点,已广泛应用在数据采集系统和许多消费类电子产品中.本文详细介绍CF卡在单片机系统中的硬件接口电路,以及单片机对CF卡进行标准文件读写的实现,且写入的文件能被Windows操作系统读写.

2.期刊论文马渊.谢立.陈国斌.刘济林基于单片机的CF卡复制系统-电子技术应用2005,31(12)

介绍了CF卡的物理结构和工作原理,给出了CF卡之间复制的原理图和复制流程,并实现了CF卡扇区之间的复制工作.

3.期刊论文王春勇.孙楠.张春燕.李振华.Wang Chunyong.Sun Nan.Zhang Chunyan.Li Zhenhua基于单片机和CF卡

的多路温度采集系统-电子测量技术2008,31(7)

介绍了以CF卡为存储介质的长时间无人值守多路温度采集系统.系统采用单片机控制40路数字温度传感器DS18B20按采样间隔进行测量,将采集得到的数据按Excel文件格式记录,方便后续分析处理,实现了低能耗的电池供电模式.文章对硬件电路部分以及软件部分做了较详细的叙述,介绍了存储数据的文件系统.通过实践证明,该多路温度采集系统可以实现大范围分层次多点的温度数据测量.

4.学位论文尹承俊基于CF卡的数据存储模块研究与应用2006

强震仪能够为人们认识强地震动的特性、推动地震工程学的发展和减轻地震灾害提供宝贵的基础资料。伴随着经济水平和现代科学技术的发展,传统的模拟记录式强震仪已经不能满足科学研究的需要。采用先进的嵌入式理念,利用微控制器和固态存储器技术,实现强震记录的数字化记录,已经成为强震仪领域发展的主流。 根据目前强震仪发展的现状及趋势,在分析了各种存储介质的性能差异后,文章提出了一种新型的数据存储方案,采用了新型的CF卡(Compact Flash)作为强震仪的存储介质设计数据存储模块。相比于其它存储介质,CF卡具有抗振、大容量、功耗低、价格低、易插拔等优点,比目前使用的传统的磁盘驱动器及Ⅰ、Ⅱ型PCMCIA卡的可靠性高5到10倍。该论文研究了CF卡存储介质的控制机理,采用微软公司的FAT(File Allocation Table文件分配表)文件系统进行文件的管理。在模块设计中,采用了MSP430型低功耗单片机作为主控制器,并设计了通讯、时间系统,配合数据存储模块的工作。最后,介绍了上位机软件的编写,该软件可以实现数据上传、文件管理功能,使整机功能得到进一步的完善提高。 基于CF卡的数据存储模块采用了新型的存储介质和文件管理方式,提高了仪器性能,为强震仪的数据存储设计提供了一个崭新的方法和模型,为强震设备的进一步发展提供了方向。经过实验测试,基于CF卡的数据存储模块具有容量大、稳定性好、控制灵活、便携插拔、低功耗等优点,可以满足强震仪的存储记录要求,具有良好的实用价值。

5.期刊论文杜阁.吴小强.王正勇.DU Ge.WU Xiao-qiang.WANG Zheng-yong基于C8051F34x-DK开发平台的CF卡测试

系统-成都信息工程学院学报2008,23(1)

基于Silicon实验室的C8051F34x-DK开发平台基础上,设计并实现了一个对CF卡等存储卡进行综合测试的一个通用测试系统.在Windows XP操作系统下,PC机通过串口发送ATA或非ATA命令来控制单片机实现对CF卡等存储卡的综合测试.详述了系统整体结构和Memory模式下读CF卡一个扇区的具体实现过程,并通过测试进行了证明.

6.期刊论文李建清.李彦岑.李桂平基于CF卡的嵌入式存储设备的设计-电子设计应用2005(8)

本文讨论了在单片机下进行CF卡接口设计的方法,根据PCMCIA制定的ATA标准开发了直接读写CF卡的驱动程序,并介绍了CF卡驱动程序的编程技巧.

7.期刊论文张治斌.乔应旭.ZHANG Zhi-bin.QIAO Ying-xu SST89C54与CF卡的接口设计与实现-国外电子元器件

2006(9)

介绍一种利用SST89C54读写CF卡的设计方法.所给出的接口电路避免了目前通过单片机读写CF卡必须依赖外部存储器和地址锁存器的弊端,实现了在True IDE模式下SST89C54对CF卡标准文件的读写.

8.会议论文李庆.周丽南.孙敏.闫士职基于P87C591单片机的CF卡接口电路设计2008

本文介绍了CF卡(CompactFlash Card)的工作模式、操作方式以及P87C591单片机。详细阐述了CF卡在存储器模式下的接口电路,CF卡数据存储读写操作的软件程序。实现了在存储器模式下面对CF卡文件的读写。

9.期刊论文张承瑞.王金川.王恒CF卡与单片机的接口设计及编程-山东大学学报(工学版)2004,34(6)

介绍了CF卡与Cygnal公司的单片机C8051F020的基本结构和工作原理,通过大规模现场可编程逻辑CPLD实现了接口硬件设计,介绍了软件编制的思想

,并在三坐标雕刻机的控制器中获得应用.

10.期刊论文耿宗亮.王凤路.郭梅静.Geng.Zongliang.Wang.Fenglu.Guo.Meijing AT89S52与CF卡的接口设计-微

计算机信息2005,21(23)

本文介绍了CF卡和单片机接口的各种模式,比较了各种模式的利弊.给出了2种常用模式下的电路原理图,简要说明了IDE模式下存取工作的原理,阐述了映射存储模式下CF卡的存取原理.

本文链接:https://www.360docs.net/doc/564218610.html,/Periodical_shdxxb200506005.aspx

下载时间:2010年1月6日

相关文档
最新文档