Почему я получаю сообщение об ошибке при чтении или записи более 3 байтов с использованием libusb для связи с PIC 18F2550?

Я использую libusb в Qt для связи с микроконтроллером PIC, 18F2550. Дело в том, что все работает нормально, пока я не попытаюсь отправить или прочитать более трех байтов. Почему это происходит?

Я пытался использовать объемную передачу и interrupt_read. Когда я помещаю размер буфера равным или меньшим, чем три, тогда передача работает отлично, используя объем или прерывание. Когда этот размер больше трех, я получаю буфер1 и буфер [2] ОК, но остальные ошибаются.

Ошибка, которую я получаю от таймаута. В качестве ввода я использую конечную точку 0x81.

Дополнительная информация:

Возвращаемое значение от объемного чтения или чтения прерывания равно -116. Числа, которые я посылаю с PIC на ПК в двух первых байтах ([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?

1

Решение

Я не думаю, что быть скрытым — это проблема. У меня была похожая проблема раньше; PIC будет случайным образом превышать время ожидания при передаче больших данных. Оказалось какое-то колебание напряжения на MCU. Как вы соединяете кристалл? У вас есть конденсатор на VUSB, чтобы регулировать его?

Сборка USB-устройства PIC18F Это отличное руководство по созданию PIC HID, и, хотя оно не основано на 18F2550, а на 18F4550, оно должно быть очень похожим, и я уверен, что вы многое сможете получить от схемы и настройки оборудования. Это было отправной точкой для моих проектов PIC-USB.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]