Uart через нестандартные пины

Тема в разделе "Raspberry Pi", создана пользователем Garamond, 20 мар 2022.

  1. Garamond

    Garamond Нуб

    Привет всем.
    Есть проект, в котором к Малине надо подключить несколько устройств, сливающих в нее инфу по UART протоколу. Заказчик хочет это делать через GPIO. Для одного устройства, это, понятное дело, не проблема. Но таких устройств должно быть 4. Т.е. 4 устройства должны общаться с малиной чрез GPIO, используя протокол UART.
    Подскажите, пожалуйста, как можно реализовать этот протокол на нестандартных пинах?

    Заранее благодарю.
     
  2. Vovka

    Vovka Гик

    Есть же программный UART
     
  3. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1. В случае "тупого" решения - в Малине надо запустить 4 медведя СофтСериала и задействовать 8 пинов. С пинами ладно, но будут ли работать сразу 4 Сериала - не знаю. Малин не держим. Может быть в цикле - закрывать Сериал, менять пины и открывать снова !?
    2. Каковы по "умственным" способностям эти устройства ? Если тупые передатчики, то только через аппаратный коммутатор (мультиплексор) и поочередный прием. Задействовать придется 4 пина. Два - Сериал, два - выбор канала мультиплексора. Придется спаять плату мультиплексора.
    3. Если устройства интеллектуальные и можно "влезть им в душу" - тогда организовывать шину вроде Далласовской 1Wire. Задействуете 1 (!!!) пин. Библа "pjon".
     
    Последнее редактирование: 20 мар 2022
  4. parovoZZ

    parovoZZ Гуру

    так какой протокол? Про него ни слова.
    Сомневаюсь, что на асинхронной ОС можно реализовать асинхронный обмен. Только внешний МК.
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    ТС говорит про UART. Коммуникационный протокол. Остальное нас не касается.
     
  6. parovoZZ

    parovoZZ Гуру

    UART - это интерфейс.
     
  7. Igor68

    Igor68 Гуру

    Круто! А никто не подумал, что USB-SERIAL можно подключить довольно много... как раз к USB... и будет /dev/ttyUSB0; /dev/ttyUSB1 и далее. А вообще-то для множества устройств по 2-м проводам есть Modbus (RS-485)... он как раз для того и придуман.

    ЗЫ: программу для каждого сериал можно организовать с применением потоков/процессов. Я лично люблю отдельные процессы, ну на крайний случай отделяемые потоки.
     
    Последнее редактирование: 20 мар 2022
  8. Garamond

    Garamond Нуб

    Спасибо всем ответившим.
    Устройства - RFID сканнеры. Задача: считывать метки по каждому из сканнеров и писать эти метки в текстовый файл. Потом эти файлы читаются и обрабатываются другой прогой. Принцип: одна считанная метка -> один файл. Сканнеры общаются через RS-232 и, понятное дело, могут срабатывать одновременно и не должны мешать друг другу.

    Я предлагал заказчику сделать по USB, через переходник USB-RS232. Хочет именно через GPIO, причем говорит, что видел такую реализацию.

    Спасибо, изучу вопрос. Может это ОНО и есть.

    Вот тут: https://stackoverflow.com/questions/55899490/serial-communication-with-any-gpio-of-raspberry-pi парнишка реализовал чтение пинов, но, похоже, из-за проблем с синхронизацией у него работало не ахти.

    Еще раз спасибо за идеи и участие.
     
  9. Igor68

    Igor68 Гуру

    Хоть я и не танцую, но танцы мне нравятся больше чем пляски с бубном:)
     
  10. b707

    b707 Гуру

    а что, к малине можно подключить сколь угодно устройств USB и они все будут одновременно доступны?
     
  11. parovoZZ

    parovoZZ Гуру

    каждое физическое устройство в linux отображается в файл.
     
  12. Igor68

    Igor68 Гуру

    Сколько не знаю, но одновременно работают... как и обычные /dev/ttyXXX

    ЗЫ: я испытывал два - больше нету в наличии.
     
  13. Igor68

    Igor68 Гуру

    образно... потому как "файл устройства". И доступ к такому файлу, как к устройству. А в винде так же: "открыть файл COM1" в студии на си.
    Только в винде если зависло, то кирдык до ресета.