Jump to content
awpe01

Разработка Связки Linux -> Usb -> Gpio

Recommended Posts

Здравствуйте,

обдумываю устройство сопряжения компьютера и платы с GPIO.

Как я себе это представляю:

usb порт ПК -> cy7c68013 -> ПЛИС xilinx spartan3e -> 64GPIO (32 светодиода/32 переключателя).

На компьютере:

есть драйвер и файл устройства (пишу сам) /dev/usb2gpio. С него можно прочитать 4 байта, где биты указывают состояния переключателей на плате, а можно записать 4 байта и значениями битов включить светодиоды.

Драйвер постоянно опрашивает устройство и пишет состояние переключателей в файл устройства.

На плате:

есть cy7c68013 в EEPROM которого при наладке устройства прописывается VID, DID, для драйвера на ПК.

ПЛИС на максимальной скорости проверяет буфер в cy7c68013 и если там что то есть (4 байта) то выставляет на светодиоды нужные сигналы, после опроса записывает туда значения для отправки в ПК(только если буфер пуст).

сразу отвечу на некоторые вопросы:

1) почему linux? - Программа которой дополнительные GPIO нужны под него сделана.

2) почему usb? - Есть на любой материнской плате, скорость выше чем у доступных com/lpt.

3) почему cy7c68013 и spartan3e? - потому что есть отладочная плата с этой связкой (digilent nexys2), с платой и IDE знаком не по наслышке. Сделать usb для плис не хватит времени, купить готовый ip core не по карману, cy7c68013 по даташиту имеет FIFO на 60мбайт/с что достаточно.

4) Зачем там ПЛИС? - Здесь я пытаюсь выяснить стоит ли использовать USB для моих целей, а вообще у ПЛИС будет и другая работа(не только светодиодами моргать), но там всё ясно, уже делал подобные вещи, а вот с ПК связывал свою аппаратуру только через последовательный порт...

вопросы:

1) Затея выполнимая для одного человека, без опыта разработки сложных промышленных устройств? (опыт из универа (курсов для разработки драйверов устройств нет, по шинам(usb) тоже давали только общие представления), различные задачи, синхронные, асинхронные последовательные схемы, конечные автоматы итд. программирование си, асм, pic/avr, posix threads, реализации FFT, CYK(многопоточный). Пытаюсь прояснить о каком человеке идёт речь :) ) В целом концепция ясна, но вдруг есть какие то подводные камни о которых пока ни сном, ни духом...

2) Если скажу что частота опроса будет не меньше 250кГц и запись тоже 250кГц, не ошибусь? - Пусть имеем соединение highspeed 480mbit/s = 60mByte/s, usb шина полудуплексная, значит 30мБайт/с в одну строну, дальше, скажем, качество кабеля плохое, получим 20мБайт/с в одну сторону, надо передавать 4 байта, значит имеем 500000 посылок в секунду на такой скорости, ну и по закону подлости пусть реально будет в два раза меньше - 250К посылок в секунду.

3) Я разделом не ошибся? :)

