IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx

上传人:牧羊曲112 文档编号:2032155 上传时间:2023-01-02 格式:DOCX 页数:20 大小:266.03KB
返回 下载 相关 举报
IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx_第1页
第1页 / 共20页
IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx_第2页
第2页 / 共20页
IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx_第3页
第3页 / 共20页
IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx_第4页
第4页 / 共20页
IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx》由会员分享,可在线阅读,更多相关《IC卡1604的原理及应用如ft1780芯片内部结构和特点.docx(20页珍藏版)》请在三一办公上搜索。

1、逻辑加密存储卡芯片AT88SC1604卡的应用摘 要:本文介绍了目前应用较为广泛的AT88SC1604逻辑加密卡的特点和工作原理,同时给出了通过单片机控制操作IC卡的的应用实例及程序。 前言IC卡按结构划分,可分为存储器卡和微处理器卡(CPU card)两大类。逻辑加密卡与普通存储卡相比,内部结构较复杂,其存储区可以分成卡片设置区和应用区。卡片设置区内存放与卡片厂商及发卡者相关代码和卡片密码;应用区又可以根据需要分为不同的分区。逻辑加密卡的安全性相对较高,体现在:卡片设立主密码、每个应用分区具有各自独立的操作密码。逻辑加密卡主要控制作用是:对数据存储区开放/关闭的控制;对数据存储区读/写的控制

2、;对数据存储区擦除操作的控制以及对密码校验和错误次数计数及锁闭功能控制。AT88SC1604卡的工作原理AT88SC1604是由美国ATMEL公司设计的逻辑加密存储卡芯片。它具有15704位的存储容量,是目前逻辑加密存储卡中容量较大的一种产品芯片。芯片特点(1) AT88SC1604芯片属于单存储器多逻辑分区结构。主存储器除划分了特定的标志数据区和控制数据区之外,还将应用数据区分成四个完全隔离的子区,并在每个子区中配备了各自的读、写控制标志和写入/擦除密码以及密码输入错误计数器等逻辑控制。(2) 芯片为串行传输方式,并满足ISO7816-3同步传输协议。(3)芯片采用低功耗的CMOS工艺制造,

3、每字位的读取时间为 s,写周期为5ms。(4) 芯片内部的存储单元具有至少10000次的擦除/改写循环次数。数据保存期为10年。芯片存储分区结构及定义 AT88SC1604芯片分为制造商代码区、发行商代码区、用户安全密码区、用户密码比较计数区、个人代码区以及四个应用区。每个应用区都由密码区,密码比较计数区,擦除密码区和擦除密码比较计数区、应用数据区和存储器测试区组成。(1) 制造商代码区(FZ)该区里记录的卡芯片生产商的特定信息(例如:生产批号、日期、以及特别制定的特征代码),由制造商在芯片出厂前写入。在控制本区的熔丝(FUSHl)没有熔断时,该区的存储单元可以象普通的EEPROM存储单元一样

4、进行擦除和改写。一旦熔丝熔断,所写入的制造商代码就不可再更改。(2) 发行商代码区(IZ)该区用于记录卡片发行商的特定信息(例如:发行批号、日期、地区范围编号以及特定用户编号等特征代码)。当控制本区的熔丝没有熔断时,该区的存储单元内容可以自由的擦除或改写。在个人化处理过程完成之后,控制该区的熔丝(FUSH2)熔断,即可将注入的“发行商代码”完全固化。这一代码也是识别卡片的真伪,区分卡片应用类别的重要标识。 (3) 个人代码区(CPZ)该区用于存放个人身份标识数据。该区使用上受芯片的“用户密码”的保护。当“用户密码”比较成功,该区可读可写可擦除。“用户密码”比较不成功,该区只能读而不能写入和擦除

