0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于C8051F020的SD卡主控制器设计,SD card controller

454398 2018-09-20 19:49 次阅读

基于C8051F020的SD卡主控制器设计,SD card controller

关键字:基于C8051F020的SD卡主控制器设计

1 引言
飞机飞行状况监测及数据采集仪.用于采集飞机试飞时的各种飞行数据,要求大量的存储容量。在飞机回到地面后,需要方便地将采集数据传输到通用计算机上,以便作进一步的数据处理和分析。为了把采集的数据从采集系统传输到通用计算机内.在过去,是将数据存储部分设计为可分离的一个存储板,数据存储板上设计有CPU和串口。将数据存储板从数据采集系统上取下来,通过串口与通用计算机通信,将数据传输到通用计算机内。可以看出。这种方法有几个缺点:第一,操作麻烦,每次都要将存储板从采集系统取下来,然后再装上;第二,经常插拔存储板降低整个采集系统的可靠性:第三,读取数据的通用计算机需要安装专用程序。此程序是专门开发用于通用计算机与数据存储板之间的串口通信程序,增加了使用复杂性。SD/MMC卡是一种容量大(最大可达4GB)、性价比高、体积小、访问接口简单的存储卡,而且通过USB读卡器,可以很方便地将卡中文件拷贝到通用计算机中。目前,SD卡已大量用于数码相机、MP3、手机与大容量存储设备中。在本次飞行状况监测及数据采集仪的设计中,采集数据的存储采用了SD卡。

2 硬件功能原理与设计
SD卡的外形和接口如图1所示。根据SD卡与主控制器的通信协议不同,SD卡对外提供两种访问模式:SD模式和SPI模式。所用通信模式不同,SD卡引脚的功能也不同,具体引脚功能如表1所示。在具体通信过程中,主机只能选择其中一种通信模式。通信模式的选择对于主控制器来说是透明的,卡会自动检测复位命令的通信协议模式,而且通信模式一旦选定,系统在通电情况下不能改变。SD模式下,主控制器使用SD总线访问SD卡。可通常的单片机没有硬件SD总线,尽管可以借助通用口线用软件仿真,但访问速度较低,还要大量占用CPU时间,而单片机多具有SPI总线,本文就利用SPI总线实现对SD卡的访问。下面主要介绍SPI总线方式。
 
 
注:S--电源;I--输入;O--推挽输出;PP--推挽I/O。
在SPI总线模式下.CS为主控制器向卡发送的片选信号,SCLK为主控制器向卡发送的时钟信号。DI(DataIn)为主控制器向卡发送的单向数据信号,DO(DataOut)为卡向主控制器发送的单向数据信号。SD卡的内部结构如图2所示,SD卡内部除了具有大量存储单元外。还具有卡接口控制器、寄存器以及SD和SPI两种模式的对外接口等。外部主控制器访问卡的外部信号线并不与存储器单元直接相连,而是通过卡的接口控制器与存储器单元接口相连。这样主控制器并不直接访问存储器,而是通过卡的接口控制器来访问存储器。卡内存储单元的读,擦,写由卡接口控制器根据主控制器的命令自动处理完成,而主控制器无须知道卡内是如何操作、管理存储单元的,这将大大减轻主控制器对存储器操作的负担。SD卡内部有6个信息寄存器,用来设置和保存操作卡的关键信息,有两个状态寄存器,用来记录操作卡的当前状态。
 
采集仪的主控制器采用了C8051F020单片机。C8051F系列单片机与8051在指令上完全兼容,性能远远高于标准的8051单片机,片内除了具有8052的全部外设外.又扩展了丰富的外设,是一种名副其实的SOC (System On Chip)单片机。C8051F020能够满足数据采集功能外,还能很容易地实现SD卡的访问。与SD卡系统相关的特性如下:

  • 单片机内部采用流水线结构。指令运行速度高.指令运行速度比一般的80C51系列单片机提高了大约10倍. 可达25MIPS指令运行速度,满足高速操作SD卡的功能要求。
  • 具有SPI 硬件接口。可与SD卡的SPI 总线很好接口。
  • 具有8个8位I/O端口。除满足数据采集需要外。有足够的口线用于单片机与SD卡的连接。而且.这些口线可通过软件进行配置,获得不同的功能,其中SPI 接口,就是通过配置相关寄存器而获得的。
  • 具有可扩展的中断系统。支持22个中断源.2个优先级,其中就包括SPI接口产生的中断。
  • 片内存储器包括64KB的Flash、和4KB的XRAM。不需要扩展存储器.就可以满足文件系统的建立和访问SD 卡的需要。
  • 3.3V的工作电压,与SD卡工作电压兼容。
  • 时钟系统更加完善.可以使用内部时钟.也可以使用外部时钟。通过编程可以切换。
  • 可实现通过JTAG接口的在系统调试。方便系统的开发。

