ch372接收数据出错

我在用372做的设备,之前的样机用于3。3V设计已经成功,现在我改版后,用5V供电,V3引脚已经改用104电容接地,其他引脚未变,但接收pc发来的数据有问题,初始化时用CHECK_EXIST命令测试连接是没问题的,这是怎么回事? pc发送数据(十六进制) 02 64 00 00 04 00 00 78 00 单片机接收到的数据如图 02 64 00 04 00 78 00 00 00 有时第一个02还收不到,有时第一个字节还是d0,看样子像干扰问题,我用沁恒的usb芯片好多年了,从来没遇到过这样的问题,但我大多都是3.3V电路,这次是第一次5V,请大虾帮我想想可能是哪里的原因,谢谢

这是我的电路图,VCC为5V


200972319133431.jpg


这是我的程序调试界面

200972319152917.jpg

初始化程序

void USB::init(void) { this -> wr_xdata(CH372_COMM,RESET_ALL); for (pi=0;pi<20;pi++) { delay(200); } this -> wr_xdata(CH372_COMM,SET_USB_MODE); delay(200); this -> wr_xdata(CH372_DATA,0x02); delay(200); px= 0xaa; for (pi=0;pi<100;pi++) { this -> wr_xdata(CH372_COMM,CHECK_EXIST); delay(20); this -> wr_xdata(CH372_DATA,px); delay(20); px = this -> rd_xdata(CH372_DATA); } return; }


有时单片机收到的数据是 64 04 ff 00 00 00 00 00 00


V3接103电容对地,实验一下. 测试命令一般是用来测试软件硬件连接是否正确的,所以测试命令最好在设置模式之前做.


我手头没有103,我用6800p电容实验了,还是不行,资料上说是4700~0.02uF


另外导致这种现象出现可能还有其他原因,读写函数延时不够,干扰,连续测试命令能够通过并不能说明什么,你测试的是同一个数据,而且中间延时了很长时间.


是什么原因呢,能否提点建议,我好分析


(1)372共作在5V,那么单片机工作在几V呢?会不会存在电平不匹配 (2)是手工搭的板子,还是PCB板,供地性好不好


单片机也是5V的啊,如果单片机是3.3V,读5V的372会出问题 设计的电路板,不是万能板


(1)上位机软件可靠么?下载CH372DBG调试一下位机,确认一下原因 (2)做个实验,把现在系统改3.3V,能否正常


上位机软件是我设计的,之前用在样机上一直正常 做好的电路板,改3.3V很麻烦的, 我现在还在检查


单片机程序没有改动、pc端软件没有改动,只将电路板上的单片机、ch372改为3.3V,一切通信都正常了,我单片机与ch372是通过3.3V的cpld地址译码的,和这个不应该有关系吧


CPLD能否接受5V电平呢,如不能,那么单片机工作在5V时,会存在电平不匹配 另,早期的CH372T/A是5V工作电压,CH372V是3.3V,不能混用;CH372B支持两种电压


你没用过cpld,他当然可以接受5V电压,我用的就是372B


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