5、。(4) 用户密码区(SC)这个密码区是整个存储器的“总控制开关”。使用前,由授权持卡人预先输入的一个安全代码作为“参照字”储存在这个存储区里。使用时,必须输入一个“校验密码”。芯片将输入的“校验密码”与内部存储器的“参照字”一一比较。如果比较结果一致,IC卡将开放整个芯片储存器(包括各分区的控制密码和各应用数据区)。各区的“安全密码”区SCn(n=l,2,3,4)与SC的作用是完全类似的。对于各分区的密码区SCn (n1,2,3,4)来说,其比较操作要受到对应“应用区密码”比较计数器(SnAC)的计数控制。当连续8次输入密码错误,SCn将被锁死。(5) 密码比较计数区(SCAC)该区对连续输

6、入的错误密码的次数进行累计。当连续8次不正确的比较操作之后,芯片将被锁死。芯片被锁死之后,将拒绝任何的擦除、写入和比较的操作命令。该区是8位长,按位写入方式操作。在芯片初始化时是全“1”状态,即读出值为“FFH”。在每次比较输入的密码时,先按从高位到低位的顺序找第一个为“1”的位,将此位写“0”,然后将新输入的“校验密码”与原存储在SC区的“参照字”进行比较。比较操作本身由芯片内部自行完成,而比较结果则通过置SV标志来判别,即比较成功时SV被置“1”。比较不成功,SV保持原来的“0”状态。在连续8次比较错误过程中每次比较操作之后计数器的计数值分别为“7FH”、“3FH”、“1FH”、“0FH”

7、、“07H”、“03H”、“01H”、“00H”。当计数器为“00H”后,后续的比较操作命令由于无法在“SCAC”区中找到一个为“1”的位,因而芯片拒绝继续执行比较操作。SnAC(n1,2,3,4)的作用与SCAC是类似的。操作控制也完全一样。只是SCAC是限制对SC区的比较操作。而SnAC则限制对SCn区的比较操作。SCAC的控制级别最高。当SCAC为“00H”后,芯片内部封锁了对SC区的比较操作,从而使对SCn的比较也被禁止。如果SCAC为非“00H”值,在对SC区的比较密码操作成功之后,SCn能否进行比较操作就由SnAC区的状态值来决定。SnAC区在连续8次比较输入过程中,每次比较操作之

8、后计数器的计数值与SCAC的8个值一样。(即分别为“7FH”、“3FH”、“1FH”、“0FH”、“07H”、“03H”、“OlH”、“00H”)当SnAC为“00H”时,则“应用n区”将被锁死。(6)擦除密码区(EZn ,nl.2,3,4)该区用于存储擦除应用区操作的控制密码。这些密码一般由发行商使用。在个人化处理时输入的最后一组“擦除密码”,在芯片熔丝FUSE2熔断之后将使“擦除密码”保存在该区内。该区不再能读出、写入和擦除,只能进行比较操作。在使用过程中如需对应用区进行擦除操作,都必须首先对相应的EZ区输送一个“擦除密码”与之比较,在“擦除密码比较计数器”不为“00H”的情况下,如果相比

9、较的两代码完全一致,则相应的应用区的单元允许擦除,否则将禁止执行擦除操作。(7) 擦除密码比较计数区(EnAC ,n=l,2,3,4)擦除密码比较计数区的作用与SCAC的作用相类似。它对各应用区擦除密码连续输入错误的次数进行累计。最多连续8次不正确的密码比较之后,该区所控制的应用区的擦除操作即被锁死,从而导致该应用区有可能成为只读和允许单次写入的状态。(8) 应用数据区(AZn ,n1,2,3,4)该区主要给用户使用。用于存储系统的相关数据记录和卡片标识等信息。应用数据区的写入与读出分别由该区的前两位Pn和Rn以及SV标志的状态控制,擦除操作则由该区的擦除密码控制。AT88SC1604设计了四

