Проблемы с подключением XMega-A1 Xplained через USB

Я пытаюсь подключить плату Atmel XMega-A1 Xplained к RPi через USB и считывать данные с помощью Python (PySerial). ОС - Wheezy-Raspbian. Пробовав много разных вещей, у меня нет предложений. Пожалуйста, посмотрите, забыл ли я что-нибудь.

Мой вопрос действительно «почему я не могу открыть порт?»

Это мой код Python:

import serial
print "dev" #debug
dev = serial.Serial()
print "settings.." #debug
dev.port = '/dev/ttyACM0'
dev.baudrate = 9600
dev.parity = serial.PARITY_NONE
dev.bytesize = serial.EIGHTBITS
dev.stopbits = serial.STOPBITS_ONE

print "dev.open():" #debug
dev.open()
print "dev.open() = open!" #debug
value = None
while not value:
        value = dev.readline()
print value

Это дает мне эту открытую ошибку:

Traceback (most recent call last):
  File "usb2.py", line 20, in <module>
    dev.open()
  File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 278, in open
    raise SerialException("could not open port %s: %s" % (self._port, msg))
serial.serialutil.SerialException: could not open port /dev/ttyACM0: [Errno 5] Input/output error: '/dev/ttyACM0'

Я являюсь членом группы dialout

[email protected] ~/vs $ whoami
pi
[email protected] ~/vs $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev input

Запуск скрипта с или без sudo дает тот же результат. При подключении USB это результат dmesg:

[   57.604335] usb 1-1.2: new full-speed USB device number 5 using dwc_otg
[   57.707605] usb 1-1.2: New USB device found, idVendor=03eb, idProduct=2122
[   57.707634] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   57.707651] usb 1-1.2: Product: XPLAINED CDC
[   57.707663] usb 1-1.2: Manufacturer: ATMEL
[   57.707675] usb 1-1.2: SerialNumber: 056007012069
[   57.780344] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[   57.868478] usbcore: registered new interface driver cdc_acm
[   57.868509] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Я выполнил это и установил picocom. Выход «picocom /dev /ttyACM0»:

[email protected] ~/vs $ picocom /dev/ttyACM0
picocom v1.7

port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        :
omap is        :
emap is        : crcrlf,delbs,


FATAL: cannot open /dev/ttyACM0: Input/output error

Опять же, судо не имеет значения.

Это мой первый пост, поэтому дайте мне знать, если это слишком много. Спасибо!

2 голоса | спросил René Neim 12 PMpFri, 12 Apr 2013 21:12:01 +040012Friday 2013, 21:12:01

1 ответ


1

Я понял, что проблема связана с модулями драйверов. Когда я подключаю Xmega, он автоматически обнаруживает его как устройство USB ACM и загружает модуль драйвера cdc_acm.

Выгрузка модуля «cdc_acm» и загрузка «usbserial» модуля позволили решить проблему связи.

# Unloading cdc_acm module:
sudo rmmod cdc_acm
# Loading usbserial module:
sudo modprobe usbserial vendor=0x03eb product=0x2122

Поставщик и продукт передаются с помощью команды «lsusb -v». Порт больше не «/dev /ttyACM0», но «/dev /ttyUSB0».

Стоит отметить, что каждый раз, когда я подключал Xmega через USB, модуль cdc_acm автоматически загружался системой. Даже после разгрузки его с помощью «sudo rmmod cdc_acm». Решение этого не было разрешено моим временным кадром, поэтому я сделал выгрузку пакетного сценария cdc_acm, загрузив usbserial и запустив скрипт python. Он также выгружает usbserial в начале, на случай, если он уже запущен:

echo "Unloading usbserial module.."
sudo rmmod usbserial
echo "Unloading cdc-acm module.."
sudo rmmod cdc_acm
echo "Loading usbserial module.."
sudo modprobe usbserial vendor=0x03eb product=0x2122
echo "Done.."
python thescript.py

Ok. Поскольку ни у кого (в это время) не было никаких идей, вот как решена моя проблема. Обратите внимание, что у меня ограниченные навыки работы с Linux, и что это, скорее всего, не самый лучший метод (особенно не в конечном итоге). Однако он позволил мне сделать сообщение, в котором я нуждался.

ответил René Neim 31 Mayam13 2013, 02:11:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132