求助!

我用ch375做设备,与计算机通信.现在做测试程序TEST.c硬件已经连接上,插到计算机上,计算机已将识别了,而且已经安装上了。但对应的上位机程序TEST.EXE在执行时显示CH375WriterData return error 这是怎么回事呢?是我下位机程序错了吗?是中断写错了吗?这样能不能说我的写命令,写数据,读数据三个子程序时序对了呢?(因为我用的是pic单片机,用I/O口模拟时序) 第二个问题就是,我的ch375插上,有时指示灯会亮,有时就不亮,咋回事呢?是接触不良?还是系统不稳定呢? 还有就是,我第一次把375插上时,提示发现新硬件了,安装上之后.在我的电脑里没有发现设备呀?请问在哪能找到设备呢? [Emot]4[/Emot]

1.检查下位机程序,多做几次测试命令试试,上位机可以下载CH372DBG.ZIP,用这个软件测试 2.USB线一定要使用屏蔽线,USB接口外壳也要接地,连线最好短点 3.如果设备安装成功的话,在设备管理器里面会有相应的设备


我的USB接口外壳接地了,连线也很短,USB线使用的是移动硬盘的数据线,应该是屏蔽线。但是CH375的指示灯还是时亮时不亮的。 我又在设备管理器里找了,后来在外部接口里找到了。插上后,当指示灯不亮时也有显示,但会有一个黄色的叹号!


如果使用的是内置固件的设备方式,亮表示USB设备配置成功,可以正常通讯。 USB设备供电使用的是计算机USB端口供电,还是自供电,如果自供电,那么和主机一定要共地 USB信号线上有没有串接电阻之类的器件?如果有 则去掉试试


我用的是USB端口供电,USB信号线上什么也没接。而且我单片机,USB接口,CH375都是共地。 我用TEST.exe测试时,只要上位机程序打开,指示灯就不亮了,而且CH375设备就找不到了,CH375就不好使了,再插上也不好使,得等一会才会好使.这也太不稳定了。


你的下位机程序好像有问题,是完全按照我们的TEST.C程序移植的吗?把你程序贴出来看看


A0--RE2 WR#--RE1 RD#--RE0 8M晶振

#include #include

#define nop() asm("nop") #define USB_INT_EP2_OUT 0x02 #define USB_INT_EP1_IN 0x09 #define USB_INT_EP2_IN 0x0A #define CMD_RESET_ALL 0x05 #define CMD_CHECK_EXIST 0x06 #define CMD_GET_STATUS 0x22 #define CMD_UNLOCK_USB 0x23 #define CMD_RD_USB_DATA 0x28 #define CMD_RET_SUCCESS 0x51 #define CMD_WR_USB_DATA7 0x2B #define CMD_SET_USB_MODE 0x15 #define CH375_MAX_DATA_LEN 0x40 #define CH375_PORT PORTD //const unsigned char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delayms(unsigned int ms) { unsigned int i,j; for(i=ms;i>0;i--) for(j=220;j>0;j--); } void CH375_WR_CMD_PORT(unsigned char cmd) { TRISD=0X00; PORTE=0X03; PORTE=0X07; CH375_PORT=cmd; PORTE=0X05; PORTE=0X07; TRISD=0XFF; CH375_PORT=0XFF; } void CH375_WR_DAT_PORT(unsigned char dat) { TRISD=0X00; PORTE=0X07; PORTE=0X03; CH375_PORT=dat; PORTE=0X01; PORTE=0X07; TRISD=0XFF; CH375_PORT=0XFF; } unsigned char CH375_RD_DAT_PORT() { unsigned char dat; TRISD=0XFF; PORTE=0X07; PORTE=0X02; dat=CH375_PORT; TRISD=0X00; PORTE=0X07; return(dat); } void zzdelayms(unsigned int ms) { unsigned int i,j; for(i=ms;i>0;i--) for(j=220;j>0;j--); } void zzCH375_WR_CMD_PORT(unsigned char cmd) { TRISD=0X00; PORTE=0X03; PORTE=0X07; CH375_PORT=cmd; PORTE=0X05; PORTE=0X07; TRISD=0XFF; CH375_PORT=0XFF; } void zzCH375_WR_DAT_PORT(unsigned char dat) { TRISD=0X00; PORTE=0X07; PORTE=0X03; CH375_PORT=dat; PORTE=0X01; PORTE=0X07; TRISD=0XFF; CH375_PORT=0XFF; } unsigned char zzCH375_RD_DAT_PORT() { unsigned char dat; TRISD=0XFF; PORTE=0X07; PORTE=0X02; dat=CH375_PORT; TRISD=0X00; PORTE=0X07; return(dat); } void init() { TRISD=0x00; PORTD=0xFF; TRISE=0x00; PORTE=0X07; TRISB=0X01; INTEDG=0; INTE=1; GIE=1; } void CH375_init() { unsigned char i; CH375_WR_CMD_PORT(CMD_CHECK_EXIST); CH375_WR_DAT_PORT(0x55); i =~0x55; if (CH375_RD_DAT_PORT()!= i ) { for (i=80;i!=0;i--) { CH375_WR_CMD_PORT(CMD_RESET_ALL); CH375_RD_DAT_PORT(); } CH375_WR_CMD_PORT(0); delayms(50); } CH375_WR_CMD_PORT(CMD_SET_USB_MODE); CH375_WR_DAT_PORT(0x02); for (i=100;i!=0;i--) if (CH375_RD_DAT_PORT()==CMD_RET_SUCCESS) break; INTEDG=0; INTF=0; ei(); } void interrupt CH375(void) { unsigned char InterruptState; unsigned char k,length; unsigned char buffer[CH375_MAX_DATA_LEN]; zzCH375_WR_CMD_PORT(CMD_GET_STATUS); InterruptState=zzCH375_RD_DAT_PORT(); INTF=0; switch(InterruptState) { case USB_INT_EP2_OUT: { zzCH375_WR_CMD_PORT(CMD_RD_USB_DATA); length=zzCH375_RD_DAT_PORT(); for (k=0;k buffer[k]=zzCH375_RD_DAT_PORT(); zzCH375_WR_CMD_PORT(CMD_WR_USB_DATA7); zzCH375_WR_DAT_PORT(length); for (k=0;k zzCH375_WR_DAT_PORT(~buffer[k]); break; } case USB_INT_EP2_IN: { zzCH375_WR_CMD_PORT(CMD_UNLOCK_USB); break; } default: { zzCH375_WR_CMD_PORT(CMD_UNLOCK_USB); break; } } } void main(void) { delayms(50); init(); CH375_init(); GIE=1; while(1); }


你到我们公司的网站上下载CH372DBG.ZIP,用这个软件来下传数据给你的单片机,看看单片机是否可以正常接收到数据。


就是DOWNFILE文件夹里的WINDOW里的DOWNFILE.EXE程序呗。传了一个.txt文件,显示写成功了.


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