您当前的位置:五五电子网电子知识单元电路接口电路把CompactFlash卡连接到微控制器的I2C接口 正文
把CompactFlash卡连接到微控制器的I2C接口

把CompactFlash卡连接到微控制器的I2C接口

点击数:7232 次   录入时间:03-04 12:02:40   整理:http://www.55dianzi.com   接口电路

把来自大量受监视通道的数据记录下来,这通常需要大量内存来保存测量的数据。遗憾的是,较小的微控制器只提供数量有限的内部数据RAM和E2PROM,并且可能还缺乏用于添加外部存储器的空闲地址和数据端口。许多低端微控制器都包含行业标准的I2C接口,用于连接外部ADC、DAC、实时时钟和其它外设。

  图1中的电路通过IC1(一个16 比特I2C I/O扩展器)把 ComPACtFlash 卡连接到微控制器的I2C接口。在存储器映像模式中,一条8比特数据总线控制着CompactFlash卡。微控制器IC1的1号端口(I/OO~I/O7)连接到CompactFlash卡的数据总线,并提供对卡的数据寄存器的读写访问。2号端口(I/O8~I/O15)提供卡的地址和控制寄存器,并生成读写信号。


  如需向寄存器写入,则应把1号端口配置成输出端,并向该端口写入数据。接下来,连续三次向2号端口写入寄存器控制数据,同时把该端口的WRN引脚从逻辑1切换到逻辑0再到逻辑1,生成“写”信号。地址位A2、A1、A0选择接收被写数据的寄存器。把逻辑0施加到CE引脚,同时RDN停留在逻辑

1,就能起用CompactFlash卡。如需读取寄存器,则应把1号端口配置成输入端口,并向2号端口施加三次写入,同时把该端口的RDN引脚从逻辑1切换到逻辑0再到逻辑1,生成“读”信号。

  在三次写入之后,微控制器读取1号端口,并使数据可供使用。地址位A2、A1、A0处理8个内部寄存器,并允许读写访问(表1)。寄存器 0x00 包含主机和 CompactFlash 卡之间交换的数据。寄存器0x03、0x04、0x05、0x06规定数据读写磁道。每条磁道包含512个数据字节。处理器向命令寄存器0x07写入,由此指示读写磁道和其它功能,而寄存器0x01和0x07则包含误差条件和状态信息。


  2号端口上的两根未使用的I/O 10和I/O 11可用于驱动显示电路活动和状态的LED。另外,这些引脚还能支持由用户安装的配置跳线器。在这种配置中,IC1的中断输出应连到主机微控制器的中断输入,这样,跳线器的安装或拆除就能向微控制器发信号,以便识别或忽略Compact-Flash卡。若选用一种配备热插拔接触件的CompactFlash卡连接器,就能在不关断电源或不干扰数据记录进程的前提下插卡或拔卡。

  借助软件的改进,主机微控制器就能在两块CompactFlash卡之间切换。若添加第二块MAX7311,就能支持一块额外的 CompactFlash卡并扩充电路的存储容量,并且热插拔特性支持处于满负荷状态的卡的拆除,以便进行另一个系统上的数据处理。包含基于硬件的I2C接口的微控制器能利用两种较简单的I2C软件函数通过IC1的I/O端口来读写CompactFlash 卡。

  第一个函数是:Write_MAX3711(slv,prt,dat)。该程序启动I2C总线,并利用从设备地址(slv)向MAX7311上的某个端口(prt)发送一个数据字节(dat)。另一个程序Read_MAX3711(slv,prt)则启动I2C 总线,并从MAX7311上某个位于从设备地址的端口读一个数据字节。这些函数充当了两个额外函数的基础,后者对CompactFlash卡的寄存器执行读写。第一个函数 Write_CF_REG(reg,dat)利用 Write_MAX3711来把数据放到1号端口。可利用同一程序把寄存器地址 (reg)和其它控制信号放到2号端口。在切换WRN的同时,把该函数执行三次,就能生成写信号。Read_CF_REG(reg)程序利用 Write_MAX7311来设定 CompactFlash 卡寄存器的地址,并生成读信号。然后调用Read_MAX7311,从寄存器读数据。

  这些函数依次读写卡的寄存器,创建了对CompactFlash 卡的扇区进行访问的函数:Write_CF(cyl,head,sec)。如需执行写操作,该程序利用Write_CF_REG来指定 CompactFlash卡的目标柱面、磁头和扇区寄存器(0x03~0x06)。然后,把0x30写到命令寄存器中,这会把 CompactFlash卡配置用来接受数据。把Write_CF_REG执行512次,这会把微控制器的全局数组中的数据写到数据寄存器。 CompactFlash卡自动把这些数据添加到当前磁道。如需执行读操作,Read_CF(cyl,head,sec)程序利用 Write_CF_REG来指定目标柱面、磁头、扇区。然后,把0x20写到命令寄存器中,这会把 CompactFlash卡配置用来向主机处理器交付数据。把Read_CF_REG执行512次,这会通过数据寄存器从 CompactFlsh卡的当前磁道读取所有512个字节,并把数据放在一个全局数组中。

  若微控制器缺乏足够内部存储器来保存512个数据字节,则软件能把每个数字化的数据点测量值直接写到CompactFlash卡。如需了解关于控制CompactFlash卡的更多信息,请参阅参考文献1中的资料。

参考文献
1. CF+and CompactFlash specification,
www.compactflash.org .





本文关键字:控制器  接口  接口电路单元电路 - 接口电路

《把CompactFlash卡连接到微控制器的I2C接口》相关文章>>>