10、个完全隔离的分区,其中1至3分区的单元容量分别是4K位、第4分区的单元容量为3.6K位。(9) 存储区测试区(MTZ)该区主要用于芯片生产后对EEPROM单元阵列进行各项性能测试该区不受任何控制区状态和标志状态的保护,允许对这个区进行读出、写人和擦除操作,但不能进行比较操作。应用实例基于上述1604芯片的特点,在石化系统的加油电路设计中,我们利用单片机芯片89C2051与IC卡电路组成一个独立系统,控制IC卡芯片的各项操作,该系统通过标准RS232通讯接口,与主控制板实现数据交换,这种电路设计在硬件方面兼容性较好,只要通过协调双方的IC卡通讯协议,可与任何带有RS232接口的控制板或微机相连接

11、。单片机芯片89C2051的6个端口通过IOC卡座与IC卡相连接,P1.2口控制IC卡5V电源的通断,上电时单片机芯片处于复位状态, 6个端口均输出“1”,IC卡电源处于断开状态,ICSW为IC卡的检测端,当IC卡插入后,该端口与地相接,P1.3口检测到IC 卡已插入卡座,即接通IC卡电源,IC卡操作完毕后,切断IC卡电源,并提示用户可以拔卡。单片机芯片其他4个端口在接通IC卡电源后,根据对卡操作的需要,对IC卡进行复位,读卡,校对密码,擦卡,写卡等操作。硬件电路芯片的操作模式时序及设计程序AT88SCl604芯片的操作模式有五种。它们是通过配PGM、RST、CLK等引脚信号及内部地址计数器(

12、IAC)的状态组合来实现。(1) 芯片复位操作: AT88SCl604有两种复位方式:上电复位和控制复位。上电复位: 上电复位是当芯片加电时的最初状态。上电复位属于芯片内部复位。它将使芯片内部所有的隐含标志复位到0状态。并使地址计数器复位到0位。控制复位: 当CLK为低时,在RST脚上的一个下降沿将便芯片产生复位操作。控制复位是将地址计数器复位到0位,而不影响任何内部标志的状态。注:1)RST为高时禁止计数2)在CLK端降低之后,延迟一个复位维持时间Trh(min 0.1 s)RST端复位(下降沿),同时地址计数器清零。地址计数器清零后延迟一个“数据复位有效时间”Tdvr(max 2 s)第0

13、位单元的数据被送上I/O线。FWZCX: CLR ICPGM ;复位子程序 NOPSETB ICRESTNOPSETB ICSDANOPCLR ICCLK ;时钟端清0 NOPCLR ICREST ;复位端清0 NOPRET(2)读出操作: 在进行读出操作时,必须保证使RST脚和PGM脚同时保持为低。如果对芯片各密码控制区进行读出操作,只能是在FUSE2未熔断且SV标志“1”时才能进行。如果对芯片各标识数据区进行读出操作,除FZ和IZ区外,需要使SV标志置“1”后才能执行。如果对芯片各应用数据区进行读出操作,需要在SV1且Rn1(n1,2,3,4)状态下才能执行。注:在CLK的下降沿时,地址计

14、数器加1,地址计数器当前所指的地址单元的数据被输出到I/O线上。因此,在整个时钟周期Tdk期间,包含了地址加1(INC)和读出(REA)两项操作。读IC数据子程序(R2:需读IC卡字节数,R0:数据区存放低位首地址)RICDAZ: MOV A,#KXXDZ ;卡信息地址送ALCALL SADR ;寻卡地址RICDA: MOV R3,#08RICDA1: SETB ICSDANOPMOV C,ICSDA ;位读到ARLC ASETB ICCLKNOPCLR ICCLKNOPDJNZ R3,RICDA1MOV R0,A ;8位数据送数据区DEC R0DJNZ R2,RICDARET; 寻IC卡位地

15、址子程序(调用前16进制地址送ACC)SADR: LCALL FWZCXMOV B,#08MUL AB ;计算位地址: 16进制地址*8MOV R4,A ;低位位地址送R4MOV R5,B ;高位位地址送R5JNZ SADR1 ;低位地址不为0转MOV A,R5JZ SADR3DEC R5SADR1: SETB ICREST ;复位端置1SETB ICSDACLR ICPGMCLR ICCLKCLR ICRESTSADR2: SETB ICCLKSETB ICCLKCLR ICCLKCLR ICCLKDJNZ R4,SADR2MOV A,R5JZ SADR3DEC R5SJMP SADR2SA

