历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2020年10月14日 | 单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序

2020-10-14 来源:51hei

软件SPI和硬件SPI读写SD卡,TF卡测试程序
SD卡模块和SD卡



软件SPI读写SD卡程序
测试平台:STC89C516和STC12C5A60S2
内存卡大小:128MB和2GB
晶振:均为12MHz

硬件SPI读写SD卡程序
测试平台:STC12C5A60S2
内存卡大小:128MB和2GB
晶振:12MHz
(89C52没有硬件SPI)


为了尽可能的不给后来者留坑,这些代码我在发出来之前反复测试过,确保无误,
还有就是关于SD卡程序的读写我在程序中写的很清楚,这里不再赘述

单片机源程序如下:

  1. #include "public.h"

  2. #include "SD.h"


  3. //测试平台:STC89C516和STC12C5A60S2

  4. //内存卡大小:128MB和2GB

  5. //晶振:均为12MHz


  6. void main()

  7. {

  8.         unsigned int i;


  9.         SD_init();//SD卡初始化

  10.        

  11.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;

  12.         MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  13.        

  14.         MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  15.         P0=BUFFER_DATA[0];

  16.        

  17.         while(1);

  18. }


  19. /*

  20.         unsigned int i;

  21.        

  22.         SD_init();//SD卡初始化

  23.        

  24.         {

  25.                 在使用SD卡模块前,先初始化SD卡

  26.         }

  27.        

  28.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;

  29.         MCU_write_SD_512Byte(960,512);//MCU向SD卡写入数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  30.        

  31.         {

  32.                 将数据写入到SD卡:

  33.                 先将数据写入到数据缓冲数组BUFFER_DATA中(这里的数据我全部都写0x7F),

  34.                 然后运行MCU_write_SD_512Byte(960,512);

  35.                 960为SD卡的扇区,表示将数据写入到SD卡的960扇区,512为一次性写入的数据大小,为512字节,建议填512字节,

  36.                 因为1个扇区的大小为512字节

  37.         }

  38.        

  39.         MCU_read_SD_512Byte(960,512);//MCU向SD卡读取数据,一次最多512字节(扇区,数据长度(最大为512,建议填512))

  40.         P0=BUFFER_DATA[0];

  41.        

  42.         {

  43.                 从SD卡读取数据:

  44.                 先运行MCU_read_SD_512Byte(960,512);

  45.                 这里的960为你要读的SD扇区,512位一次性读取的数据大小,为512字节,建议填512字节,因为1个扇区的大小为512字节

  46.                 完成后数据存放在数据缓冲数组BUFFER_DATA中

  47.                

  48.                 因为没有现象的话不好判断SD卡读写是否成功,所以把P0BUFFER_DATA[0]赋给P0,P0接LED灯,就可以看见现象了

  49.         }


  50.         {

  51.                 注意:将程序下载到开发板后可能会出现P0口显示的数据和SD卡写入数据不一致的情况

  52.                 这时,

  53.                         要将开发板和SD卡模块断电

  54.                         要将开发板和SD卡模块断电

  55.                         要将开发板和SD卡模块断电

  56.                         不是复位

  57.                         不是复位

  58.                         不是复位

  59.                 将开发板断电后再上电,就可以看见现象了

  60.                 如果还不成功,

  61.                         检查连线是否正确

  62.                         检查连线是否正确

  63.                         检查连线是否正确

  64.                 或尝试插拔SD卡

  65.                

  66.                 SD卡读写成功后,可以修改扇区和SD的写入数据多实验几次,确保万无一失

  67.         }

  68. */

推荐阅读

史海拾趣

General Instrument公司的发展小趣事
线路中存在异常干扰信号,使保护器接收到错误的电压信号。
CYAN公司的发展小趣事

随着5G技术的兴起,CYAN敏锐地捕捉到了市场的变化。公司投入大量研发资源,成功开发出一款基于5G技术的高性能网络路由器。这款路由器不仅具有超高的数据传输速度和稳定性,还具备智能管理和安全保护功能,满足了市场对高性能网络设备的需求。

Alpha-Micro Electronics公司的发展小趣事

1996年,瑞典的工程师Jan Nilsson在电子行业中创立了CYAN公司,专注于高性能网络设备的研发。在初创阶段,CYAN就凭借其独特的技术理念和创新的产品设计,赢得了市场的初步认可。公司推出了一款具有高效能和高可靠性的网络交换机,解决了当时网络传输中的瓶颈问题,从而在市场中崭露头角。

Compex Corporation公司的发展小趣事

