[求助]初始化时读U盘指定扇区数据不成功

MCU:mc9s12d64 外部晶振:12MHZ 启用PLL后为48MHZ

CH375 外部晶振:12MHZ 未启用PLL

并行口操作方式 INT0,CS,RD,WR,A0,D0~~7在示波器上都与程序给定值相同。

遇到问题: 1,在中断发生后用CMD_GET_STATUS命令不能有效的取消中断标志,此程序中的强制取消中断处理方式在情形出现时要反复运行上百次才能有效的取消中断标志位。

2,现行程序能正确设置工作模式,初始化USB盘,并检测无错误,正确读出USB盘的容量,但始终无法正确读出扇区的数据(RBC_Read),在RBC_Read子程序中,发送完命令和命令数据后的第一次中断之间的时间用示波器观测变化非常大,从500多us到6ms的间隔时间都有。若为接近500us的间隔值时,中断返回值为1D(正确的返回值),接近6ms的间隔时,中断返回值为1F(断开)。双循环:命令与数据间的延时长度(0--3000us),数据与数据间的延时长度(0--255us)都有相同的情形。

部分源程序见附件UploadImages/200841210191864.txt

没人理了!


void CH375_WR_CMD(byte Command) { CPU_Delay_US(3); CH375_Data=Command; CH375_A0=1; CH375_RD=1; CH375_CS=0; Data_IO =0xff; CH375_WR=0; CH375_WR=0; CH375_WR=0; CH375_WR=1; CH375_RD=1; CH375_CS=1; }

void CH375_WR_DAT(byte Data) { CPU_Delay_US(2); CH375_Data=Data; CH375_RD=1; CH375_CS=0; Data_IO =0xff; CH375_A0=0; CH375_WR=0; CH375_WR=0; CH375_WR=0; CH375_WR=1; CH375_RD=1; CH375_CS=1; CH375_A0=0; }

byte CH375_RD_DAT(void) { byte ReadByte; CPU_Delay_US(2); CH375_WR=1; CH375_CS=0; CH375_A0=0; Data_IO =0x00; CH375_RD=0; ReadByte=CH375_Data; CH375_WR=1; CH375_RD=1; CH375_CS=1; CH375_A0=0; CH375_Data=0; Data_IO =0xff; return ReadByte; }

你可以按照上面的时序来操作下,同时: 1,如果获取中断状态之后中断引脚拉不高的话,你可以这样操作下,将你的中断引脚撬起来,然后在你插上U盘之后,读取下中断状态看下中断引脚拉高了没有。。


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