gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:38 25 4
gpt4 key购买 nike

我在 Qt 中使用 libusb与 PIC 微 Controller 18F2550 通信。问题是它工作正常,直到我尝试发送或读取超过三个字节。为什么会这样?

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

我收到的错误是超时造成的。作为输入,我使用端点 0x81。

更多信息:

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

而第5个字节为1,SW显示2???。这可能是微 Controller 的问题,因为我将它编程为 HID USB?

最佳答案

我不认为成为 HID 是问题所在。我以前有过类似的问题;传输大数据时,PIC 会随机超时。原来是MCU上有些电压波动。你是如何连接 Crystal 的? VUSB 上有电容调节吗?

Building a PIC18F USB device 是一个关于构建 PIC HID 的很棒的教程,即使它不是基于 18F2550 而是基于 18F4550,它应该非常相似,我相信您可以从原理图和硬件设置中得到很多。这是我的 PIC-USB 项目的起点。

关于c++ - 为什么在使用 libusb 与 PIC 18F2550 通信时读取或写入超过 3 个字节时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com