QQ群 嵌入式存储技术交流 与 文件系统技术 198521880 ---------------------------------- 振南的硬盘读写模块 模式2(8255扩展IO方式)中 关于82C55芯片的一些问题以及解决方案 振南在研发IDE硬盘读写模块模式2的过程中,发现了一些比较奇怪的问题。模式2通过8255芯片扩展出24个IO,分别是PA、PB与PC,它们与IDE接口相连,间接地完成硬盘的读写。 模式2中的核心器件就是82C55,单片机与它接口需要13个IO(8位数据,5位控制信号),由它扩展出24个IO。所以,这8位数据就是最大的瓶颈。振南使用这种方式,主要目的是为了减少对单片机的IO资源的占用(全IO方式,即模式1,一共需要占用单片机20多个IO)。 82C55的性能主要体现在1、接口时序速率 2、扩展IO的驱动能力 3、抗干扰和抗冲击能力 一方面,82C55芯片采用标准的并行总线接口,可以将它挂接在单片机的外部总线上,也可以使用IO方式来模拟总线时序。82C55的接口所能承受的数据读写速率,限制了其IO操作的速率。如果82C55本身接口比较慢,那么就算单片机再快也没用。过快的时序,将使用82C55输入或输出数据出错,甚至根本没有反应。 我一开始使用的芯片是OKI公司出的,它的接口速率参数如下: 从上图中可知, 向82C55写入一个字节所需要的最短时间tAW+tWW+tWA=0+150ns+20ns=170ns 读取一个字节所需要的最短时间 tAR+tRR+tRA=20ns+100ns+0ns=120ns 另外,每次读写操作之间的最小间隔时间为200ns(tRV)。所以,OKI公司生产的82C55(M82C55A-2)写数据的最大速率为1000/(170+200)≈2.7MBps,读数据的最大速率为1000/(120+200)≈3MBps。 后来我又测试了其它两家公司生产的82C55芯片,分别是NEC(D82C55AC-2)与TOSHIBA(TMP82C55AP-2)。 它们的接口参数如下: NEC公司生产的D82C55-2 写入一个字节的最短时间为 tAW+tWW+tWA=0+200ns+20ns=220ns 读取一个字节所需要的最短时间 tAR+tRR+tRA=0ns+200ns+0ns=200ns 每次读写操作之间的最小间隔时间为200ns(tRV)。另外,后缀-2与-5的两种芯片在读写速率上相差较大,-5要慢得多,这个细节振南一开始吃了亏,我起初买的是OKI的-5的芯片,后来我发现读写硬盘的速率总是上不来,时序太快了,82C55就不响应了。 所以,NEC公司生产的82C55(D82C55A-2)写数据的最大速率为1000/(200+200)=2.5MBps,读数据的最大速率为1000/(200+200)=2.5MBps。 TOSHIBA公司生产的TMP82C55AP-2 写入一个字节的最短时间为 tAW+tWW+tWA=0+120ns+0ns=120ns 读取一个字节所需要的最短时间 tAR+tRR+tRA=0ns+160ns+0ns=160ns 每次读写操作之间的最小间隔时间为200ns(tRV)。 所以,TOSHIBA公司生产的82C55(TMP82C55AP-2)写数据的最大速率为1000/(120+200)≈3MBps,读数据的最大速率为1000/(160+200)≈2.7MBps。 比较之下,OKI与TOSHIBA的82C55芯片速率是比较快的,NEC的芯片最慢。而且仔细研究一下,这三个厂家生产的82C55芯片,在时序上有细微的差别。tAW、tAR是WR和RD选通(即下降沿)之前片选与地址(CS、A1、A0)的保持时间,tWA、tRA是WR和RD关闭(即上升沿)之后CS、A1和A0需要保持的时间,它们在不同芯片上的最小值是不同的,有的是0ns,有的是20ns。如果总线时序上没有考虑这个细节,则可能导致82C55没有响应。其实,我发现TOSHIBA生产的TMP82C55AP-2,tAW tWA与tAR tRA最小值都为0,所以我说它的时序是最“干脆”的,不像其它芯片那样拖沓。实际测试,也确实是TOSHIBA的芯片最容易驱动,很多延时都可以直接拿掉。唯一要注意的就是RD和WR确实要给出足够的时间。 另一方面,是82C55芯片的IO驱动能力。 OKI NEC TOSHIBA 上图中,DB为8255与单片机之间的数据端口的输出与输入电流,PER是扩展IO输出与输入的电流(所谓的拉电流与灌电流)。 可以看到,OKI的芯片IO电流输出与输入较大(mA级),说明它的驱动能力较强。NEC与TOSHIBA的电流均为uA级,驱动能力较差。 我要说的还不是这个,如果82C55芯片是全新原装的话,IO的驱动能力以及接口速率其实不是问题。问题在于市场上很多82C55芯片都是旧件拆机件,翻新的,这使得其芯片性能有所折扣,甚至损坏。我购买了三个牌子的82C55芯片,进行了测试。 同一牌子的芯片,全新与翻新在接口速率与驱动能力上略有差别。这种差别,有时是不可预见的。这会导致,同一个驱动程序,对于有的82C55芯片OK,但是有的则会出问题。翻新芯片推动了原装全新芯片的一致性和保证特有的性能指标。 最终我选用了OKI公司的M82C55A-2,但是这也付出了很大的代价(每片价格高达20元,原因就是此芯片已停产,现市面上9成以上都是翻新的芯片)。我不能去用翻新的旧芯片,这对硬盘读写模块的批量化生产非常不利,这也是对模块使用者的不负责任。 有人问为什么不用TOSHIBA的芯片,上面不是说它时序上更容易吗?原因就是此芯片比较稀缺,导致价格不能接受,高达35块钱一片。
|