HCS12X单片机的SD卡FAT文件系统读写设计[3]

终端与业务 责任编辑:kaixiu 2010-11-19

摘要:3.2HCSl2XSPl模块初始化MC9S12XSl28MAA单片机包含2个串行外设接口SPI,可以很方便地实现对MicroSD卡接口的数据传输。为了配置时钟和数据长度,需要对SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI数据寄存器SPIDR进行设置:使能SPI模块,将SPICRl中的MSTR位置1使单片机工作在主机模式,产生串行时钟来同步主从

  3.2 HCSl2XSPl模块初始化

  MC9S12XSl28MAA单片机包含2个串行外设接口SPI,可以很方便地实现对Micro SD卡接口的数据传输。为了配置时钟和数据长度,需要对SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI数据寄存器SPIDR进行设置:使能SPI模块,将SPICRl中的MSTR位置1使单片机工作在主机模式,产生串行时钟来同步主从双方的移位寄存器,配置SPI时钟极性位与SPI时钟相位控制位,使能从机输出选择;初始化SPI波特率寄存器。

  3.3 SD卡初始化

  SD卡初始数据传输需工作在低于400 kb/s的频率,因此配置SPI波特率寄存器,以工作在低速模式下。片选信号后应延时至少74个时钟周期。SD卡默认缺省使用SD总线传输协议,主机需要发出命令CMDO(CMD_GO_IDLE_STATE)才能使SD卡工作在SPI传输模式下,当单片机返回0x 01时说明已经进入了IDLE状态。此时应循环发送CMD55+ACMD41以确认是否为SD卡,如果回应超时则发送CMDl(CMD_SEND_OP_COND)以确认是否为MMC卡。经实验发现,Kingston公司的Micro SD卡使用CMD55+ACMD41或者CMDl都可以进行激活。激活SD卡的SPI模式后SD卡进入准备状态,此时发送CMDl6(CMD_SET_BLOCKLEN)设置SD卡的读写块大小,然后重新配置SPI波特率寄存器SPIBR使单片机SPI工作在高速频率下,延时8个时钟周期后返回,完成SD卡初始化。图2为SD卡SPI高速模式初始化流程。

  3.4读写单块数据

  SD卡单块数据的读取是先通过单片机发送CMDl7(CMD_READ_SINGLE_BLOCK)命令,以SD卡指定数据块起始位地址作为参数,如果读取成功SD卡会返回1个R1命令作为响应。然后发送1个起始数据命令,接着发送单块字节数量的数据并接收SPI数据寄存器SPIDR中的数据,最后是2字节CRC校验。

  SD卡单块数据的写入与读取相似,通过单片机发送CMD24(CMD_WRITE_SINGLE_BLOCK)命令,以SD卡指定数据块起始位地址作为参数,如果读取成功SD卡会返回1个R1命令作为响应。然后发送1个起始数据命令,接着发送单块字节数量的需写入数据,最后是2字节CRC校验。

[1]  [2]  [3]  [4]  [5]  [6]  

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

通信工程师备考资料免费领取

去领取

距离2025 通信工程师考试

还有
  • 1
  • 1
  • 9
专注在线职业教育24年

项目管理

信息系统项目管理师

厂商认证

信息系统项目管理师

信息系统项目管理师

!
咨询在线老师!