采用SD卡存储配置数据的配置方案

来源:元器件交易网 作者:—— 时间:2012-02-08 13:52

  根据上表,可以将微控制器的通用IO管脚与上述FPGA 管脚连接起来,连接电路图如图1 所示:

  2.3.2 Slave SelectMap 模式的配置流程

  Slave SelectMap 模式下提供时钟的是外部器件,本方案中的时钟信号是CCLK 使用ARM 芯片的通用IO进行模拟。同时,该模式下数据管脚有8 个,因此在每个CCLK 的上 升沿,FPGA 可以读入1 个字节的数据。需要注意的是这1 字节的最高位是D0,而不是一 般微处理器默认的D7,在电路板布线和编写配置程序时应给予相应改变。

  配置过程的具体流程如图2 所示。

  接收完配置数据后,DONE管脚会被拉高。但这并不是表示配置过程已经结束,系统仍需要时钟来进行后续的上电启动工作。为保证上电配置过程的正确进行,最好的办法是将配 置文件中的所有数据写入FPGA 中之后,然后继续输出CCLK信号,直到DONE 管脚被拉高之后,再输出8 个周期的CCLK,保证配置能正常完成。

  根据上述流程,配置程序的主要函数的伪码如下。

  1.初始化函数SelectMAP_Init,在其它函数之前运行。

  SelectMAP_Init(){

  将ARM 通用IO设置为对应的SelectMap 管脚信号;

  设置PROGRAM#,CS#和WRITE#管脚为低电平;

  延时至少300ns;

  设置PROGRAM#为高电平;

  循环检查INIT#是否变为高电平;

  }

  2.发送数据的函数SendData_Byte,发送1 字节的数据。

  SendData(uint8 data){

  拉低CCLK;

  将D0~D7电平设置为与data 对应的状态;

  拉高CCLK;

  }

  3.发送数据的函数SendData_Sector,发送SD卡中1 个扇区的数据。

  void SendData_Sector(uint8 * data){

  声明计数器,并将初始值设为0;

  调用SendData_Byte 发送1 个字节的数据,计数器加1;

  检查BUSY 管脚的状态,等待其变为低电平;

  检查计数器是否到达规定的数据块大小,达到时函数返回,未到达时继续发送数据;

  }

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子