C8051F系列单片机的SPI串行接口的主要特点如下:全双工,三线同步传输,即在发送的同时也能接受;可以工作在主机方式或从机方式;主机最大数据传输速率(位/秒)是系统时钟频率的1/2.因而最高可达10Mb/s;SPI位传输速率可通过编程选择;发送结束设置中断标志.发送期间不占用CPU时间;串行时钟极性与相位可编程改变;具有写冲突保护和总线竞争保护。
对于C8051F020的SPI系统.首先通过设置I/O端口功能选择开关控制寄存器XBR0、XBR1、XBR2.将I/O端口P0.0、P0.1、P0.2、P0.3配置成SPI功能引脚SCK、MISO、MOSI和NSS。此时I/0端口P0.0、P0.1、P0.2、P0.3就组合成SPI接口了。而设置和控制SPI接口性能的特殊功能寄存器有SPI0CFG、SPI0CKR、SPI0CN、SPI0DAT。SPI0CFG是SPI的配置寄存器,用于配置SPI的工作方式。并反映通信过程中的数据发送状态。SPI0CN是SPI控制寄存器.用于控制SPI的工作.并反映通信过程中的一些错误标志。SPI0CKR是SPI的时钟速率寄存器.用于选择SCK输出的频率。SPI0DAT是SPI的数据寄存器,用于发送和接受SPI数据。
主控制器C8051F020与SD卡座的电路连接图如图3所示。除了SPI接口的连接外,还有三根控制线,P0.4_SD_INSERT就是I/O端口P0.4,用于检测SD卡在卡座上是否插好。完全插入时该引脚为低电平,否则为高电平。P0.5_SD_WP就是I/O端口P0.5,用于检测SD卡当前是否设置写保护.写保护时该引脚为高电平,否则为低电平。P0.6_SD_POWER就是I/O端口P0.6,用于SD卡的供电控制,该引脚输出低电平时。给卡供电。否则断电。这是为了在SD卡进入不确定状态时,可以通过对卡重新上电复位而无需拔出卡。
 

3 软件设计
软件设计思想是,为了程序的可移植性和易用性。将程序分为三个层次。第一个层次是硬件抽象层。第二层是实现访问SD卡的命令层,第三层是应用层,提供给用户或文件系统的接口函数。
硬件抽象层包括访问SD卡的硬件环境配置、SPI接口实现通讯的基本函数以及SPI中断的处理。硬件环境配置包括硬件初始化、以及内存变量初始化等。如将C8051F020的I/O端口配置为SPI接口的相关设置、C8051F020的SPI接口性能的设置、SD卡的上电与断开、SD卡插入是否到位检测、SD卡内部寄存器特定参数设置等等。又如C8051F020的SPI接口性能的设置,包括主/从工作方式设置、SPI通讯频率设置等等,这些内容都与硬件有关。SPI接口实现通讯的基本函数,包括主控制器向SD卡发送一字节和从SD卡读取一字节的基本函数,这是所有SPI通讯的基础。SPI中断处理是SPI接口产生中断时.中断服务程序被自动调用,在中断服务程序中,读取SPI控制寄存器。这里存放着产生中断的各种状态标志,根据不同的状态标志,调用不同的函数处理。
命令层,就是调用硬件抽象层的基本发送接收字节函数,实现SD卡所有SPI协议规定的命令.完成对SD卡的访问。根据SD卡协议,访问SD卡的不同功能,由不同的命令实现。这些命令分成0—9个不同的类别.每种类别包括几个具体的命令,对于SPI协议,每个命令都由主机主动发送。高位在前低位在后,SD卡收到命令后.根据不同的命令做出不同的响应。主机发送的命令长度总是6个字节.命令的格式如表2所示。Command表示命令号,占用6位,Parameter表示命令参数,长度为4字节,不同的命令对应不同的命令参数值。SD卡的响应有4种格式,分别为R1、R1B、R2和R3格式。主机发送命令并读取响应形成一个完整的命令实现过程。