在电子行业的发展过程中,Compex Corporation也积极寻求与其他企业的合作与收购机会。XXXX年,公司成功收购了一家在电子元件领域具有丰富经验的企业,通过这次收购,公司获得了更多的技术资源和市场份额。此外,公司还与其他企业建立了战略合作关系,共同开发新产品和技术,实现了资源的有效整合。

海芯科技(AVIA)公司的发展小趣事

海芯科技自创立以来,一直秉持着创新和技术的核心理念。在公司的初期阶段,创始人凭借其丰富的行业经验和敏锐的市场洞察力,成功吸引了一批技术精湛、充满激情的团队成员。这些成员在各自的领域里都有深厚的背景和出色的能力,他们共同构成了海芯科技的核心研发团队。在公司的发展初期,这支团队便通过不断地技术创新和研发,为公司后续的发展奠定了坚实的基础。

Dawn Electronics Inc公司的发展小趣事

Dawn Electronics Inc公司成立于上世纪末,当时电子市场竞争激烈,新公司难以立足。公司创始人凭借对技术的热爱和对市场的敏锐洞察,决定专注于研发高性能的定制电子元件。初创期,公司面临着资金紧张、人才短缺的困境,但创始人带领团队日夜兼程,攻克技术难题,终于在市场上推出了具有竞争力的产品,赢得了客户的认可。

问答坊 | AI 解惑

请各位高手指教,下面的电路能不能成立,不能成立的原因是什么?

[img] 电路是我自己画的,个人分析如下,有不对的地方希望大家指正:谢谢~ 1》通电,12V经R1到Q1的C极,经R2加至Q1的B极,Q1饱和导通,C极等于0 此时Q2,Q3,Q4的B极全部为0 Q2为PNP管,此时是导通状态,但对电路没影响 2》 ...…

查看全部问答>

PC(windowsXP)录音,如何在ARM9板子上播放?

我在PC机下进行录音,然后通过TCP/IP传送到ARM9板子(WinCE6.0操作系统,UDA1380音频编解码芯片)上进行播放,但是播放不了。用的都是wave系列操作函数。 我录音和放音的设置都是:         waveform.wFormatTag=W ...…

查看全部问答>

怎样显示CELLTSP.dll里面的调试信息?

我现在调试RIL驱动,ril proxy的调试信息可以通过修改注册表打印出来。 但CELLTSP不知怎样显示出来,因为CELLTSP没有源代码的,如果不用DEBUG模式,怎样才能显示CELLTSP的调试信息? …

查看全部问答>

语音芯片ISD4002如何分段,如何确定每一段开始的地址

语音芯片ISD4002如何分段,如何确定每一段开始的地址…

查看全部问答>

str71x的定时器中断服务例子

                                  …

查看全部问答>

我的基于TI M3的两个小项目的进展

最近在学校的实验室弄的两个基于TI M3东西,一个是LC测量器,一个是数控恒流源,控制部分先用从eeworld 申请到得8962评估板来完成。完成进度:LC 测量器的硬件电路制作、调试都OK了,正在编写程序。     这个LC测量器 本应该把微控器 ...…

查看全部问答>

MSP-EXP430FR5739 应用(2)

     考虑到FR5739的铁电存储功能和3 轴加速计模块,可以做一个可以断电保存的记步器,通过对加速度计的数据做一定的计算和处理可以做一款计步器,在现有模块的基础上需要增加一块LCD,做简单的显示,同时由于可以掉电保存,还可以 ...…

查看全部问答>

Verilog 代码,问题出在哪,小白求助,在线等

本帖最后由 zhaironghui 于 2015-10-22 11:26 编辑 大家好,接触 Verilog 时间不长,遇到一个问题,真心求教。谢谢 背景:想把 AD 输出的 8 位并行数据在 CPLD 中进行并串转换,并在 DSP 提供的 串行时钟 CLKR1 和 帧同步(片选)信号 FSR1 的 ...…

查看全部问答>

电源共地问题

我现在有一路5V的电源,一方面要给DSP开发板这样的数字信号供电,在开发板上通过磁珠得到VCCA和GNDA供给AD模块。然后这个5V电源一方面要给检测板这样的模拟信号供电,检测板和开发板的AGND通过外接线单点共地,这样的方案会造成所谓的模拟地和数字 ...…

查看全部问答>

我国传感器产业亟待摆脱进口依赖,中小型国产企业又该如何崛起呢?

       2015年全球市场约1770亿美元(不含系统,只是各类敏感元件与传感器),预计在未来5年内,全球所有的传感器领域的复合年增长率都将超过15%,仍然是高增长行业。2015年,我国传感器销售额突破1300亿元。然而,在国内市场 ...…

查看全部问答>