16、DR3: RET;(3)比较操作:在进行比较操作时,必须保证使RST脚和PGM脚同时保持为低。比较操作只能对芯片密码控制区执行,且由芯片内部来判断。在FUSE2未熔断时,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。SV=1时,芯片不做任何比较操作。在FUSE2熔断后,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。注:上述芯片密码比较时序图中是假设密码计数器中前两位为0,第三位寻到1的处理时序。有关芯片SC的时序关系如图25图所示:从操作(B)到(F),地址计数器不变,密码比较的过程是:(A)比较安全密码/擦除密码序列(B)在密码输入比较计数

17、器中找出一位为“1”的位(C)在这个为“1”的单元写“0”(D)芯片输出“0”(E)如果比较成功,在PGM的上升沿安全密码/擦除密码的相应标志(SV,Sn或En)被置“1”,同时安全密码/擦除密码输入比较计数器(SCAC,SnAC或EnAC)被擦除。(F)如果擦除成功,相应安全密码/擦除密码标志被置“1”,芯片将输出“1”,否则芯片输出“0”。(G)在CLK的下降沿,地址计数器加1,并输出下一位的状态。比较用户密码子程序(地址0AH,0BH)CPSC: MOV R0,#CMM+2MOV R1,#06MOV R2,#02LCALL MVITIMOV A,#0AHLCALL SADR ;寻址MOV

18、 R0,#06LCALL BJMMRET; 比较密码程序BJMM: CLR ICRESTCLR ICPGMMOV R2,#02BJMM1: MOV A,R0MOV R3,#08BJMM2: RLC AMOV ICSDA,CNOPSETB ICCLKNOPCLR ICCLKNOPDJNZ R3,BJMM2INC R0DJNZ R2,BJMM1MOV R2,#08;查8位BJMM4: SETB ICSDANOPMOV C,ICSDAJC BJMM5 ;是1转SETB ICCLK ;指向下一位NOPCLR ICCLKNOPDJNZ R2,BJMM4LJMP BJMM8 ;计数器为00,卡锁死转BJM

19、M5: SETB ICPGMNOPCLR ICSDA ;写0NOPSETB ICCLKNOPCLR ICPGMNOPLCALL DELY5CLR ICCLKNOPSETB ICSDANOPMOV C,ICSDAJNC BJMM6LJMP BJMM7 ;未写入0,转出错BJMM6: SETB ICPGMNOPSETB ICSDA ;写1(擦除)NOPSETB ICCLKNOPCLR ICPGMNOPLCALL DELY5CLR ICCLKNOPSETB ICSDANOPMOV C,ICSDANOPSETB ICCLKJNC BJMM7 ;擦除不成功(密码错)转SETB FGICG1 ;置已校对密

20、码标志RETBJMM7: CLR FGICG1 ;建密码错标记RETBJMM8: SETB FGICG2 ;置卡锁死标志RET(4)写入操作:写入操作实际包含着两种:当写入的数据为“0”时,本次操作称为“写入操作”。当写入的数据为“1”时,本次操作称为“擦除操作”。“写入操作”可以按位进行。但“擦除操作”只能按字节进行。即使操作时只对单独一位进行擦除,但执行的结果将使这一位所在的字节的所有8位全部置成“1”。对芯片的任何一个允许写入或擦除的区域,其执行写入和擦除的必要条件是芯片的SV标志为“1”状态。注:在CLK为低的状态下,PGM端从“0”到“1”,并延时一段“编程建立时间”(Tspr)之后