表2 SPI模式命令格式
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    SD/MMC与TMS320F28xxx DSC的接口

    电子发烧友网站提供《SD/MMC与TMS320F28xxx DSC的接口.pdf》资料免费下载
    发表于 10-15 09:44 0次下载
    <b class='flag-5'>SD</b>/MMC<b class='flag-5'>卡</b>与TMS320<b class='flag-5'>F</b>28xxx DSC的接口

    树莓派4b支持多大的sd

    派4B支持的SD类型 树莓派4B支持的SD类型主要有以下几种: 1.1 SD(Secure
    的头像 发表于 08-30 17:02 1164次阅读

    如何选择高品质SD存储

    SD(Secure Digital Memory Card)是一种广泛使用的存储器件,因其快速的数据传输速度、可热插拔的特性以及较大的存储容量,广泛应用于各种场景,例如在便携式设备如智能手机、平板
    的头像 发表于 08-22 16:12 421次阅读
    如何选择高品质<b class='flag-5'>SD</b>存储<b class='flag-5'>卡</b>

    贴片式SD功能介绍【MK SD NAND】

    SDNAND,通常称为嵌入式SD、贴片式TFSD Flash、直接贴装SD、贴装
    的头像 发表于 07-05 17:03 781次阅读
    贴片式<b class='flag-5'>SD</b><b class='flag-5'>卡</b>功能介绍【MK <b class='flag-5'>SD</b> NAND】

    SD、MicroSDSD NAND的性能与应用对比

    在当前丰富多元的存储解决方案领域,SD、MicroSD以及SD NAND凭借其各自的独特优势和特定的使用情景,赢得了市场的广泛认可。每种存储技术都展现了其独到之处,为用户带来了多样
    的头像 发表于 06-14 15:48 869次阅读
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>、MicroSD<b class='flag-5'>卡</b>和<b class='flag-5'>SD</b> NAND的性能与应用对比

    实现ESP32-WROVER-IE写入数据到SD中时无法初始化sd怎么解决?

    ;, esp_err_to_name(ret));}return; } else {sdmmc_card_print_info(stdout, card);_sd_pick_next_file();
    发表于 06-13 06:56

    SD与Flash存储究竟存在哪些差异?

    SD 是基于闪存技术的一种可移动存储,由 SD 协会进行开发并标准化,在数码相机、智能手机、平板电脑等设备中广泛采用。SD
    的头像 发表于 06-05 15:54 1712次阅读
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>与Flash存储究竟存在哪些差异?

    SD连接是什么

    SD连接是数字设备中用于连接SD的一种硬件接口。随着数字设备的普及,SD
    的头像 发表于 03-04 10:48 6958次阅读

    sd中文资料

    电子发烧友网站提供《sd中文资料.pdf》资料免费下载
    发表于 03-04 09:54 3次下载

    sd是什么有什么用途 TFSD有什么区别

    SD(Secure Digital Card)是一种便携式存储设备,一般用于存储照片、视频、音频和其他文件。SD是由
    的头像 发表于 01-31 13:53 5243次阅读

    sd是什么有什么用途 TFSD有什么区别

    和用途 SD,全称Secure Digital Card,是一种以闪存为介质的可插拔式存储。它是由SanDisk、Panasonic和Toshiba联合研发的,于1999年首次发布
    的头像 发表于 01-25 10:44 5091次阅读

    SD的分类以及常见属性

    SD(secure digital card)是SD协会开发的低成本,非易失性存储格式(相
    的头像 发表于 01-18 10:17 6094次阅读
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>的分类以及常见属性

    TFSD的区别有哪些?

    TFSD卡在物理尺寸和一些应用领域上存在差异,但在技术规格上,特别是MicroSD,它们之间的差异相对较小。选择TF还是SD卡通常取
    的头像 发表于 01-18 09:17 1w次阅读
    TF<b class='flag-5'>卡</b>和<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的区别有哪些?

    MicroSD如何转接成SD

    SD套主要用于将TF(MicroSD)转接成SD的形状,以实现TF卡在
    的头像 发表于 01-11 14:00 1459次阅读
    MicroSD<b class='flag-5'>卡</b>如何转接成<b class='flag-5'>SD</b><b class='flag-5'>卡</b>?

    什么是SD NAND存储芯片? SD NAND与TF的区别

    什么是SD NAND?它俗称贴片式T,贴片式TF,贴片式SD,贴片式内存,贴片式闪存
    的头像 发表于 01-06 14:35 1789次阅读
    什么是<b class='flag-5'>SD</b> NAND存储芯片? <b class='flag-5'>SD</b> NAND与TF<b class='flag-5'>卡</b>的区别