Raspberry Pi UART серийный не будет работать
Я пытаюсь отправить / получить данные по последовательному соединению (GPIO UART pins) между Raspberry Pi (модель B, raspian wheezy) и платой STM32F4.
настройки последовательного порта, я следовала всем шагов в ряде учебных пособий как: http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port
когда не удается получить соединение с платой STM32F4, я прочитал, что вы можете проверить последовательный порт локально на pi, если вы просто подключите TX, RX-контакты pi друг к другу, и он должен просто повторить введенные данные в minicom.
к сожалению, это не сработало.
настройки для ttyAMA0 в файлах "cmdline" и "inittab" в порядке. (как описано во многих учебниках)
и allso пробовал автонастройку лекарства от https://github.com/lurch/rpi-serial-console
подключение RX к TX pin на rpi напрямую не дает никакого выхода в minicom. Я allso попробовал с скриптом python, который повторяет заданный ввод. Кажется, ничего не работает, я вроде как заблудился.
команда запуска Minicom должна быть правильной(пробована с разными скоростями передачи):
root@raspberrypi:/home/jef# minicom -b 9600 -o -D /dev/ttyAMA0
OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyAMA0
в нижней части minicom он всегда показывает статус в автономном режиме:
CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.6.1 | VT102 | Offline
при проверке доступных последовательных портов с python nothinig swown:
python -m serial.tools.list_ports
no ports found
пользователь находится в группе dailout, так что не должно быть проблемой(пробовал как root и non root):
root@raspberrypi:/home/jef# id
uid=0(root) gid=0(root) groups=0(root),20(dialout),1001(indiecity)
проверка того, что последовательный порт больше не используется getty:
root@raspberrypi:/home/jef# ps aux | grep getty
root 2809 0.0 0.1 3740 804 tty1 Ss+ 10:36 0:00 /sbin/getty --noclear 38400 tty1
root 2810 0.0 0.1 3740 804 tty2 Ss+ 10:36 0:00 /sbin/getty 38400 tty2
root 2811 0.0 0.1 3740 804 tty3 Ss+ 10:36 0:00 /sbin/getty 38400 tty3
root 2812 0.0 0.1 3740 804 tty4 Ss+ 10:36 0:00 /sbin/getty 38400 tty4
root 2813 0.0 0.1 3740 804 tty5 Ss+ 10:36 0:00 /sbin/getty 38400 tty5
root 2814 0.0 0.1 3740 804 tty6 Ss+ 10:36 0:00 /sbin/getty 38400 tty6
root 3129 0.0 0.1 2012 624 pts/0 S+ 11:57 0:00 grep getty
Я проверил другие приложения, используя ttyAMA0, allso ничего:
root@raspberrypi:/home/jef# ps aux | grep ttyAMA0
root 3125 0.0 0.1 2012 628 pts/0 S+ 11:56 0:00 grep ttyAMA0
пользователи имеют правильные права доступа к последовательному порту:
root@raspberrypi:/home/jef# ls -l /dev/ttyAMA0
crw-rw---T 1 root dialout 204, 64 Dec 25 11:53 /dev/ttyAMA0
есть что-нибудь, что я пропустил? Я читал о 20 различных учебниках и блогах о том, как настроить последовательный порт, и я не могу любить то, что вызывает это. Не могли бы вы дать мне совет, который я мог бы найти, пожалуйста.
4 ответов
У меня есть Arduino, подключенный к моему последовательному порту Raspberry Pi через переключатель уровня (3.3 v до 5v), а также возникли проблемы с minicom. Я мог получить выход из Arduino в minicom, но я не мог ничего отправить, независимо от того, какие настройки я пытался. У меня также была точно такая же проблема с minicom, используя Arduino, подключенный к USB (/dev/ttyUSB0).
в конце концов я прибегнул к использованию базовой последовательной консоли python, установите pyserial с помощью pip (pip install pyserial) и выполните следующую команду:
python -m serial.tools.miniterm -p /dev/ttyAMA0 -e
Я только что прошел через что-то подобное сегодня. Я должен был установить minicom, чтобы отключить аппаратное управление, и цикл работал для меня, а также кросс-соединение 2 Raspis вместе над UARTs.
кроме того, я использую скорость 115200 buad в моей строке подключения TTYAMA0 minicom-b 115200-o-D /dev/ttyAMA0
Alt A
Z
O
настройка последовательного порта [enter]
F отключает аппаратное управление потоком
*спасти тех настройки и все, что вы вводите, должно отображаться на экране, но на самом деле передается через uarts.
мой нижний колонтитул minicom выглядит так же (просто diff скорость передачи данных, но показывает в автономном режиме, но работает)
CTRL-A Z для справки | 115200 8N1 | NOR | Minicom 2.5 | VT102 / Offline
Удачи!
вы можете запустить простой тест, поставив этот эскиз на Arduino:
#define SERIAL_BAUD 115200
void setup() {
//Init serial connection
Serial.begin(SERIAL_BAUD);
Serial.setTimeout(1);
}
void loop() {
if ( Serial.available() ) {
byte type = Serial.read();
Serial.write(type);
}
}
и подключите его, используя следующую диаграмму:
Примечание: убедитесь, что вы не подключите usb-кабель к Arduino. Он будет питаться от Raspberry Pi.
Примечание: Raspberry Pi работает на 3.3 V, поэтому вы должны быть уверены, что все, что вы подключаетесь к нему работает 3.3 V или имеет переключатель уровня. Смотрите дополнительную информацию про перевертыши уровень здесь. (спуститесь в логические уровни напряжения раздел) Sparkfun имеет некоторые базовые переключатели уровня (со схемами) здесь если вы хотите узнать больше.
затем вы можете установить и запустить screen
. Экран-это простой способ подключения к последовательному порту.
apt-get install screen
затем выполните следующее:
screen /dev/ttyAMA0 115200
экран будет отображаться пустым. Но, когда вы начнете печатать, вы заметите, что символы, которые вы пишете, возвращаются к вашему терминалу.
Примечание: если экран все еще пуст, вы должны дважды проверить соединения (индикатор питания на Arduino-хорошая вещь для проверки).
если вы сомневаетесь, вы можете увидеть весь мой пример здесь.
Thankt за советы, ребята. Я попробовал их, но они не решили проблему, кажется, что порт raspberry pi UART сокращен. Я подключаю его к другой raspberry pi (модель A), которую я заимствовал, и модель B только что вернула все отправленные символы, которые я отправил с моделью A, не отображая их локально.
Я купил новую модель B и протестировал порт AURT, и он работает так, как должен.
хотя плата STM32F4, которую я купил, должна быть allso 3.3 V кажется, что в какой-то момент он сломал мой raspi UART (или никогда не работал вообще). Теперь я буду использовать LLC в любом случае, когда я снова тестирую с доской STM32F4, чтобы убедиться, что я ничего не взорву.
Thx снова для Советов!