21、,CLK端从“0”到“1”(这时是写入/擦除操作的开始),在此刻之前的Tds(数据建立时间)由外部向I/O线给出写入数据。CLK端在“1”状态应至少保持5ms(Tchp)之后,CLK端从“1”到“0”(这时是写入/擦除操作的结束)。应特别注意结束写入操作的CLK端的下降沿并不会使地址计数器加1,而只是将刚写入的“数据”读出, 以便外部验证刚才的“写入操作”。WICD: MOV A,#KDWDZ ;送擦除卡低位首地址LCALL SADR ;寻位地址MOV R2,#30 ;擦除30字节LCALL CPESC3 ;擦除MOV R0,#RAMDZ ;CPU的RAM中待写入数据地址MOV R2,#30

22、;写入30字节WICDA: MOV A,R0LCALL WICDAAINC R0DJNZ R2,WICDARET; 向IC卡写入子程序WICDAA: MOV R3,#08WICDAB: RLC AJC WICDAC ;该位为1,转SETB ICPGM ;打开编程位SETB ICPGMMOV ICSDA,CMOV ICSDA,CSETB ICCLKSETB ICCLKCLR ICPGM ;关闭编程位CLR ICPGM ;关闭编程位LCALL DELY5 ;延时5MSCLR ICCLKCLR ICCLKWICDAC: SETB ICCLKSETB ICCLKCLR ICCLKDJNZ R3,WIC

23、DABRET; 擦除应用区1CPESC3: SETB ICPGM ;打开编程位,擦除灰名单入口SETB ICPGMSETB ICSDASETB ICSDASETB ICCLKSETB ICCLKCLR ICPGM ;关闭编程位LCALL DELY5 ;延时5MSCLR ICCLKCLR ICCLKSETB ICCLKSETB ICCLKCLR ICCLKMOV R3,#07CPESC4: SETB ICCLKSETB ICCLKCLR ICCLKCLR ICCLKDJNZ R3,CPESC4DJNZ R2,CPESC3RET; 延时(R7)DELY5: MOV R7,#0AH ;5毫秒延时DE

24、LY: PUSH 07DLY1: PUSH 07DLY2: PUSH 07DLY3: DJNZ R7,DLY3POP 07DJNZ R7,DLY2POP 07DJNZ R7,DLY1POP 07DJNZ R7,DELYRET结束语随着IC卡技术的飞速发展,金融机构、国家机关、公司企业、教育部门等领域的需求越来越迫切,应用越来越广泛。我们已在石化系统加气站实现了使用IC卡进行加气的业务,现将调试成功的部分实用子程序提供给大家,供同行朋友们参考。随着MP3手机的兴起,用户不仅对手机音乐的音量、音质要求越来越高,而且对手机的存储容量的要求也越来越大,总希望能多存些歌,可以省去频繁换歌的烦恼。但目前一

25、般手机自带的内存远远不能满足这些要求,而且很多手机平台也无法支持外接存储卡,为了解决这一问题,就需要有配套的存储管理芯片。 方泰电子的ft1780可以帮手机设计工程师很好的解决这个难题。它不仅可以提供专业的MP3音乐,而且集成了SD/MMC存储卡接口,由于内置文件管理系统,可以方便地升级原有的手机产品,使之具有可更换外接SD/MMC存储卡的功能。本文介绍了ft1780音频处理芯片的功能特点,并详细叙述了其在手机上的应用实例。 ft1780芯片内部结构和特点 图1是ft1780芯片的内部框图,从中可以看出,ft1780主要由7部分组成。 图1:ft1780芯片内部框图。1. 主机接口:与Base

26、band相连,Baseband通过它向ft1780发命令和读取状态; 2. 音频/系统引擎:芯片的核心部分,完成64和弦MIDI合成,MP3解码,七段数字均衡器,文件系统管理,系统控制等功能; 3. SD/MMC卡控制器:完成SD/MMC卡接口功能; 4. 输入/输出控制器:完成I2S接口,四路LED控制,马达和背光控制等功能; 5. 电源管理系统:可以关掉不用的功能模块,节省系统功耗; 6. 立体声耳机功放:可以直接驱动16ohm的耳机,输出功率可达到20mW以上; 7. 喇叭功放:可以直接驱动8ohm喇叭,输出功率可达到500mW以上; ft1780芯片采用6mmx7mm 48Pin的BG

