我使用 CH375A 做设备,硬件连接示意图见下图所示: 请问硬件连接是否有问题? 若没有问题,请问为何我在设置工作模式2后,xReadCH375Data( )获取的状态代码为 0xFF,而不是 0x51(CMD_RET_SUCCESS)?
你测试命令是否成功
测试命令的返回值也是0xFF,所以我想知道是否是硬件连接有错误?!
测试命令都没过,那么硬件上是有问题的,检查CH375的外围电路和375与单片机的接口 你图中的V3引脚的电容好像是0.1uF的,应换为0.01uF
问题已经解决!不是硬件连接的问题!是单片机寄存器初始化错误的问题! 请问,如果我想查询中断状态,等待 CH375 设备接入 PC 机,确认接上电脑后,点亮 LED 灯,应该如何编写查询程序? CH375 设备接入电脑上之后,中断状态应该是什么? 谢谢!
可以参考CH372的手册,里面有详细的流程
CH372DS1.PDF 中介绍的是 CH372 的封装、电子特性,对端点缓冲区进行操作的有关命令,以及数据上传下传的过程。 CH372DS2.PDF 中介绍的是 CH372 外部固件的附加命令说明,以及外部固件参考流程。 并没有看到有关连接 PC 机后,查询中断返回状态的具体说明,以及相关的参考程序举例。 我还参看了 MCS51C\MCU 文件夹中的 CH372DBG.C 程序,也没有找到相关的示例说明。 请问哪里能找到:查询连接 PC 机后,中断返回状态的示例程序? 谢谢!
你可以参考/ch372/check/pub/test/mcu/test.c
check/pub/test/mcu/test.c 程序完成的是:下传随机长度的随机数据包,被单片机接收并将数据按位取反后返回。查询的中断状态只有:USB_INT_EP2_OUT 和 USB_INT_EP2_IN,程序中说:其它中断,未用到,解锁后退出即可。没有找到连接PC机后返回的中断状态。 另外,我想请问一下:如果使用该 test.c 参考程序,能否使用对应的计算机端的测试程序 TEST.EXE 调试非 51 系列单片机控制的 CH375 实现该功能? 如果不能直接使用,需要做那些修改? 谢谢!
我参考 /pub/test/mcu/test.c 的程序,编写了以下程序: void mCH375Interrupt( void ) { unsigned char i, length; unsigned char buffer[ 64 ]; xQueryInterrupt( ); // 查询CH375中断并更新中断状态 switch ( CH375IntStatus ) { // 分析中断状态处理 ,使用的是头文件中定义的状态参数CH375IntStatus case USB_INT_EP2_OUT: { // 批量端点下传成功 xWriteCH375Cmd( CMD_RD_USB_DATA ); // 从当前USB中断的端点缓冲区读取数据块,并释放缓冲区 length = xReadCH375Data( ); // 首先读取后续数据长度 for ( i = 0; i < length; i ++ ) buffer[ i ] = xReadCH375Data( ); // 接收数据包 // 测试数据正确性,将接收到的命令包数据取反后返回给PC机 xWriteCH375Cmd( CMD_WR_USB_DATA7 ); // 向USB端点2的发送缓冲区写入数据块 xWriteCH375Data( length ); // 首先写入后续数据长度,回传刚接收到的数据长度 for ( i = 0; i < length; i ++ ) xWriteCH375Data( ~ buffer[ i ] ); // 数据取反后返回,由计算机应用程序测试数据是否正确 break; } case USB_INT_EP2_IN: { // 批量数据发送成功 xWriteCH375Cmd( CMD_UNLOCK_USB ); // 释放当前USB缓冲区 break; } default: { // 其它中断,未用到,解锁后退出即可 xWriteCH375Cmd( CMD_UNLOCK_USB ); // 释放当前USB缓冲区 break; } } } 但是,打开 TEST.EXE 之后,程序运行返回一直提示:return length error 请问可能是何原因?
为什么没有人回复??!!
我调用 DEBUG372\Release 文件夹中的 DEBUG372.EXE ,可以读取到 CH375 的设备信息(厂商ID和设备ID),但是调试"端点2下传"时,"长度"输入为:10,"数据"输入为:0123456789,点击"下传"按键后,程序提示"Down : 5" 请问这是不是说明实际只下传了长度为 5 的数据?如果是,请问是何原因造成的? 我点击“端点2上传”中的“上传”按键,和“端点1上传”的“上传”按键,均没有数据返回,或者程序没有响应!请问是何原因? 请问该 DEBUG372.EXE 程序对应的单片机设备端的程序代码在哪里可以找到?我只在 MCS51C 文件夹中的 CH372DBG.C 参考程序中找到了 “调试固件程序版本”的源程序,没有找到"端点2下传"、“端点2上传”和“端点1上传”的源程序!顺便说一句,我参考 CH372DBG.C 程序,对其中寄存器和RAM的名称和地址做了相应的修改,但是调用与之对应的 CH37XDBG.EXE 程序时,程序也无法正常工作!
1 .你输入的数据只有5个字节长度,点下传后程序提示"Down : 5"是正确的. 2.你的单片机程序中有没有处理"端点2上传"和“端点1上传",没有处理点击程序肯定没有响应. 3.单片机端程序对应的就是ch372/pub/test/mcu/test.c实现的功能就是端点2下传再将数据取反后上传.
但是我之前已经把参考 test.c 修改的程序发在上面了,并且运行 TEST.EXE 之后,界面提示:return length error。 如果下传是正确的话,为什么回传数据时会返回错误的数据长度? 请帮忙看一下问题可能出在哪里? 谢谢!
上位机用DEBUG372,下位机用test.C测试下传输数据是不是正常的.看硬件上有没有问题.
情况和之前一样! 只能检测到有设备插上,可以获取厂商和设备 ID ,可以下传数据,但是端点2和端点1无法上传数据! 点击端点2和端点1的上传按键之后,界面没有反应!点击“关闭设备”,再“打开设备”时,就连厂商和设备 ID 都再读不出来了! 请问可能是何问题?谢谢!
实际和计算机进行数据通信的时候,需要下位机的程序进行配合才能进行数据传输,按照你TEST。C的程序就是将上位机的数据收到之后取反在返回给计算机,并没有涉及到中断端点的上传和批量端点首先上传,还有就是如果TEST。C程序和上位机程序通信出现问题的话,那你需要监测下你下位机程序收到的数据是否正常以及你三个读写子函数时序上面是否有问题