为什么我在使用libusb与PIC 18F2550通信时读取或写入超过3个字节时会出现错误

Why do I get an error when read or write more than 3 bytes using libusb to communicate with a PIC 18F2550?

本文关键字:3个 字节 错误 读取 libusb 通信 18F2550 PIC 为什么      更新时间:2023-10-16

我在Qt中使用libusb与PIC微控制器18F2550通信。问题是,在我尝试发送或读取超过三个字节之前,它一直工作正常。为什么会发生这种情况?

我尝试过使用bulk_read传输和interrupt_read。当我将缓冲区的大小设置为等于或小于3时,那么传输就可以完美地工作,使用批量或中断。当这个大小大于3时,我得到的buffer1和buffer[2]还可以,但其余的都是错误的。

我得到的错误是由于超时。作为输入,我使用端点0x81。

更多信息:

大容量或中断读取的返回值为-116。我从PIC发送到PC的前两个十六进制字节([0]和1)中的数字是0x02D6。有了这个数字,buffer[0]=-42(当它应该是0xD6=214时),buffer[1]=2是正确的。在[2][3]字节中,数字是0x033D,我得到[2]=61=0x3D。这是正确的,[3]=-42???(如[0])。

第五个字节是1,SW显示2???。可能是微控制器有问题,因为我把它编程为HID USB?

我不认为HID是个问题。我以前也遇到过类似的问题;PIC将在传输大数据时随机超时。结果是MCU上出现了一些电压波动。你是如何连接水晶的?VUSB上有电容器来调节吗?

构建PIC18F USB设备是一个关于构建PICHID的很棒的教程,尽管它不是基于18F2550而是基于18F4550,但它应该非常相似,我相信你可以从原理图和硬件设置中获得很多。这是我的PIC-USB项目的起点。