在设计可支持CompactFlash+++(或CF+)插槽的接口时,有两个主要因素需要考虑,即供电及热插拔。为支持CF或CF+规范,在上电复位(POR)及请求的过程中,必须具有100mA的最大电流。这样,宿主便可执行专门的命令以检验该部件有足够的功率。
该信息可通过一个卡信息结构(CIS,Card Information Structure)读命令或识别设备(Identify Device)命令来获得。然后,宿主可确定是否能驱动该部件。如果能,则一个CF+部件可承受的最大电流为500mA(称为Power Level 1)。诸如闪存等许多CF部件可工作于100mA供电电流。新的CF+宿主设计应该能支持500mA电流。在下文,我们将初步探讨如何降低便携式设备的功耗以延长其电池寿命。
要完全控制CF+部件,其宿主应能控制其插槽的电源供给。如果CF+部件不希望被拔掉且不是用电池供电,则不需要这种可变控制(如存储器件嵌入到线路板上的情况)。CF+插槽的供电控制并不复杂,就跟FET开关与供电器件(如MICREL MIC2026)或控制器芯片(如Maxim 1601或4370)串联一样简单。
在控制CF+部件的供电时,宿主必须确知该部件已为关闭电源做好准备。某些部件,如日立Microdrive等存储驱动器具有写入高速缓存。将Caching使能并将读写头置于媒体上方后,Microdrive就会将“READY”状态报告给一个写命令(命令结束后解释),即使仍有数据在写入驱动器。在这种情况下,关闭驱动器电源之前,宿主必须执行“STANDBY IMMEDIATE”命令,并等待“READY”状态的出现。驱动器将一直保持“READY”状态,直到高速缓存被腾空且读写头已停好。然后,宿主便可关闭驱动器的电源。
除了上述的电源问题外,切忌故意将CF+部件插入带电插槽中,即使该插槽的设计允许这种在发出信号前连接电源线的操作。但是意外情况的确会发生,因此驱动器最好具备热插拔功能。
热插拔的设计问题是,在CF+设备进行上电复位(POR)或对小的引脚电容充电时,应避免地址或数据总线受到由其引起的瞬态冲击。隔离这些总线的最好方法是使用驱动器/接收器(如图1所示)。单向地址总线只需使用驱动器。数据线及一些控制线则需要使用接收器将信号与宿主隔离开来。在对插槽供电之前,接收器应在OUTPUT(至CF部件)进行预设置。这可确保在“读选通”期间CF+部件与宿主处理器隔离,并且只与数据总线相连。由于许多宿主总线采用时分多路复用总线设计,因此地址总线通常使用一个简单的驱动器(如74244)进行隔离。另一方面,数据总线是双向总线,可与低阶地址总线进行时分多路复用。
图1:隔离地址或数据总线的最好方法是使用驱动器/接收器。
因此,74373或类似器件可提供适当的隔离。当CF+插槽为空、热插拔并非真正的热插拔时,宿主会定期轮询CD线,检查CF卡的存在,然后中断处理器,从而调用CF激活进程。该进程由通过上述的控制电路进行加电开始,然后必须等待至少300ms使该部件准备好执行命令。等待过程分两个阶段:0-100ms为第一个阶段,只是等待;100-300ms为第二阶段,此时应检查“READY”状态是否已出现,如果没有,则继续等待。准备好后即可继续。如果超过300ms还没出现“READY”状态,则报告CF卡出错。如果在第二阶段准备好,宿主必须从CF部件读取状态字节。该过程的大部分由驱动器软件处理,不过这里是被用于没有商用操作系统的嵌入式设计。因此,这种卡实际上并不真正具备热插拔功能,尽管在用户看来它具有。
若CD信号消失,这表明CF卡已被拔掉。宿主检测到这一状态后,会关闭电源并重新寻找等待CD信号以便再次激活。