SD卡(secure digital memory card,安全数码卡)是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2 g,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
本文正是通过AVR单片机经过软硬结合的设计方案,来读取SD卡上FAT32文件系统中的数据,FAT32是微软公司开发的新一代的文件系统,支持更大的存储容量和长达255个字符的文件名,也可以通过串口转USB接口芯片通过计算机来访问存储器中的数据,从而实现多渠道的立体的访问方式,进一步提升了资源的利用率。
1 文件系统
1.1 FAT文件系统简介
文件配置表(FAT)是一种由微软公司发明的并带有部分专利的文件系统,供MS-DOS使用,也是非NT内核的微软窗口使用的文件系统。FAT文件系统考虑当时计算机效能有限,所以未被复杂化,因而被几乎所有个人计算机的操作系统支持。这些特性使它成为理想的软盘和记忆卡的文件系统。但FAT有一个严重的缺点:当文件被删除并且在同一位置被写入新数据,他们的片段通常是分散的,减慢了读写速度。磁盘碎片重整是一种解决方法,但必须经常重组来保持FAT文件系统的效率。欢迎转载,本文来自电子发烧友网(http://www.elecfans.com )
1.2 FAT文件系统升级版
FAT32实际上是文件分区表采取的一种形式,它是相对于FATl6而言的。它可以大大地节约磁盘空间。文件在磁盘上是以簇的方式存放的,簇里存放了一个文件就不能再存放另外的文件。
FAT32最大的优点是可以支持的磁盘大小达到2 TB(2 048 GB),但是不能支持小于512 MB的分区。由于采用了更小的簇,FAT32文件系统可以更有效率地保存信息。FAT32可以更高效地使用空间。FAT32使用较小的簇(即,对于大小在8 GB以内的驱动器,使用4 KB的簇),这与大的FAT或FAT16驱动器相比,可将磁盘空间的使用率提高10 9,6~15%。
FAT32更稳定可靠。FAT32可以重新定位根文件夹,而且它使用文件分配表的备份副本,而不是使用默认副本。此外,FAT32驱动器上的引导记录也得到扩展,包括了关键数据结构的备份副本。因此,与现有的FAT16驱动器相比,FAT32驱动器不容易受单点故障的影响。
FAT32更灵活。FAT32驱动器上的根文件夹是普通的簇链,因此它可以位于驱动器上的任何位置。以前对根文件夹数量的限制不复存在。此外,可以禁用文件分配表镜像,这样就可以让文件分配表的副本而不是让第一个文件分配表处于活动状态。这些功能允许您动态重调FAT32分区的大小。
2 硬件设计
2.1 芯片概述
ATmega32是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega32的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。ATmega32 AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问2个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。
PL2303用于实现USB和标准RS 232串行端口之间的转换,2个独立的大型缓冲用于两种总线的连接,大型数据缓冲器用于USB的批量数据传输,自动握手模式可用于串行通讯,因而可以达到远大于标准UART控制器的波特率。PL2303支持USB电源管理和远程唤醒协议。本设计中PL2303芯片主要应用在将主控单元的下载线与供电模块合二为一,大大简化了系统的设计复杂度。
NOKIA 5110液晶显示器,传统的点阵式液晶显示器,不内置英文及汉字字库,因此NOKIA 5110液晶显示的过程,需要单片机把从存储器中读取到的ASCII码值转换成对应的英文及汉字点阵信息,然后通过串口把点阵信息传输到液晶显示器上进行显示。
2.2 硬件设计
硬件单元包括:AVR主控ATmega32单元模块,SD卡接口模块,液晶显示接口模块,串口转USB接口。
2.2.1 主控电路设计
主控电路(如图1所示)主要负责将从输入接口中读到的数据转换成对应的字模码。
2.2.2 存储系统模块及下载接口设计
SD卡接口如图2所示。
2.2.3 液晶显示模块设计
液晶显示接口如图3所示。
2.2.4 USB转换接口模块设计
计算机端串行转USB接口的设计如图4所示。
3 软件设计
系统软件设计主要包括AVR单片机主控程序,中断服务控制子程序,LCD控制子程序,编码转化子程序等几个模块。单片机端程序运行流程如图5所示,计算机端运行程序流程如图6所示。
4 总结及展望
由于本设计中采用的都是一些通用器件,是对通用器件的一次尝试性扩展应用,通过LCD设计的人机接口实现设备的友好操作,能够通过单片机和计算机进行双向立体式的读写,能够实现在线的实时的FAT32文件系统资源管理,因此本系统具有一定社会价值和应用价值。
关键字:ATmega32 SD卡 FAT32 文件系统
引用地址:
基于ATmega32的SD卡上FAT32文件系统数据读取
推荐阅读最新更新时间:2024-05-02 21:11
向APFS文件系统转进:看iOS 10.3如何为iPhone扩容存储空间
此前,入门级iPhone用户总会抱怨预留的可用存储空间太少。但是随着iOS 10.3更新的发布,大家发现苹果竟然释放了数GB的自由空间。根据外媒Apple Insider编辑的实测,其iPhone 7 Plus的“释放量”达到了7.81 GB 。Daniel Eran Dilger表示,在从iOS 10.2升级到最新版iOS 10.3操作系统之后,其顶配iPhone 7 Plus(256GB)的可用存储空间从75.45 GB增加到了83.26 GB。 编辑手上这部手机在升级前已经装下了超过40000张照片和200款应用,有趣的是,系统总存储的数字也从248.5 GB增加到了252.14 GB,增量达到了3.64GB 。 一
[嵌入式]
如何使用CubeMx制作一个基于SD卡的文件系统工程
1 前言 本文将介绍使用CubeMx工具从零开始制作一个基于SD卡的文件系统,以便后续使用此功能者参考。 2 准备工作 本文工程得测试将以STM3240G-EVAL这个ST官方的评估板为测试平台,所有这块板子的一些外部组件连接方式有必要先了解一下。 LED1~LED4分别使用管脚PG6,PG8,PI9,PC7,输出高电平LED灯点亮,用户按键使用PG15管脚,按下时为低电平。 如上图,MCU使用的HSE是25M晶振。SD卡使用STM32F407固定的6个管脚如上图所示D0(PC8),D1(PC9),D2(PC10),D3(PC11),CLK(PC12), CMD(PD2). SD卡插入检测脚为用户自定义的管脚,在ST
[单片机]
STM32使用FATS文件系统读取SD卡没有有效的FAT卷
开发环境: uVision : V5.12.0.0 STM32F103V8T6 库版本 : STM32F10x_StdPeriph_Lib_V3.5.0 FATSF : ff13a 下载地址:http://elm-chan.org/fsw/ff/00index_e.html 问题: 在使用STM32的FATS文件系统,对SD卡进行文件读写时候,往往会碰到“FR_NO_FILESYSTEM:没有有效的FAT卷”的问题。 原因:SD卡在格式化的时候,格式化的格式不对。 解决办法:使用读卡器,在电脑找到SD卡,进行格式化,文件系统一定要选择“FAT(默认)”,分配单元大小,推荐选择32KB(任意选择均可),如下图:
[单片机]
烧写内核+烧写文件系统(JZ2440-S3C2440)
(一)使用DNW烧写内核 1、把开发板设置为 NOR 启动,连接 USB-串口线(开发板上的 USBcom1口 --- PC 的 USB 口), 用另一条 USB 线连接 PC机和开发板 USB 口(开发板上的 USB 口 --- PC 的 USB口)。 上电,使用 SecureCRT,选择 Download Linuxkernel uImage。 2、使用 DNW 工具,先进行“Serial Port”中的“Connect”。使用“USB Port”菜单中的 Transmit,发送要烧写uImage 文件。开发板收到文件后会自动把程序烧写到 NAND Flash上去。 (二)使用TFTP烧写内核 1、先查看PC
[单片机]
LPC11U14实现SD卡U盘
此实验在本人设计的LPC1114/LPC1343/LPC11U14开发板是验证成功:下面先秀秀图吧,下面是三种芯片三种开发板。SD卡在背面。。。 要实现SD卡U盘功能只有实验LPC1343或者LPC11U14才行,因为它们都有USB功能。下面先讲讲大概的思路。 通过USB和PC进行通信,并枚举一个U盘,具体的操作是通过SPI总线操作SD卡。 下面就先看NXP源代码模拟的U盘,和我们修改后实现的SD卡U盘: NXP模拟U盘 SD卡U盘 1.NXP原厂代码免费赠送: USBMem.rar (294.52 KB) 2.本人修改的SD卡U盘,收费哦: SD卡U盘.rar (1.45 MB
[单片机]
SD卡接口的完整规范(二)
回复从该CMD线上串行传输。一个命令是对之前命令的回答。回复可以来自单机或所有卡。DAT0~3:数据可以从卡传向主机或副versa。数据通过数据线传输。 SD卡总线拓扑 SPI模式针脚定义
针脚
名称
类型
描述
1
CS
I
片选(负有效)
2
DI
I
数据输入
3
Vss
S
地
4
Vcc
S
供电电压
5
CLK
I
时钟
6
Vss2
S
地
7
DO
O
数据输出
8
RSV
--
[嵌入式]
基于SD卡的FPGA配置
1.引言 由于 FPGA 良好的可编程性和优越的性能表现,当前采用FPGA 芯片的嵌入式系统数 量呈现迅速增加的趋势,特别是在需要进行大规模运算的通信领域。目前FPGA 配置数据一 般使用基于SRAM 的存储方式,掉电后数据消失,每次上电后都要重新写入。配置数据的 写入方式有3 种,即使用JTAG 仿真器、使用专用芯片以及使用微处理器。JTAG 仿真器的 方式在调试的时候使用较多,能随时修改,但缺点是FPGA 芯片必须与电脑主机连接,失去 了灵活性。使用专用芯片的方式可以将配置数据事先存储在非易失性存储介质中,为大规模 升级提供了方便,但不利之处在于专用芯片往往价格较高,并且也必须采用特定的存储介质, 提升了系统成本,而
[嵌入式]
MSP430 SD卡SPI读写操作(4) —— FatFs文件系统实现
本节介绍MSP430F5438A FatFs文件系统的移植。 FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。FatFs模块与IO是分开的,因此移植时需要实现下面几个底层函数: DSTATUS disk_initialize (BYTE drv); //初始化存储器 DSTATUS disk_status (BYTE drv); //获取存储器状态 DRESULT disk_read (BYTE drv, BYTE* buff, DWORD sector, UINT count); //读存储器 DRESULT disk_write (BYTE drv, const BYTE* buff,
[单片机]