Не удается открыть UART на 40-контактном разъеме
Я работаю на доске объявлений Coral. Я пытаюсь использовать UART1_TXD/RXD, UART3_TXD/RXD на 40-контактном разъеме на плате разработчика. Я следую учебному пособию Подключение к контактам GPIO.
[serial_test.py]
from periphery import Serial
serial = Serial("/dev/ttyS0", 115200)
serial.write(b"Hello World!")
buf = serial.read(128, 0.5)
print("read %d bytes: _%s_" % (len(buf), buf))
serial.close()
Когда я тестирую плату:
$ python3 serial_test.py
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/periphery/serial.py", line 166, in _open
termios.tcsetattr(self._fd, termios.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
termios.error: (5, 'Input/output error')
Во время обработки вышеупомянутого исключения произошло другое исключение:
Traceback (most recent call last):
File "serial.py", line 5, in <module>
serial = Serial("/dev/ttyS0", 115200)
File "/usr/local/lib/python3.5/dist-packages/periphery/serial.py", line 60, in __init__
self._open(devpath, baudrate, databits, parity, stopbits, xonxoff, rtscts)
File "/usr/local/lib/python3.5/dist-packages/periphery/serial.py", line 168, in _open
raise SerialError(e.errno, "Setting serial port attributes: " + e.strerror)
AttributeError: 'error' object has no attribute 'errno'
$ stty -F /dev/ttyS0
stty: /dev/ttyS0: Input/output error
И остальные ttyS1~3 имеют тот же результат.
Какой правильный путь к устройству?
1 ответ
Решение
Два порта UART, представленные на плате разработчиков Coral (UART1 и UART3), соответствуют следующим дескрипторам файлов:
- UART1 →
/dev/ttymxc0
- UART3 →
/dev/ttymxc2
Вы можете получить доступ к этим портам через 40-контактный разъем ввода-вывода и через интерфейс последовательной консоли (мост USB-UART предоставляет два порта при подключении к рабочей станции).
Текущий выпуск Mendel (шеф-повар) идет со следующими оговорками:
- UART1 используется совместно с консолью последовательной отладки. Вам нужно будет отключить консоль в Linux, чтобы использовать этот порт с приложениями.
- UART3 не включен по умолчанию в базовом пакете. Вам необходимо обновить пакеты на вашей плате, чтобы включить это. Мы добавили инструкции к документации ввода / вывода.