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);
  }

}

и подключите его, используя следующую диаграмму:

Wiring Arduino to Raspberry Pi

Примечание: убедитесь, что вы не подключите 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 снова для Советов!