27、A封装,与其它普通MP3解码芯片相比,它有以下几个主要特色: 1. 工作电流小,具有高效的省电设计电路,芯片内各模块可以单独控制开和关,可满足手机上不同的工作模式要求; 2. 支持全系列采样率和编码率的MP3数据,包括MPEG Version1 Layer3,MPEG Version2 Layer3和MPEG Version2.5 Layer3标准,采样率范围是848kHz,编码率是8320kbps,解码品质高,声音音质好; 3. 支持64和弦的铃声,支持自有的人声音效格式(FTF格式),同时支持自然音和背景音的播放; 4. 内置SD/MMC卡的文件管理系统程序,不需要手机的基带来解析SD/M

28、MC卡上的文件系统,基带只要发简单的命令就可以控制ft1780的播放功能,SD/MMC卡的数据可以不经过基带,由ft1780芯片自己读取和播放,这样可以大大减轻基带的负担,也因此拓宽了ft1780的应用面。 5. 内置高品质立体声耳机功率放大电路,输出功率大,并具有无耦合电容设计的耳机输出电路。普通的耳机输出需要两个较大的隔直电容,若电容容量太小,会使低频响应变差,声音低频失真。而无耦合电容设计可以节省成本,节省手机电路板宝贵的空间,增加耳机输出的保真度。 6. 内置喇叭功率放大电路,在8ohm喇叭上可以输出500mW以上的功率。 图2:典型应用示意图。ft1780芯片的曲型应用 ft1780

29、的应用电路比较简单,所需的外围器件很少,只需要十几个电阻和电容,典型应用线路如2所示。通过调整R1和R3的比值可以调节ft1780内部输出到喇叭的增益,通过调整C1和C3可以调节喇叭输出声音的高频和低频特性,对于图中所列参数,R1=33k欧姆,C1=330pF,R3=33k欧姆,C3=0.1uF,增Gain=R1/R3=1,高频截止频率为FH=1/(2*R1*C1)=14.6kHz,低频截止频率为FL=1/(2*R3*C3)=48.2Hz。从Audio In进来的音频信号可以通过控制从喇叭或耳机出来,并且可以根据需要通过R2和C2调节它的低频响应曲线。图中,耳机的输出已用了无耦合电容设计,所以

30、图上没有输出耦合电容,但要注意的是,耳机的公共端不是通常的“地”,需是芯片上的虚拟地脚“HPR”。另外芯片的VDDA脚可以直接与电池的正级相接,在不需芯片工作时,可以用软件来控制芯片进入Power Down状态,这时芯片的耗电只有几微安。 相关软件和播放流程 ft1780芯片的工作需要相应的驱动程序支持。驱动程序采用模块化结构,各功能都有相应的程序,在Design In过程中,只要修改硬件相关的地址参数,加入中断服务程序(也可以使用定时器相关的查询模式),然后调用相应的API就可以正常工作(发出声音)了。图3是软件模块示意图,下面简单介绍一下各模块的功能: 图3:软件模块示意图。1. 硬件平台

31、相关模块:需要根据手机平台的情况修改相应的参数,主要有芯片寄存器的操作地址,输入时钟的频率等; 2. MIDI模块:MIDI数据解析和处理,MIDI播放控制和回调控制; 3. ADPCM模块:ADPCM数据解析和处理,ADPCM播放控制和回调控制; 4. FTF模块:FTF数据解析和处理,FTF播放控制和回调控制; 5. SD/MMC模块:SD/MMC命令解析和处理,SD/MMC播放控制和回调控制; 6. MP3模块:MP3数据解析和处理,MP3播放控制和回调控制; 7. 中断服务模块:对芯片的各个中断事件作相应的处理,主要补充数据,播放结束控制和出错信息处理等; 8. 驱动程序API模块:提

