Программирование C/C++/C# для взаимодействия USB с микроконтроллером PIC

Я студент, изучающий информатику, и хочу заняться программированием микроконтроллера PIC для небольших домашних проектов. Я свободно владею C/C++/C#/Java, а также разбираюсь в программировании микропроцессоров (ALP - 8086). Я планирую создать USB-интерфейс для управления освещением и двигателем в одном из моих проектов. У меня есть компоненты схемы и схема расположения. Имею в виду PIC 18f4550 и уже скачал библиотеки с сайта микросхемы. Единственная проблема в том, что я не знаю, какой код написать для этого . Библиотеки огромны, и мне не нужно вдаваться во все детали (я так думаю). Я пытался найти другие ресурсы, но оказалось, что PIC устарел, и большинство ссылок из Google были просто тупиковыми. Кто-нибудь знает блог, видео, или что-нибудь, что могло бы помочь мне начать? Я надеюсь, что это можно сделать с помощью одного из упомянутых выше языков.

Вы смотрели примеры, поставляемые с USB-библиотекой Microchip? Когда будете гуглить, старайтесь искать не только PIC18f4550, а вообще примеры PIC18f USB. Устройства PIC18 достаточно похожи, чтобы передавать (большую часть) кода USB с одного на другое.
Если вы не возражаете против того, чтобы не пройти кривую обучения USB, использование USB-чипа / разъема / кабеля FTDI может быть самым простым способом подключить PIC к USB. ftdichip.com/FTProducts.htm и digikey.com/PTM/…
Здесь никто не упоминает MPLAB X? Я что-то пропустил?

Ответы (3)

Сначала вы должны взглянуть на примеры, поставляемые с Microchip USB Framework (часть библиотек приложений Microchip ). Документация дает некоторые описания отдельных демонстраций. Сам файл справки, на мой взгляд, немного скрыт, но вы можете найти его по адресу<YourInstallLocation>\Microchip\Help\MCHPFSUSB Library Help.pdf

Чтобы начать работу и в зависимости от того, как вы хотите, чтобы ваше устройство отображалось на хост-компьютере, я бы просмотрел код следующих демонстраций:

  • Устройство — базовая демонстрация CDC
  • Устройство - HID - Пользовательская демонстрация

В описании обоих указано, что они могут работать на «Отладочной плате USB с малым количеством выводов», в которой используется PIC18F14K50 . PIC18F4550 должен быть достаточно похож, чтобы вы могли перенести большую часть, а может быть, и весь код.

Другой подход, рекомендованный Кенни , заключается в использовании микросхемы, которая обрабатывает большую часть USB-материалов за вас. Популярным выбором являются те, от FTDI . Когда вы берете FT232R , вы подключаете UART вашего микроконтроллера к микросхеме. Написание кода для передачи/приема данных теперь намного проще.

Подобной FT232R является микросхема MCP2200 производства Microchip. Какой из них вы выберете, это дело вкуса (и, возможно, поддержка водителя).

+1 за перенос боли на чип FTDI. Жизнь слишком коротка, чтобы создавать собственный стек USB, если только вам не платят именно за это, и они не примут FTDI в качестве ответа. Есть гораздо более «веселые» задачи, например, как засунуть кирпич в нос.

Сборка USB-устройства PIC18F

Я использовал его библиотеку C#, она работает очень хорошо и проста в использовании. Его можно легко расширить или изменить в соответствии с вашими потребностями. Его уроки также очень подробные и простые для понимания, и он обычно быстро отвечает на форумах, если у вас есть вопросы.

Как уже упоминал PetPaulsen, просмотрите весь код и образцы проектов, предоставленные Microchip. Вам не нужно понимать, как работает протокол USB. Вам действительно нужно только изменить основной файл и файл usb_descriptors, чтобы все заработало.

Вы можете попробовать код с http://tomeko.net/miniscope.php?lang=en. Существует немного упрощенная «Generic HID Demo» из образцов Microchip (некоторые избыточные разделы кода для нескольких плат удалены) для более старых MPlab + C18 и console- на основе проекта Code::Blocks для Windows (переключение светодиода, кнопка чтения, чтение АЦП). Если вам не нужно много GPIO, попробуйте PIC18F2550 меньшего размера. Тем не менее, я не думаю, что эти микроконтроллеры на данный момент конкурентоспособны, например, с STM32F042F (комплект TSSOP20, USB-устройство без внешнего кристалла, больше памяти, загрузчик USB в ПЗУ) или STM32F103 (мини-платы доступны всего за 4 доллара, UART загрузчик на основе).

Обратите внимание, что для PIC18F2550/4550 вам, вероятно, потребуется купить программатор (если только у вас нет старого ПК с соответствующим портом RS-232 для подключения простого программатора в стиле JDM).