SD卡读卡器实验步骤
- 格式:pdf
- 大小:376.19 KB
- 文档页数:6
USB实现SD读卡器实验z意义与作用神舟IV号开发板资源丰富,本节将介绍,如何通过USB接口访问神舟IV号上插入的SD 卡。
即用STM32处理器实现我们常说的SD卡读卡器功能。
通过本实验,我们将对前一例程中使用的USB接口更进一步的认识,同时,我们还可以对SD卡有一个更深入的了解。
本实验参考ST的Mass_Storage例程,针对神舟IV号的硬件修改代码设计,使用SPI方式来读写SD卡,实现SD读卡器功能。
z实验原理SD卡读卡器实验原理简介:首先程序运行后,初始化实验需要使用的到串口和GPIO管脚,然后初始化访问SD卡要使用的SPI接口与USB接口。
检测SD卡在,待SD卡插入之后,就开始USB的配置,在配置成功之后既可以在电脑上发现可移动磁盘了。
在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
更详细的说明请参看USB HID 协议,该协议可从下载。
关于STM32的USB知识可以参考附件的《STM32 USB固件的中文资料.pdf 》和《STM32的USB详解.pdf》等文档。
下图为USB 描述符的层次结构:z硬件设计SD卡读卡器实验要用到的硬件资源有:¾串口1:串口1在本实验中打印程序运行过程中的提示信息。
¾LED指示灯:LED指示灯主要用于指示程序运行状态。
¾SD卡座:神舟IV号最大支持2G的SD卡¾USB接口:使用USB接口与电脑连接,将SD卡插入神舟IV号SD卡座后,运行程序,可以在电脑上检测到一个U盘设备。
并可以进行读写操作。
SD卡读卡器实验使用的资源主要是USB接口和SD卡座两部分:USB 2.0 OTG全速接口作为Device设备注:本实验的USB 2.0 OTG全速接口硬件设计与前面“USB人机交互设备HID实验”对应章节完全相同,此处不再重复,请参考“USB人机交互设备HID实验”对应章节。
microSD卡实验1.实验目的(1)掌握串行外设接口(SPI)的功能和应用(2)熟悉Stellaris®同步串行接口(SSI)(3)了解SD/MMC卡的功能和运用(4)了解FatFs文件系统和底层磁盘I/O层2.实验内容(1)Stellaris® SSI的初始化(2)移植FatFs模块和底层磁盘I/O接口函数(3)建立SSI与microSD卡之间的通信和数据交换(4)构建一个命令控制台(5)建立微控制器与PC机之间的通信(6)演示通过上位机发送命令行访问microSD卡的实验3. SSI数据通信原理SSI模块可用于主从式通信网络,图1所示是SSI与外设器件进行同步串行通信的原理图。
用4根接口线就可以完成他们之间的数据通信,这四根接口线分别为时钟线(SCLK)、数据输入线(SDI)、数据输出线(SDO)以及片选线(CS)。
图1 SSI与外设器件同步串行通信原理图SSI支持的同步串行接口格式包括Freescale SPI、Microwire和TI SSI。
图2所示是时钟极性位SPO=0和相位控制位SPH=0时,Freescale SPI帧格式的单次传输信号序列。
SSICLK在SSI空闲时保持不活动状态,只有当数据的发送或接收处于活动状态时,SSICLK才在设置好的频率下工作。
利用SSICLK的空闲状态可提供接收超时指示。
对于SPI和MICROWIRE这两种帧格式,SSIFSS管脚为低电平有效,并在整个帧的传输过程中保持有效。
如果SSI使能并且在发送FIFO中含有有效的数据,则通过将SSIFSS主机信号驱动为低电平表示发送操作开始。
这使得从机数据能够放在主机的接收输入线上。
主机发送输出端口使能。
在半个SSICLK周期之后,有效的主机数据传输到发送管脚。
既然主机和从机数据都已设置好,则在下半个SSICLK周期之后,主机SSICLK管脚变为高电平。
这时,数据在SSICLK信号的上升沿被捕获,在它的下降沿进行传输。
1.目的:为了保证本工厂获证产品在生产时有可靠性、安全性及与获证产品的一致性,并为满足客户要求特制定本程序。
2.定义:
3.适用范围:本公司生产的IC卡读卡器均适用。
例行检验是在生产线的最终阶段对生产线上的产品进行100%检验,通常检验后,除包装和加贴标签外,不再进一步加工。
确认检验是为验证产品持续符合标准要求进行的抽样检验,确认实验应按标准的规定进行;
4.职责:
4.1 生产部:负责IC卡读卡器生产。
4.2品管部:负责IC卡读卡器的功能及外观等检验。
4.3工程部:负责IC卡读卡器的确认检验。
5.程序内容
5.1例行检验。
5.1.1 IC卡读卡器成品经组装成品后,送品管部测试,若测试OK则流入下一工序进
行一致性、功能、外观、标识,并填写《品质检验报告》。
5.1.2以上任一工序检验不通过,该工序检验员及时将其隔离并通知生产部进行返工
查至检验OK为止。
5.2确认检验
5.2.1工程部按《电气电子产品强制性认证实施规则——信息技术》中确认检验项目、时间、频次进行确认检验,并保存确认检验记录。
5.2.2对于本厂无能力确认检验项目,由工程部送国家认可检测机构检验,并保持检验记录。
5.3.3确认检验详见下表
产品确认检验表
6.0参考文件
6.1《电气电子产品强制性认证实施规则——信息技术》7.0相关表单
7.1《QC检验日报》。
a r d u i n o学习笔记18---S D卡读写实验本次实验使用arduino驱动SD卡,在SD卡中进行文件读写。
需要说明的是arduino的SD库文件,目前对2G以上的卡支持不是很好,所以推荐大家使用2G包含2G以下的,文件格式使用FAT格式。
这次我是用的是kingmax2G的MicroSD卡。
先看一下硬件连接图把下面代码下载进arduino控制板/*此例子展示如果记录三个模拟引脚数值到SD卡,使用SD库。
电路部分* 模拟引脚使用模拟口0,1,2大家可以根据情况接入模拟传感器,如果没有,也可以完成此实验,只不过数值是不停跳动的干扰源。
* SD卡与arduino控制板使用SPI总线连接** MOSI - pin 11** MISO - pin 12** CLK - pin 13** CS - pin 4*/#include <SD.h>// CS引脚为pin4,这里也沿用官方默认设置const int chipSelect = 4; //设定CS接口void setup(){Serial.begin(9600); //设置串口通信波特率为9600Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...pinMode(10, OUTPUT);if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not presentSerial.println("Card failed, or not present");return;}Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized.}void loop(){// 定义数组String dataString = "";// 读取三个传感器值,写入数组for (int analogPin = 0; analogPin < 3; analogPin++) {int sensor = analogRead(analogPin);dataString += String(sensor);if (analogPin < 2) {dataString += ",";}}// 打开文件,注意在同一时间只能有一个文件被打开// 如果你要打开另一个文件,就需要先关闭前一个File dataFile = SD.open("datalog.txt", FILE_WRITE);// 打开datalog.txt文件,读写状态,位置在文件末尾。
读卡器课程设计一、课程目标知识目标:1. 学生能够理解读卡器的基本概念、功能及工作原理;2. 学生能够掌握与读卡器相关的电子元件、电路图的识别与分析;3. 学生能够了解读卡器在不同领域的应用及其重要性。
技能目标:1. 学生能够运用所学知识,正确组装和调试简单的读卡器电路;2. 学生能够运用读卡器进行数据读取和简单编程操作;3. 学生能够通过实际操作,培养动手能力、观察力和问题解决能力。
情感态度价值观目标:1. 学生对电子技术产生兴趣,树立科技创新意识;2. 学生在学习过程中,培养合作、探究、创新的精神;3. 学生能够认识到读卡器在现代社会中的广泛应用,认识到学习电子技术的重要性。
分析课程性质、学生特点和教学要求,本课程旨在通过理论与实践相结合的方式,使学生掌握读卡器的基本知识,提高学生的动手实践能力和创新能力。
课程目标具体、可衡量,便于学生和教师在教学过程中进行有效评估。
后续教学设计和评估将围绕这些具体学习成果展开。
二、教学内容1. 读卡器基础知识:- 读卡器定义、分类及工作原理;- 常见读卡器芯片及其特性;- 读卡器相关电子元件的识别与作用。
2. 读卡器电路分析与组装:- 电路图分析,理解读卡器电路组成;- 实际操作,正确组装读卡器电路;- 调试与排错,确保读卡器电路正常运行。
3. 读卡器编程与应用:- 读卡器编程基础知识;- 数据读取与写入操作;- 实际应用案例分析与讨论。
4. 读卡器在各领域的应用:- 智能交通、门禁系统、身份认证等领域的应用案例;- 读卡器技术的发展趋势及其对日常生活的影响。
教学内容根据课程目标进行选择和组织,保证科学性和系统性。
教学大纲明确以下安排和进度:第一周:读卡器基础知识学习;第二周:读卡器电路分析与组装;第三周:读卡器编程与应用;第四周:读卡器在各领域的应用及发展趋势。
教学内容与课本章节紧密关联,确保教学实际需求。
三、教学方法针对本章节内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 在讲解读卡器基础知识、工作原理和相关电子元件等理论部分时,采用讲授法,结合多媒体课件,生动形象地呈现知识点,帮助学生建立基本概念。
sd卡数据读写流程一、概述SD卡是一种常用的存储设备,应用广泛。
在进行SD卡数据读写操作时,需要了解其基本流程及相关细节。
本文将详细介绍SD卡数据读写流程。
二、准备工作1. 确认SD卡类型:根据需求选择合适的SD卡类型,如标准SD卡、Mini SD卡、Micro SD卡等。
2. 准备读写设备:需要使用支持SD卡的读写设备,如读卡器、手机、相机等。
3. 系统环境:根据不同操作系统选择相应的驱动程序和开发工具。
三、初始化SD卡1. 电源接口:将SD卡插入读写设备中,并接通电源。
2. 查找CMD线:通过CMD线查找到SD卡,并发送复位命令。
3. 发送初始化命令:发送初始化命令后,等待SD卡响应并返回状态码。
四、读取CID和CSD寄存器信息1. 发送CMD10命令:通过CMD10命令可以获取CID寄存器信息。
2. 发送CMD9命令:通过CMD9命令可以获取CSD寄存器信息。
五、设置Block长度1. 发送CMD16命令:通过CMD16命令设置Block长度,即每次读取或写入的字节数。
六、数据传输1. 读取数据:发送CMD17命令,指定读取的起始地址和读取的Block数量,等待SD卡响应并返回数据。
2. 写入数据:发送CMD24命令,指定写入的起始地址和写入的Block数量,等待SD卡响应并写入数据。
七、结束操作1. 发送CMD12命令:结束操作前需要发送CMD12命令,以停止多块传输。
2. 断开电源:操作完成后需要断开SD卡电源。
八、注意事项1. SD卡在进行读写操作时需要保持稳定的电压和供电。
2. 操作过程中需要注意各种状态码及其含义。
3. 合理选择Block长度可以提高读写速度。
以上就是SD卡数据读写流程的详细介绍。
在实际应用中,还需要根据具体情况进行合理调整和优化。
实验九 SD卡驱动程序实验【实验目的】1、了解PXA27X微处理器GPIO的功能2、了解SD卡驱动程序的架构及编程方法3、掌握SD卡的使用方法【实验原理】1、SD/MMC简介SD(Secure Digital Card)卡,由松下、东芝和SanDisk联合推出,1999年8月才首次发布。
SD卡数据传送和物理规范由MMC发展而来,大小和MMC差不多,尺寸为32mm x 24mm x 2.1mm。
长宽和MMC一样,只是厚了0.7mm,以容纳更大容量的存贮单元。
SD卡与MMC卡保持着向上兼容,也就是说,MMC可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。
(SD卡外型采用了与MMC厚度一样的导轨式设计,以使SD设备可以适合MMC)SD接口除了保留MMC的7针外,还在两边加多了2针作为数据线。
采用了NAND型Flash Memory,基本上和SmartMedia的一样,平均数据传输率能达到2MB/s。
MMC(MultiMediaCard)卡由西门子公司和首推CF的SanDisk于1997年推出。
MMC的发展目标主要是针对数码影像、音乐、手机、PDA、电子书、玩具等产品,号称是目前世界上最小的Flash Memory存贮卡,尺寸只有32mm x 24mm x 1.4mm。
虽然比SmartMedia厚,但整体体积却比SmartMedia小,而且也比SmartMedia轻,只有1.5克。
MMC也是把存贮单元和控制器一同做到了卡上,智能的控制器使得MMC保证兼容性和灵活性。
MMC存贮卡可以分为MMC和SPI(serial peripheral interface)两种工作模式,MMC模式是标准的默认模式,具有MMC的全部特性。
而SPI模式则是MMC存贮卡可选的第二种模式,这个模式是MMC协议的一个子集,主要用于只需要小数量的卡(通常是1个)和低数据传输率(和MMC协议相比)的系统,这个模式可以把设计花费减到最小,但性能就不如MMC。
51单片机实现对SD卡的读写SD卡SPI模式下与单片机的连接图:22.23.//获得16位的回应24. Read_Byte_SD(); //read the first byte,ignore it.25.do26. { //读取后8位27. tmp = Read_Byte_SD();28. retry++;29. }30.while((tmp==0xff)&&(retry<100));31.return(tmp);32.}2)初始化SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。
在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。
在初始化成功后,应尽量提高SPI的速率。
在刚开始要先发送至少74个时钟信号,这是必须的。
在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。
随后就是写入两个命令CMD0与CMD1,使SD卡进入SPI模式初始化时序图:初始化例程:1.//--------------------------------------------------------------------------2.初始化SD卡到SPI模式3.//--------------------------------------------------------------------------4.unsigned char SD_Init()5.{6.unsigned char retry,temp;7.unsigned char i;8.unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};9. SD_Port_Init(); //初始化驱动端口10.11. Init_Flag=1; //将初始化标志置112.13.for (i=0;i<0x0f;i++)14. {15. Write_Byte_SD(0xff); //发送至少74个时钟信号16. }17.18.//向SD卡发送CMD019. retry=0;20.do21. { //为了能够成功写入CMD0,在这里写200次22. temp=Write_Command_SD(CMD);23. retry++;24.if(retry==200)25. { //超过200次26.return(INIT_CMD0_ERROR);//CMD0 Error!27. }28. }29.while(temp!=1); //回应01h,停止写入30.31.//发送CMD1到SD卡32. CMD[0] = 0x41; //CMD133. CMD[5] = 0xFF;34. retry=0;35.do36. { //为了能成功写入CMD1,写100次37. temp=Write_Command_SD(CMD);38. retry++;39.if(retry==100)40. { //超过100次41.return(INIT_CMD1_ERROR);//CMD1 Error!4.unsigned char Read_CSD_SD(unsigned char *Buffer)5.{6.//读取CSD寄存器的命令7.unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};8.unsigned char temp;9. temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes10.return(temp);11.}4)读取SD卡信息综合上面对CID与CSD寄存器的读取,可以知道很多关于SD卡的信息,以下程序可以获取这些信息。
sd读卡器怎么用,sd读卡器如何插卡
操作方法
01
这里介绍的主要是下图中这种SD读卡器,它是可以直接插在电脑上的USB接口上的,很便捷。
02
这种SD读卡器在首尾各有一个塑料盖,拔下后,前端为USB插头,插电脑上USB接口的,后端为SD卡的插槽。
03
这种插槽是用来插下图中这种SD卡的,它比较宽,注意在卡的前端有一个小小的缺角。
04
要用借助读卡器读取SD卡时,拿起SD卡,轻轻的将它推进SD
卡读卡器的尾部插槽即可,如下图。
05
在把SD卡插进读卡器的时候,需要注意的是,不要把SD卡插反了,否则SD卡会插不进,如下图所示。
06
这样把SD读卡器装好SD卡后,就可以把它再插在电脑上的USB 接口上了,正常情况下,读卡器上的红色指示灯就会亮起,电脑上也就会出现该卡的识别提示了。
读卡器的使用流程示例
1. 简介
读卡器是一种可以读取各种类型的存储卡的设备。
它可以将存储卡中的数据传
输到电脑或其他设备上。
本文将介绍如何正确地使用读卡器,并提供使用流程示例。
2. 准备工作
在开始使用读卡器之前,需要做一些准备工作:
•确保读卡器与电脑或其他设备的连接端口相匹配。
•检查存储卡是否正确插入读卡器。
•确保计算机或设备已经安装了合适的驱动程序。
3. 步骤说明
以下是使用读卡器的流程示例:
步骤一:插入存储卡 1. 将存储卡插入读卡器的相应卡槽中。
确保插入方向正确,避免损坏存储卡和读卡器。
步骤二:连接读卡器 1. 将读卡器的USB接口插入计算机或其他设备的USB端口。
确保插入稳固,并且接口相匹配。
步骤三:传输数据 1. 在电脑桌面上找到读卡器的图标,并双击打开读卡器软件。
2. 程序打开后,它会自动检测到连接的读卡器和存储卡。
3. 在程序界面上选择所
需的操作,如复制文件或将文件导入计算机。
可以按照提示进行操作。
步骤四:安全拔出 1. 在传输数据完成后,首先关闭读卡器软件。
2. 在Windows操作系统中,点击任务栏右下角的。
SD卡读写操作详细说明51单⽚机实现对SD卡的读写SD卡SPI模式下与单⽚机的连接图:22.23.//获得16位的回应24. Read_Byte_SD(); //read the first byte,ignore it.25.do26. { //读取后8位27. tmp = Read_Byte_SD();28. retry++;29. }30.while((tmp==0xff)&&(retry<100));31.return(tmp);32.}2)初始化SD卡的初始化是⾮常重要的,只有进⾏了正确的初始化,才能进⾏后⾯的各项操作。
在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。
在初始化成功后,应尽量提⾼SPI的速率。
在刚开始要先发送⾄少74个时钟信号,这是必须的。
在很多读者的实验中,很多是因为疏忽了这⼀点,⽽使初始化不成功。
随后就是写⼊两个命令CMD0与CMD1,使SD卡进⼊SPI 模式初始化时序图:初始化例程:1.//--------------------------------------------------------------------------2.初始化SD卡到SPI模式3.//--------------------------------------------------------------------------4.unsigned char SD_Init()5.{6.unsigned char retry,temp;7.unsigned char i;8.unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};9. SD_Port_Init(); //初始化驱动端⼝10.11. Init_Flag=1; //将初始化标志置112.13.for (i=0;i<0x0f;i++)14. {15. Write_Byte_SD(0xff); //发送⾄少74个时钟信号16. }17.18.//向SD卡发送CMD019. retry=0;20.do21. { //为了能够成功写⼊CMD0,在这⾥写200次22. temp=Write_Command_SD(CMD);23. retry++;24.if(retry==200)25. { //超过200次26.return(INIT_CMD0_ERROR);//CMD0 Error!27. }28. }29.while(temp!=1); //回应01h,停⽌写⼊30.31.//发送CMD1到SD卡32. CMD[0] = 0x41; //CMD133. CMD[5] = 0xFF;34. retry=0;35.do36. { //为了能成功写⼊CMD1,写100次37. temp=Write_Command_SD(CMD);38. retry++;39.if(retry==100)40. { //超过100次41.return(INIT_CMD1_ERROR);//CMD1 Error!4.unsigned char Read_CSD_SD(unsigned char *Buffer)5.{6.//读取CSD寄存器的命令7.unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};8.unsigned char temp;9. temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes10.return(temp);11.}4)读取SD卡信息综合上⾯对CID与CSD寄存器的读取,可以知道很多关于SD卡的信息,以下程序可以获取这些信息。
USB实现SD读卡器实验z意义与作用神舟IV号开发板资源丰富,本节将介绍,如何通过USB接口访问神舟IV号上插入的SD 卡。
即用STM32处理器实现我们常说的SD卡读卡器功能。
通过本实验,我们将对前一例程中使用的USB接口更进一步的认识,同时,我们还可以对SD卡有一个更深入的了解。
本实验参考ST的Mass_Storage例程,针对神舟IV号的硬件修改代码设计,使用SPI方式来读写SD卡,实现SD读卡器功能。
z实验原理SD卡读卡器实验原理简介:首先程序运行后,初始化实验需要使用的到串口和GPIO管脚,然后初始化访问SD卡要使用的SPI接口与USB接口。
检测SD卡在,待SD卡插入之后,就开始USB的配置,在配置成功之后既可以在电脑上发现可移动磁盘了。
在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
更详细的说明请参看USB HID 协议,该协议可从下载。
关于STM32的USB知识可以参考附件的《STM32 USB固件的中文资料.pdf 》和《STM32的USB详解.pdf》等文档。
下图为USB 描述符的层次结构:z硬件设计SD卡读卡器实验要用到的硬件资源有:¾串口1:串口1在本实验中打印程序运行过程中的提示信息。
¾LED指示灯:LED指示灯主要用于指示程序运行状态。
¾SD卡座:神舟IV号最大支持2G的SD卡¾USB接口:使用USB接口与电脑连接,将SD卡插入神舟IV号SD卡座后,运行程序,可以在电脑上检测到一个U盘设备。
并可以进行读写操作。
SD卡读卡器实验使用的资源主要是USB接口和SD卡座两部分:USB 2.0 OTG全速接口作为Device设备注:本实验的USB 2.0 OTG全速接口硬件设计与前面“USB人机交互设备HID实验”对应章节完全相同,此处不再重复,请参考“USB人机交互设备HID实验”对应章节。
西安邮电大学智能卡技术及应用课内实验报告实验名称:存储器卡读写实验专业名称:智能科学与技术班级:学生姓名:学号:指导教师:实验日期:2016年4月18日实验一存储器卡读写实验一.实验目的1.了解CI2串行总线的工作原理;2.通过实验了解存储器卡存、取数据的过程。
二.实验器材1.KEIL软件;2.PROTEUS仿真软件。
三.实验内容往24C04芯片中写入一个数据(如“129”),然后再从24C04芯片中读出刚才的数据并把它显示在数码管上。
四.实验步骤1.硬件电路仿真使用Proteus软件画出如图1所示的电路图,要求:使用两个按钮来分别模拟读卡和拔卡(清除数据)的过程,用一个发光二极管来模拟卡座上电的过程。
(注:电路图画好后,给存储器24C04导入24C04.bin文件,给51单片机导入hex文件)图 1 硬件电路图2.软件编写图2 程序流程图程序截图:图33.实验结果刚开始运行时,单片机没有读取任何数据,此时数码管显示数字为0;当“读卡”按钮按下时,此时发光二极管亮,数码管显示预先存入24C04芯片的数值;当“清除”按钮按下时,此时此时发光二极管灭,数码管数值清零。
图4图5图6五、实验总结通过本次实验我了解了存储器卡存、取数据的过程,同时了解CI2串行总线的工作原理。
实验在程序编写过程中遇到了问题,还是参考过老师以及网上的程序得到同学的帮助,才大体上完成。
每次实验都有新的收获,以后我会更加努力学习的。
六、实验代码#include <reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define NOP4(){_nop_();_nop_();_nop_();_nop_();} //延时4ussbit SCL = P1^0; //SCL引脚sbit SDA = P1^1; //SDA引脚sbit BUTTON = P1^5; //定义读卡按键sbit LED = P1^6;//定义模拟上电卡座sbit BUTTONQ = P1^7;//定义模拟取卡按键uint shu; //定义写入变量//数码管显示数组uchar code DUAN_XUAN[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8 2,0xf8,0x80,0x90};//延迟函数void Delay(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}void DelayMS(uint x){uchar t;while(x--){for(t=120;t>0;t--);}}/*IIC启动*/void Start(){SDA=1;SCL=1;NOP4();SDA=0;NOP4();S CL=0;}/*IIC停止*/void Stop(){SDA=0;SCL=0;NOP4();SCL=1;NOP4();S DA=1;}/*读取应答*/void RACK(){SDA=1;NOP4();SCL=1;NOP4();SCL=0; }/*发送非应答信号*/void NO_ACK(){SDA=1;SCL=1;NOP4();SCL=0;SDA=0; }/*向24c04中写一字节*/void Write_A_Byte(uchar b){uchar i;for(i=0;i<8;i++){//循环移入8位b<<=1;SDA=CY;_nop_();SCL=1;NOP4() ;SCL=0;}RACK(); //读取应答}/*向24c04中读一字节*/uchar Receive_A_Byte(){uchar i,d;for(i=0;i<8;i++){SCL=1;d<<=1;d|=SDA;SCL=0;}return d;}/*任意地址写数据*/void Write_Random_Address_Byte(uchar add,uchar dat){Start();Write_A_Byte(0xa0);Write_A_Byte(add);Write_A_Byte(dat);Stop();DelayMS(10);}/*当前地址读数据*/uchar Read_Current_Address_Data(){ uchar d;Start();Write_A_Byte(0xa1);d=Receive_A_Byte();NO_ACK();Stop();return d;} /*任意地址读数据*/uchar Random_Read(uchar addr){ Start();Write_A_Byte(0xa0);Write_A_Byte(addr);Stop();returnRead_Current_Address_Data();}//显示函数void display(uint x){uchar bai,shi,ge;bai=x/100; //取百位shi=x%100/10; //取十位ge=x%10; //取个位P0=0xff; //消影Delay(1);P2=0x01;P0=DUAN_XUAN[ge]; //显示个位Delay(10);P0=0xff;P2=0x02;P0=DUAN_XUAN[shi]; //显示十位Delay(10);P0=0xff;P2=0x04;P0=DUAN_XUAN[bai]; //显示百位Delay(10);}//主函数void main(){uint x;x=0;shu=129; //把要写的值赋给变量BUTTON=1;LED=0;Write_Random_Address_Byte(0x00,sh u); //往00地址写入一个值shu = Random_Read(0x00) ; // 读00地址的值while(1){if(BUTTON==0) {//判断读卡按键Delay(40);if(BUTTON==0) { //消抖LED=1; //灯亮x=shu; //把读出的数赋给显示变量}}if(BUTTONQ==0) {//判断清除按键Delay(40);if(BUTTONQ==0){LED=0; //灯灭x=0;//对显示变量的值清零}}display(x); //显示 }}。
读卡器的使用流程示表1. 介绍读卡器是一种用来读取各种类型记忆卡的设备,它可以与电脑或其他设备连接,从而实现读取和写入卡片上的数据。
本文档将详细介绍读卡器的使用流程,并通过示表的形式展示步骤和注意事项。
2. 使用流程示表步骤描述1. 准备工作确保读卡器与电脑或设备正确连接,并确认读卡器正常工作。
2. 插入记忆卡将要读取的记忆卡插入读卡器的卡槽中,并确保插入方向正确。
3. 打开读卡器软件在电脑上打开读卡器的相关软件或应用程序。
4. 选择读取方式根据需求选择读取方式,例如读取整个卡片数据、读取特定文件夹或文件等。
5. 开始读取点击读取按钮或执行读取操作,等待读取过程完成。
6. 检查读取结果确认读取结果是否正常,并检查是否有读取错误或数据损坏。
7. 完成操作根据需要进行后续操作,如保存读取数据、复制到其他设备等。
8. 卸载记忆卡在安全删除硬件或卸载设备前,确保读卡器不再使用,并将记忆卡从读卡器中取出。
9. 关闭软件关闭读卡器软件,并确保读卡器与电脑或设备正确断开连接。
10. 结束使用完成读卡器的使用流程,将读卡器存放在安全的位置,以便下次使用。
3. 注意事项在使用读卡器时,请注意以下事项:•确保读卡器与电脑或设备的连接稳定。
•插入记忆卡时,注意插入方向,避免插反或插斜。
•在打开读卡器软件前,确认读卡器已正常连接并工作。
•选择读取方式时,注意选择正确的选项,避免读取错误的数据。
•在读取过程中,避免突然断电或拔出记忆卡,以免损坏数据。
•检查读取结果时,注意验证数据的完整性和准确性。
•卸载记忆卡前,请确保读卡器不再使用,以免造成数据丢失或损坏。
•关闭软件后,及时断开读卡器与电脑或设备的连接。
•使用完毕后,妥善保管读卡器,避免损坏或丢失。
结论通过本文档,我们详细了解了读卡器的使用流程,并通过示表的形式展示了每个步骤和注意事项。
在使用读卡器时,请按照流程进行操作,并注意事项,以确保数据的安全性和准确性。
ipad借助读卡器读取TF卡数据的使用方法ipad借助读卡器读取TF卡数据的使用方法A,需要提前对ipad越狱,本机已经使用PP助手越狱过了(网络上有越狱教程)。
B,提前安装cydia和iFile软件(网络上有安装教程,ifile可以使用178的免费软件源安装,本机已经安装完毕)。
下文是借助iFile查看TF卡数据的具体操作方法:1,直接将TF卡插入读卡器TF卡槽内,读卡器侧旁的开关拨至“Card”模式,再将读卡器插入Ipad接口上,等待几十秒后,会提示“此Ipad不支持此配件”,不用理会,直接点“好”;若没有出现任何提示,请重启电脑。
重启后,会提示“此电缆或配件尚未经过认证,因此可能无法配合此iPad可靠地工作。
”这个提示不用理会,继续等待提示“此Ipad不支持此配件”,若仍无反应,重新插拔读卡器,继续等待。
大概二三十秒后,会自动弹出一个相册窗口,此时,说明读卡器已经正确连接到Ipad上了,紧接着提示“此ipad不支持此配件”,不用理会,点“好”即可,进而进行后续操作。
2,点击ipad的下方的“home”键,在桌面上找到“iFile”图标,点击,若进入的窗口是一系列的文件夹目录,如“Appications”“bin”“boot”……等类似英文目录,点击屏幕左上角的“侧边栏”(也可能打开iFile直接进入的是“侧边栏”),屏幕左侧弹出一个窗口,上边有1个“磁盘”和2个“闪存盘”,这2个“闪存盘”就是TF卡,点击任意一个“闪存盘”,即可查看TF卡内的文件,几乎常见的格式都支持,若ipad上安装了视频播放器、音乐播放器、文本工具等应用,支持打开的文件格式会多一些。
例如,要打开一个mp4视频文件,点击mp4文件,在弹出的选项中,第一个选项是“视频播放器”,这个播放器是ipad自身的播放器,下面的其余选项是自己安装的一些应用,本机安装的视频播放器是“AcePlayer”,这个也可以播放视频。
音频文件使用方法类似,wav、mp3、m4a格式均可播放。
第1章SD/MMC卡读卡器实验步骤
(1)从光盘上把整个μC/OS-II模版工程拷贝一份到某个目录下,这里假设为D盘根目录,并把目录名称改改名为SD,工程文件改为SD.uv2,如图1.1所示。
图1.1 SD工程
(2)从《μC/OS-II嵌入式实时操作系统》一书的配套光盘中,把μC/OS-II 2.52版本的所有.C和.H的源码文件,拷贝到D:\SD\uCOS-II\Source目录下,如图1.2所示。
图1.2 拷贝μC/OS-II源码
(3)把D:\SD\User目录下的OS_CFG_V252.H文件的全部内容拷贝到此目录下的os_cfg.h中。
(4)把ZLG/SD软件包SDMMC文件夹拷贝到D:\SD目录下,如图1.3所示。
图1.3 拷贝ZLG/SD软件包
(5)双击SD.uv2工程文件,进入Keil集成开发环境。
进入后,给uC/OS-II Source工程目录加入先前所拷贝的在D:\SD\uCOS-II\Source目录下,除uCOS_II.C的所有.C和.H的文件,如图1.4所示。
图1.4 给工程加入μC/OS-II源码和ZLG/SD软件包
(6)给uC/OS-II Source工程目录添加SDMMC目录,并在该目录下加入先前所拷贝的在D:\SD\SDMMC目录下所有ZLG/SD软件包文件,如图1.4所示。
(7)将 os_cfg.h 中的OS_SEM_EN和OS_MBOX_EN改为1(允许信号量和消息邮箱),OS_MAX_EVENTS改为5(定义最大可用5个信号量),OS_TASK_STAT_EN改为1。
如程序清单1.1所示。
程序清单1.1 修改os_cfg.h
#define
OS_MAX_EVENTS 5
……
#define OS_TASK_STAT_EN 1
……
#define OS_MBOX_EN 1
……
#define OS_SEM_EN 1
(8)创建任务。
首先打开User目录下的Main.H文件,加入如程序清单1.2所示的宏定义,Task_CARD任务的优先级为1,堆栈大小都为64。
程序清单1.2 SD工程任务宏定义
TASK_CARD_PRIO 1
#define
TASK_CARD_STK_SIZE 64
#define
(9)由于程序采用了串口接收中断,所以需要在Startup.S文件的向量表中,先声明Timer0A_ISR()中断服务函数(程序清单1.3(1)),然后在向量表的Timer0A位置加入向量地址(程序清单1.3(2))。
程序清单1.3 串口中断函数的向量
EXTERN uart0_ISR ; 声明函数(1)
__Vectors
……
DCD uart0_ISR ; UART0 ; 串口0的中断向量(2)……
(10)将SD卡实验例程中的User目录下的sd_SPI.h文件拷贝到本工程的User目录下,在工程的User目录下添加sd_SPI.h文件。
可以在sd_SPI.h中改变SPI的工作频率。
(11)在includes.h头文件中添加头文件“#include <ssi.h>”和SD/MMC 模块头文件“#include <sdconfig.h>”、“#include <sddriver.h>”和“#include <sd_SPI.h>”。
如图 1.5所示。
图 1.5 添加头文件
注意:SD/MMC 模块头文件“#include <sdconfig.h>”、“#include <sddriver.h>”要在移植头文件的后面。
如图 1.5所示。
(12)根据实验原理的协议分析,在main.c文件中编写通过串口读、写和擦除SD/MMC 卡的相关函数。
这里可以将实验例程的main.c的内容复制并替换掉工程中的main.c。
(13)点击工具栏中的按钮,打开【Options for Target ‘Target 1’】对话框,点击【C/C++】选项,添加.\Middleware;.\Target;.\uCOS-II\Ports;.\uCOS-II\Source;.\User;.\SDMMC。
如图 1.6所示。
图 1.6 头文件包含路径
(14)将EasyARM8962开发平台上JP2_15~ 21(PE2、PG0、PA4、PA2、PG1、PA5、PA3)中连接SD卡卡座的插针短接。
(15)编译链接工程,在编译通过后将SD/MMC卡插入卡座中。
(16)连接EasyARM8962开发板和ULink2仿真器进行仿真调试,并全速运行程序。
(17)将产品配套光盘中提供的PC机可执行软件SDMMC_Reader.exe复制到硬盘,并运行该软件。
(18)在图1.7中,选择串口号及通信波特率,然后单击“连接目标板”按钮,“执行结果”框中将显示该软件是否能够与目标板成功通信。
图1.7 连接目标板
(19)若打开串口成功,单击“初始化SD/MMC卡”按钮,是否初始化成功将在“执行结果”中显示出来。
如果初始化失败,在“执行结果”将显示出错误代码,显示错误码的含义见错误!未找到引用源。
所列,给出错误码的目的是方便用户调试程序。
(20)SD/MMC卡初始化成功后,在“读写擦”框中填写要读的块地址,然后,单击“读”按钮,读得的块内容在“数据显示”框中显示出来,“执行结果”框中将显示执行结果,如果执行结果有错,将给出错误码。
(21)若想要写某块,则需单击“数据显示”框中的“块数据”区,从键盘输入要写入的数据,然后单击“写”按钮,软件就会将“块数据”框中的512字节写入到SD/MMC卡中,“执行结果”框将显示执行结果。
如图1.8所示。
图1.8 写SD/MMC卡
(22)若想要擦SD/MMC卡,单击“擦除”按钮,将弹出如图1.9所示的擦除对话框,
填写好起始地址和要擦除的块数,然后单击“擦除”按钮。
擦除操作执行结果将在图1.8所示的“执行结果”中显示出来。
擦除限制5000块的目的是防止擦除时间太长导致串行通信超时,并不是说SD/MMC卡一次擦除操作只能擦除5000块。
图1.9 擦除操作对话框
图1.9还提示用户擦除卡的“卡的起始地址”和“块数量”,建议为sds.erase_uint(见ZLG/SD软件包)的整数倍。
这是因为有一些卡擦卡的单位为sds.erase_uint块,也就是说,即使命令卡只擦除“起始块地址”这一块,但SD/MMC卡将擦除“起始块地址”开始的sds.erase_uint块。