32、供用户所需的所用功能的调用,用户不必关心具体底层模块的细节,只需与上层API打交道; 9. 用户参考模块:如何使用API控制播放的一个例子,也可以作为API的进一步包装,供用户直接使用。 下面我们介绍一下ft1780软件的使用方法。 播放Baseband上文件的流程 图4是播放Baseband上文件的流程图。当用户想播放Baseband上的音频数据时,首先是要对ft1780芯片做初始化,然后对要播放的数据做预处理,驱动程序会分析数据格式,并根据格式自动调用底层处理函数,再下一步是启动中断或定时器、消息等机制,这一步的目的是启动后台处理任务,当进入播放状态时,需由后台任务完成后续的处理工作,最后

33、就是发播放开始命令,开始播放声音,进入播放状态。 图4:播放Baseband上文件的流程图。在播放状态下,ft1780芯片会根据内部运作情况发出中断请求,Baseband必需在一定时间内处理相应事件,否则会出现声音停顿,不连续等现象。在ft1780芯片内部有很大的FIFO(先进先出存储器)来保存播放的数据,可以适应低端Baseband中断反应延时比较大的问题,保证声音播放的顺畅。 在播放过程中,Baseband随时可以调用相应的API来停止当前的播放,或读取播放信息,暂停/恢复等操作。 播放SD/MMC卡上文件的流程 图5是播放SD/MMC卡上文件的流程图。当用户想播放SD/MMC卡上的声音文

34、件时,首先是要对ft1780芯片做初始化,然后读出卡上的声音文件,选择要播放的文件,调用简单的API播放命令后,进入播放状态,芯片会自动读取卡上的数据,播放出声音,再下一步是启动中断或定时器、消息等机制,这一步的目的是启动后台处理任务,处理中断事务。 带SD/MMC存储卡接口的MP3和弦芯片ft1780图5:播放SD/MMC卡上文件的流程图。虽然看上去与播放Baseband上文件的流程差不多,但主要有以下不同:当播放Baseband上文件时,Baseband必须不断地送数据到ft1780芯片内部,中断会比较频繁(与所播放的文件的码流率有关),而当播放SD/MMC卡上的文件时,ft1780芯片自

35、己从SD/MMC卡里读取所需数据,不需要Baseband的干预,在播放过程中基本上没有中断任务,只有在播放结束时会发出中断告知Baseband,由Baseband决定下一步的工作,如重复播放、或播放下一个文件,所以对Baseband的要求更低,适应性更广。 在播放过程中,Baseband随时调用相应的API函数,完成停止播放,暂停/恢复等功能。 存储卡控制芯片凭借优良性能和出色的销售业绩,芯邦自主研发的SD/MMC存储卡控制芯片在 “2007年中国半导体创新产品和技术项目”评选中,荣获了“中国半导体创新产品”称号。 芯邦公司是由归国留学人员于2003年在深圳创立的。公司致力于成为与移动存储和多

36、媒体相关的控制芯片设计及其整体解决方案开发的领导者。 快速成长与发展的闪存(flash)存储器已经成为半导体产业特别是移动存储产业发展的主要推动力,而将闪存与各种接口和应用相连接的控制器芯片起着关键性的作用,它直接影响到闪存的推广和应用,市场空间非常广阔。 移动多媒体是带动消费类电子产品发展的领头羊,例如MP3, MP4, GPS等等,过去几年和未来都显示出巨大的发展空间,为芯片设计公司提供了前所未有的发展机遇。 凭借芯邦核心团队在海外著名芯片设计公司(Broadcom、Philips)几十年芯片设计与管理经验,加上本土化的客户服务与市场开拓优势,在中国良好的集成电路产业发展环境下,芯邦立足和

