我用的是stc89c58rd+单片机,现在可以和上位机通信,但是不能读写u盘。我用的是CHE75EVT中的程序,u盘插上去都不能检测,而且编译有74个警告,不知道出了什么问题,请指点一下。是不是ch375a对单片机或者u盘有限制啊,用的头文件是hf6
那么多的警告,肯定是不正常的,是你没有添加我们库的原因,也不是CH375A对单片机或者U盘有限制,你用的是HF6的头文件,那你就要添加库6!!
谢谢,添加库函数后,只剩一个警告了,我的金士顿u盘也能识别了,可是串口中老显示 Start Wait UdiskReady ? Ready ? Ready ? Ready ? Ready ? Open Error: 1F 然后就运行不下去了,那一个警告为“*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?CH375FILELOCATE?CH375SEC请指点一下
不知道你是用我们的程序还是你自己写的程序,能将OPEN的程序发出来看看吗?可能程序有点问题!
我就是用的你们的程序啊,是EXAM1中的程序,只是稍微改了一下地址,其它没什么变化啊,而且我的电路基本上跟你们提供的电路一样,就是A15地址线我的是用一个反相器反相后再接到ch375上的,地址线最高位跟你们的正好相反,已经可以和上位机通信了,应该地址线没问题。 #include #include
#define CH375_CMD_PORT_ADDR 0x0FF1 /* CH375命令端口的I/O地址 */ #define CH375_DAT_PORT_ADDR 0x0FF0 /* CH375数据端口的I/O地址 */
#define DISK_BASE_BUF_ADDR 0x8000 #define FILE_DATA_BUF_ADDR 0x8200 #define FILE_DATA_BUF_LEN 0x7800
检查下你的供电足不足,个别U盘电压低与4。8V的话可能不能正常工作,还有就是你的USB口有没有串接电阻。USB的4根线有没有接反等,都有可能导致DISK-READY不能通过
我的USB口没有串接电阻,只有USB的电压端接了一个电阻然后和电源相连,你指的USB电压是工作时的电压还是工作前的电压,我的调试板上电前测试USB有五点几伏,上电后只有三点几伏,是不是这个问题?USB四根线应该没接反,因为可以和上位机通信了
我吧USB的VBUS端串联的电阻改为2.5欧姆后U盘插入时的电压变为了5.16V大于4.8V了,还是不行,不过从串口中传出的信息变为: Start Wait UdiskReady ? Open Error: 1F
少了几个“Ready ?”语句,还望指点
你的磁盘缓冲区好像有点问题。 你有没有外扩RAM?stc89c58rd自带1K的外部RAM,而你的磁盘缓冲区地址为0x8000,造成缓冲区溢出了
我已经在程序中禁止STC89C58RD的外部ram了,前面定义了sfr AUXR=0x8e;main函数中AUXR=0x02;//禁止访问内部扩展RAM,我的外扩RAM为62256,32K,跟CH375Datasheet1中的并口方式连接一样
那你的磁盘缓冲区溢出了,32K,最大地址为0x7FFF,而你的磁盘缓冲区却从0x8000开始。
我的地址最高位是经过7404取反得到的,所以从8000开始,原电路不是P2.7和CH375的CS相连么,然后我又将P2.7接到7404的一个输入端,输出端接到62256的cs端,这样地址就是从8000开始了
我的QQ184976517,你能加我指点我一下么,这样说不清楚
把图贴出来看看
我不知道在么贴图啊
磁盘读写是正确的,我单独对62256读写,是可以进行写入和读出操作的