请教CH374T问题

请问CH374T作设备模式时,怎么用 端点1 进行上传下载数据啊? 能不能给段代码?SPI模式的。。

去我们官网上下载CH374EVT.ZIP,参考做设备的程序


CH374EVT.ZIP中有做设备的程序,但并没有关于 端点1 上传下载的代码啊?


端点1和2基本差不多,就是端点大小有区别而已,用法基本一样


那在上位机中用什么函数从端点1上传下载呢?


case USB_INT_EP1_IN: Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_NAK( Read374Byte( REG_USB_ENDP1 ) ) ^ BIT_EP1_TRAN_TOG ); break; 上位机调用什么函数,会使这个标志位生效?


上位机只有个CH375ReadData这个函数读取数据


CH375ReadData这个函数只能读端点2的数据啊 我要读端点1的数据


读端点1的是CH375ReadInter


case USB_INT_EP1_IN: // 中断端点上传成功,未处理 { u8 mData[8]={0}; u8 xx = 0; for(xx=0;xx<6;xx++) mData[xx] = *((u8*)(0x4100 + xx)); mData[7] = 0xFE; Write374Block( RAM_ENDP1_TRAN, 8, mData); /* 加载上传数据 */ Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_ACK( Read374Byte( REG_USB_ENDP1 ), 8 ) ^ BIT_EP1_TRAN_TOG ); } Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_NAK( Read374Byte( REG_USB_ENDP1 ) ) ^ BIT_EP1_TRAN_TOG ); break; 下位机中这样行吗


1、 u8 mData[8]={0};这定义变量正确么?! 2、 如果你上传的话这句话 Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_NAK( Read374Byte( REG_USB_ENDP1 ) ) ^ BIT_EP1_TRAN_TOG );不需要


哦!u8 就是 unsigned char ; 是不是上位机调用CH375ReadInter函数,下位机中断就会进入这个分支? 然后下位机先写数据到 RAM_ENDP1_TRAN, 然后发 ACK;


说的是你的数组不能在此定义,编译器会报错的。 把数据发上去,其实不是ACK,是返回DATE0或者DATE1,可以认为ACK是允许发送


呵呵!你没有看清楚我的代码,我在case后面有个大括号,确定了变量的作用域,编译器就不会报错的了; 我测试了,下位机代码如下: case USB_INT_EP1_IN: { u8 mData[8]={0}; u8 xx = 0; for(xx=0;xx<6;xx++) mData[xx] = *((u8*)(0x4100 + xx)); mData[7] = 0xFE; Write374Block( RAM_ENDP1_TRAN, 8, mData); Write374Byte(REG_USB_ENDP1,M_SET_EP1_TRAN_ACK(Read374Byte(REG_USB_ENDP1),8^BIT_EP1_TRAN_TOG); } break;

上位机调用CH375ReadInter函数时,被卡住了,程序死了; 读不到东西。。。


您先用372/375调试工具测量下你的断点1能不能上传数据,如果能的话可能就是上位机问题了,先确定到底是哪边不能传数据


我手边没有372/375调试工具,我的端点2能非常好的上传下传数据,就是端点1不行,上位机程序就除了打开设备外,就CH375ReadInter函数一句话,应该不是上位机的问题


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