为什么CH375在读数据时可能会失控[已经解决]

插入优盘后,ACT灯亮,但是如果读多个数据就可能会失控.CHECK_EXIST就没有问题,但是读扇区数据或磁盘大小都会导致ACT灯熄灭,CH375几乎完全失控.除了复位,几乎没有办法. 因为我现在测试是画了一块小板,所有的线全部是手工连接到主板上的.刚才我试了一下,把片选脚经过两级反相后接到CH375,发现根本无法工作(也是CHECK_EXIST无问题,这次是一次数据都没有办法读了).因为此现象出现是随机的,所以我认为是硬件时序上问题比较大,请帮忙分析一下原因,我应该如何来解决. 另加说明,我这个CPU自带有四个片选脚(内部自带地址译码),所有制的WR/RD是共用的,只可以用片选脚来区别芯片.

刚才我烧片子试了一下,根本不能工作,倒是仿真器可以用,以前用Philips D12时遇到过反的情况,就是用片子没有问题,用仿真器不行,后来是在CS脚上加了两级反相就OK了.那就是说,这个片子我得把除CS外的其它脚延迟?郁闷.


你如果用总线方式的话,那么不需要考虑时序问题,你要考虑的是延时的问题,也就是说命令与命令,命令与数据需要2US的延时,数据与数据之间需要1US的延时,你只要修改那三个读写子函数就应该可以了(实际上真正仿真器和烧到单片机里面去的区别也就是操作的时间上面的差异而已),你说了读物理扇区就不能读了,那可能是因为你插下U盘之后,U盘的电压降的太低了,有可能U盘都不工作了,你看下你插下U盘的供电电压是多少?(插上U盘之后)


电压问题我在画板时考虑过的,所以我优盘与CH375是分开供电的,插上优盘后电压没有明显降低,大概4.6V左右,我串了一个4.7的限流电阻和一个10uH的电感(公司没有更小的电阻和更大的电感......) 至所谓认为是时序问题,因为我这个片子时序与51不太一样,再加上曾经遇到过类似的问题所以认为时序上有不对.至于软件延时间,我已经加得够长了. 每次CH375失控是出现在中断0x1D的处理中.读了几个数据后,读出的数据就全为0x80,然后就失控了. 我现在才做到文件系统判断,第一个优盘没有MBR,所以出错机率小,现在这个有MBR,要读两个扇区,机率就大了多.

下面为读出错后RAM中的数据.此时我认为应该是连读数据错了. Page:5 Addr:D000 0 1 2 3 4 5 6 7 EB 58 90 2A 5E 2B 27 7E 49 48 43 00 02 08 24 00 8 9 A B C D E F 02 00 00 00 00 F8 00 00 3F 00 FF 00 80 80 80 80 -----------这儿4个字节就开始错了,下面也全错 10 11 12 13 14 15 16 17 80 80 00 80 80 80 00 80 80 80 80 80 80 00 80 80 18 19 1A 1B 1C 1D 1E 1F 80 80 80 80 00 80 80 80 00 80 80 80 80 80 80 00


那你可以不可以这样,读出一个数据出来就将这个数据通过串口输出来看下。


我现在是读一个字节就保存在RAM里,上面的数据都是从375中读出来的.我想问的问题是在什么情况下CH375会失控.如果我命令错误,空读,也不至于会让CH375完全不受程序控制,只有复位才能使其工作.如果我命令数据间的延时不够,会导致CH375失控吗?! 我又试了一下,如果使用Flash片子,每次只能从CH375读出一个字节,然后CH375就失控了. 我现在把WR/RD加了两级反相后,用仿真器会好很多.

另外,我在用仿真器可以用的情况下,把片选用了反相延时后就读不出数据来了.是不是这个片子的片选低到能取数据是有要求的?如果那样的话,我可以用接245的方法来解决.


晚上做了修改,把CH375的片选常接低,然后用片选脚控制245的Enable,用WR控制245的DIR,同时WR/RD也接到CH375,理论上讲挺好的,结果却是,完全不受控了,连CHECK_EXIST都过不了了。 天啊,我向老大建议了N久才同意我试试的片子这么不给我面子??非要我去用Philips的片子??!!


这个问题很特殊但应该比较好解决,可能要先检查一下硬件连接,总线上是否有其它器件,还要检查一下接口子程序源代码,需要你提供单片机型号和速度以及读写脉冲宽度,可将相关资料发到tech@wch.cn


信件已经发出,请查收。 附件为两个PDF,一个为CPU时序,一个为现在的连线示意图。


今天用示波器看了RD信号,在图中的连接方式下,HC245出来连接到CH375的RD会在正常的信号后又产生一次低脉冲,是紧跟在正常之后的。如果与CH375断开,则正常,把如果把该脚与数据口使用的HC245 EN脚断开,则也正常。特别奇怪。 另外,把单片机过来的RD用两路HC245分别过来,一个接数据口使用的245EN,一个接CH375的RD,居然也不对。也即是说,CH375的数据口似乎不能与HC245共存。 太累了,睡会儿。


实测了RD宽度和WR宽度,WR是足够的,大概110ns左右,RD总在90不到的样子,与CH375的要求相比差点意思.看来我没福气用CH375了......


E-MAIL没有收到,可以不可以在发一遍


我把晶振降到6M(原来为9.6M),稳定性好了很多,但也没有达到完全OK。郁闷。再说,我也不能用6M晶振。 邮件我重发了一次。


今天离开公司前做了最后一次努力,把WR/RD直接用口线控制,在读/写前把RD/WR拉低,然后再正常读/写,这样在整个片选为低的时间内,CH375都处于读/写状态,因为片选时间是大于120ns的。所以能读出数据,而且连读1M也没有出错了。只是连续数据读的程序需要进行优化。 这个CPU CS/RD不规范,每次读数据时RD后降到低电平,也是后升上去,所以看起来RD宽度大概有90ns,但是除掉片选后,几乎只有70-80ns了。 总之先这样了。


只有登录才能回复,可以选择微信账号登录