Edited by awpe01

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By serglobo
      USB транспорт Amanero (клон), последняя прошивка, РСМ до 32/384, DSD до 512. Цена 27$. Телефон 05O6751256(Украина) Сергей. EMAIL tatunovs@ukr.net



    • By KVAnton
      Всем привет, начал недавно STM32 осваивать (до этого были pic12-18/arduino/raspberry) и столкнулся с интересной проблемой:
      Настроил GPIO как Input Pull-Up но при считывании получаю 0.
      Условия:
      Несколько других также настроенных портов (Input Pull-Up) при этом посажены на землю (на один порт Output Open-Drain), а непосредственно перед считыванием переключаю другой порт Output Open-Drain Pull-Up с 1 на 0.
      При этом, если поставить задержку (пробовал 1мс) после переключения OutPut и считыванием Input получаю - 1, как и должно быть. Порты по схеме ни как не связанны - пробовал вообще отключать input порт от схемы (матрица кнопок) ситуация не меняется.
      Работаю с китайской платой на stm32f103c8t6 (ардуино подобная) и библиотекой LL. Скорость порта пробовал разную - результат один.
      Сможет кто-то объяснить или хотя бы намекнуть (куда копать, что почитать) почему такой эффект возможен?
      Во всяких даташитах/аппликейшн ноте вроде ни чего интересного, зацепила только аббревиатура  SSO ( simultaneous switching output) в разделе Adapt GPIO speed (в AN на GPIO) - но понять глубину этой фразы и контекста с ходу не получилось (возможно из-за непонимания каких-то базовых моментов)
      Хотя и проблема в принципе решена (задержка допустима) - но хотелось бы разобраться в причинах.
      Буду благодарен любым вариантам, может что-то натолкнет на правильные мысли.
    • By Владимир Шум
      Возможно ли переделать питание охлаждающей подставки ноутбука из usb в 12 вольтовый источник питания?
    • By maxssau
      Продам адаптеры USB-I2S. 

       
      Возможности:
       
      стерео ввод/вывод PCM 16-32 бита, 44.1-384 кГц. Ввода DSD нет, как и драйверов для ввода DSD.
      вывод DSD в режиме DoP 64-128, в режиме Native 64-256. Native доступен в Linux без "хитрых" драйверов.
      Тактирование от платы ЦАП/АЦП, частоты 512 fs (22.5792/24.576 МГц). Теоретически возможно и 1024fs(скорости 768кГц и DSD512 Native), но это не опробовано.
      Гальваническая изоляция на Si8662/Si8640.
      Питание возможно как Self так и Bus Powered. В режиме Bus Powered необходимо самостоятельно позаботиться о мастерклоке, т.к. возможны сильные глюки при выключенном генераторе мастерклока.
       
      Тема: 
      срок изготовления 3-5 недель (сильно зависит от поставок процессоров).
      На данный момент полностью реализован интерфейс Legacy. Для отладки Native режима пока нет платы ЦАП, в процессе разработки, будет не раньше осени.
      Цена 6000 + пересылка (в среднем 250 р.).
    • By Dinisko
      Здравствуйте! Еще пол года назад просил помощи местных знатоков, но информации было много, а времени переварить ее нет. Я новенький. Хочу собрать простой и качественный предусилитель с питанием от USB (понятия качества разные, мне главное - чтоб не фонило и не искажало). Сначала мне посоветовали усилитель на одном транзисторе (который на схеме) и он мне понравился, но из-за пластмассового звучания решил добавить регулятор тембра, что сильно убавило громкость. После этого решил впилить еще и TDA2822, и здесь у меня много вопросов. Ужасно фонит и гудит. Если прикоснуться пальцем к любому из конденсаторов (не обязательно связанных с минусом) - гул пропадает, высокий шум остается. Ставлю на что, что конструкция пока находится на бреад борде и много соединительных проводов висят в воздухе и ловят наводки (землю, если что, старался разводить "звездой").
      Но все равно хотелось бы убедиться в надежности перед пайкой. Использование приспособления - включать музыку на телефоне и под нее играть на гитаре (классика, пьезозвукосниматель), возможность просто играть в любую компьютерную колонку ну и возможность подключить, скажем, микрофон к компу.
      Самый главный вопрос - можно ли избавиться от гула и шума, где схема неправильная, что не так? Усилитель на транзисторе сам по себе работает хорошо. ТДА собрана по даташиту, за исключением конденсатора по питанию (там 10, у меня - 22 мкф), темброблок вообще пассивный.
      Второй вопрос: Если добавить звук почти наполовину (потенциометр в центре схемы, обведен синей ручкой) - начинаются сильные искажения. Да и к тому же от касания к нему - сильный шум. Хочу заменить на два простых резистора, а регулятор громкости перекинуть на выход (нарисовал синей ручкой справа сбоку). Нужен ли резистор в качестве фильтра (который под синей ручкой на схеме?), а также нужен ли конденсатор (там же), если есть конденсатор перед темброблоком? Проверял и с ними и без них - разницы, вроде, никакой. Просто хочу знать у квалифицированных людей, повлияет ли это на звук после пайки.
      Также вопрос, не влияет ли на шумы конденсатор на выходе (в даташите его нет, но так как я буду подключать телефон, хочется обезопасить себя, да и без него пробовал - та же фигня с шумами.
      И еще под двумя вопросительными знаками номиналы конденсаторов. Играет ли это роль? (других у меня пока нет), нужно ли менять на те, которые в скобках?

      Спасибо большое за любую помощь!!!

×
×
  • Create New...