37、专注于移动存储和多媒体相关控制芯片的开发和应用,为该产业的发展做出了积极的贡献。 成立仅短短4年多的芯邦,依靠不懈地努力自主创新研制推出的第一代产品U盘系列控制芯片,截至2007年底累计出货量已超过一亿片,单月销售量更突破700万片,已占全球约40%的市场份额,成为U盘控制芯片全球最大供货商;2007年下半年,芯邦又在创新模式下开发出国内第一款SD/MMC卡控制芯片,打破了以往长期被中国台湾的厂商垄断供货的局面。在保留区之后是FAT区,存有文件分配表。一般文件系统中有2份文件分配表FAT1和FAT2,每份FAT表占用空间的大小可从BPB表中查得。由于采用的是SDHC卡和FAT32文件系统,紧接

38、在FAT区之后的是文件目录数据区,真正意义上的数据从这个区开始,以簇编号,顺序上第1个簇编号为第2簇,此簇通常为FAT32根目录所用。FAT16从根目录所占的32个扇区之后的第一个扇区开始以簇为单位进行数据处理,这之前仍以扇区为单位。目录与数据是统一放到这个区域的,并且都不是在一个连续的区域内存放。没有任何特殊标记来区分哪个簇是目录项,哪个簇是数据项,而是由文件系统从根目录出发通过查找的方法来确定簇的类型。3.2 FAT32文件系统实现本文设计的文件系统采用模块化层次结构,其总体框架如图4所示。其中,箭头表示调用关系。应用程序是面向用户的,为满足某种功能需求而编写的程序。可以通过调用文件系统提

39、供的API函数对文件和目录进行相应的操作。文件管理和目录管理模块是直接与应用程序接口的模块,位于整个文件系统的最高层。文件管理模块提供所有与文件操作相关的函数,目录管理模块提供所有与目录操作相关的函数。在对文件操作的大多数情况下,文件管理模块需要调用目录管理模块的相关功能。文件分配表管理模块主要用来对文件系统的FAT表进行管理,根据系统的请求对FAT表的内容进行相应的修改。文件目录表管理模块主要提供对文件和目录的基本属性信息的管理。这两个模块管理着文件系统的两个重要数据结构,应用程序不能直接调用它们。缓存模块是为了降低系统访问SD卡的次数,提高整个系统的处理速度而加入的。它使用了部分RAM作为

40、缓存来保存一些访问过的扇区的数据,一般用来加载FAT表和FDT表的数据;向SD卡写入数据时,也需要用它加载数据。以上几个模块的操作都建立在底层驱动程序上。底层驱动程序主要是向SD卡读写某个扇区的程序。文件分配表管理模块包含几个处理簇链的函数,如获取指定簇下一簇簇号(fat_next_clus()、建立簇与指定簇的链接关系(fat_link_clus()、在簇后增加一个空白簇到簇链中(fat_add_clus()和删除指定簇的簇链(fat_del_clus_chain()。文件目录表管理模块包含几个处理文件登记项的函数,如在给定目录下查找文件(fat_find_fdt()、在给定目录下添加文件(

41、fat_add_fdt()和在给定目录下删除文件(fat_delete_fdt()。目录管理模块主要是实现建立、删除目录的操作,包含的函数有根据路径查找目录所在簇(fat_open_dir()、建立目录(fat_make_dir()和删除目录(fat_del_dir()。用户使用文件系统主要是对文件的操作,文件管理模块提供了对文件的创建、修改和删除等操作,包含函数新建文件(file_create()、打开文件(file_open()、读写指针设定(file_seek()、读取文件数据(file_read()、写入文件数据(file_write()、删除文件(file_delete()和关闭文件(file_close()。结语本文介绍了SD卡在海洋数据存储中的应用,使用高性能的STM32F103xx系列处理器提高了SD卡的数据读写速率,很好地解决了海洋数据采集中的大容量存储问题和SDl.x与SD2.0的识别问题,并给出了适用于SD卡的FAT32文件系统的参数设置及其实现方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号