Как получить доступ к устройству SMBus (i2c) через, микросхему FT232RL (USB) и MAX32213-v.
Обратите внимание, что я уже потратил пару дней на изучение обеих ошибокниже и чипы.
Я работаю: Linux saturn 4.15.0-45-generic # 48 ~ 16.04.1-Ubuntu SMP Вт 29 января 18:03:48 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux
и Python3.5.2
У меня есть устройство SMBus (/ dev / i2c- *) BP (кровяное давление) с кабелем, имеющим 2 встроенных чипа: 1. FT232RL-TUBE 768-1306-ND - Описание: IC USB FS SERIAL UART 28-SSOP 2. От MAX32213-V до 5,5-V - драйвер и приемник линии RS-232
Для использования устройства BP, 2 вышеупомянутых чипанеобходимо выполнить двунаправленную трансляцию протокола.
Обратите внимание, что когда я отсоединяю USB-кабель от моего ноутбука, я получаю подробные записи в / var / log / syslog.НО, когда я отключаю телефонную розетку {да, телефонную розетку} от устройства BP, я не получаю записей в / var / log / syslog.Поэтому я пришел к выводу, что в этот момент связь блокируется микросхемами в кабеле.
lsusb выдает: Шина 001 Устройство 016: ID 0dbc: 0003 Медицинский и последовательный кабель A & D [И интеллектуальный кабель]
с: SUBSYSTEM == "usb", ATTRS {idVendor} == "0dbc", ATTRS {idProduct} == "0003", SYMLINK + = "serial / bp" в /etc/udev/rules.d/99-usb-serial.rules Я получаю / dev / bus / usb / 001/016 как символическую ссылку на / dev / serial / bp, после запуска sudo udevadm control --reload-rules && sudo udevadm trigger
cat </ dev / bus / usb / 001/016 выдает следующий вывод: </p>
root @ foobar: / dev # cat </ dev / bus / usb / 001/016 |od -h 0000000 0112 0200 0000 0800 0dbc 0003 0600 0201 0000020 0103 0209 0020 0101 8000 092d 0004 0200 0000040 ffff 02ff 0507 0281 0040 0700 0205 4002 0000060 0000 0000062 root @ foobar: / dev # </p>
Обратите внимание, что я получаюидентификаторы idVendor и idProduct в первой строке вывода.
Кажется, я разговариваю с FT232RL .... USB FS SERIAL UART.Кажется, именно отсюда исходят идентификаторы производителя и продукта.
Когда я пытаюсь прочитать с порта usb код python3:
из последовательного импорта Serial
handle = Serial (порт = '/ dev / bus / usb / 001/016', скорость передачи данных = 9600, время ожидания = 3)
bytes_in = handle.readline () string_in = bytes_in.decode ("utf-8")
print (" string_in = ", string_in)
Я получаю:
termios.error: (25, 'Неправильный ioctl для устройства') в трассировке.
Эти вопросы приходят на ум:
Как cat фактически инициирует чтение?
Передают ли встроенные чипы мои команды, включая cat, через 2 чипа фактическому устройству BP?(Я сомневаюсь, что это происходит, учитывая вывод lsusb, но стоит спросить.)
Как преднамеренно перевести "FT232RL .... USB FS SERIAL UART" в режим прохода через.
Как подтвердить состояние микросхемы FT232RL?Я нашел библиотеку для FT232RL на веб-сайте производителя.Но я работаю на машине AMD, и у них, похоже, нет библиотеки AMD.
СПАСИБО всем, кто откликнулся!
unixprgrmr01