LINUX.ORG.RU

Соединил PC и Raspberry Pi2 через COM порт. Minicom работает только в одну сторону.

 , ,


0

1

Minicom на десктопе с Xubuntu читает сообщения, которые печатаются в minicom на Raspberry. В обратную сторону не работает. В чем может быть проблема?


Ответ на: комментарий от Morozz

На стороне PC cat /dev/ttyS0 нормально читает сообщения. На стороне RPi cat /dev/ttyAMA0 сразу завершается. Оба пользователя входят в группу dialout.

Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 1)
Ответ на: комментарий от anonymous

На обеих сторонах 8N1 - 8 бит данных, нет контроля четности, один стоп-бит. Скорость 9600 на обеих сторонах.

Мне не понятно, почему на RPi команда

cat /dev/ttyAMA0

не ждет данных как на PC, а сразу завершается.

Morozz
() автор топика
Ответ на: комментарий от Morozz

cat /dev/ttyAMA0 не ждет данных как на PC, а сразу завершается.

Не пробовал нормальным терминалом, типа minicom, вместо cat почитать?

Кабель, конечно, стоит прозвонить. Может там вообще провода не на те пины распаяны, а ты мучаешься. Ещё может быть так, что к преобразователю уровней неправильно подключаешься. Читай даташит, перепроверяй.

anonymous
()
Ответ на: комментарий от anonymous

Я же сразу написал, что использовал minicom. Это прямо в заголовке написано. Про неправильно распаяные провода, так же как и неправильно подключенный преобразователь - это вряд ли. Проверка с помощью обратной петли показывает, что все нормально с железом. Проблема скорее всего в настройках RPi.

Morozz
() автор топика

В чем может быть проблема?

Где-то неконтакт RX/TX/GND либо мусорные флаги/упр. символы в termios

Порты настроены одинаково

Посмотри выхлоп stty -F /dev/порт -g на обоих портах и сравни, иногда «должны быть одинаково», но нет.

cat /dev/ttyAMA0
не ждет данных как на PC, а сразу завершается.

Либо кто-то не в каноне (например в -icanon или сразу в raw), либо одно из двух :) Можно tail -f /dev/порт ждать например (но лучше конечно tail -f /dev/порт | hexdump)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

Аппаратный и программный контроль на обеих сторонах выключены.

Первый кабель работает по обратной петле, но через minicom ничего не передает. Второй кабель не работает по обратной петле, но передает в одну сторону.

Выхлоп stty -F /dev/tty… -a немного различается.

RPi выдает:

speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl -echoke

PC выдает:

speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; 
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 2)
Ответ на: комментарий от Morozz

Проверяй подключение ещё раз. Нарисуй схему вплоть до проводков, названий микросхем, пинов на материнке и малинке, где там какой tx/rx, какие уровни, напряжения, подтяжки, сопротивления.

Как ты проверяешь петлю? Какой командой? Преобразователь уровней в этой проверке участвует?

Просто не может быть такого, что петля работает на обоих устройствах, а передача не работает.

anonymous
()
Ответ на: комментарий от anonymous

Решил прозвонить кабели. На рисунке видно, как они сильно отличаются:

https://drive.google.com/file/d/1P4x393iqhPavK6tKTR4ZHjm1t_fqS4GC/view?usp=sharing

Корпуса на обоих кабелях соединены (прозваниваются).

Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 2)
Ответ на: комментарий от Morozz

Первый у меня видимо такой:

https://ipc2u.ru/upload/medialibrary/2e3/xDTE-DTE.jpg.pagespeed.ic.inpacLUE_A.webp

А мне кажется надо такой:

https://ipc2u.ru/upload/medialibrary/316/xim04.jpg.pagespeed.ic.VLY5U5_07t.webp

Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 2)
Ответ на: комментарий от Morozz

нет, а-ля нульмодем и нужен, хз как у тебя второй вообще работает, ибо не должен. Не то чтобы вообще он был нужен прям целиком, тебе надо соединить TX/RX (TX малинки в RX компа и наоборот) и землю. Кинь три проводка и посмотри, что будет. Петлю тоже проверь не кабелем, а проводком соединяй TX и RX одного девайса.

arkhnchul ★★
()
Ответ на: комментарий от arkhnchul

Все, заработало.

Маму с проводом взял от старой мышки, папа у меня был давно выдран из старой материнки, соединил 2,3,5 на маме с такими же на папе. Корпуса не соединял.

И все.

Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 1)
Ответ на: комментарий от Morozz

Вопрос!

Почему, когда я включаю аппаратный контроль передачи, передача снова идет только в одну сторону?

Просто на стороне PC в minicom иногда самопроизвольно печатается буква «t». Я думаю, что с контролем передачи этого не будет.

Morozz
() автор топика
Последнее исправление: Morozz (всего исправлений: 1)
Ответ на: комментарий от Morozz

Насколько я понимаю, малинка не поддерживает аппаратный контроль передачи. Можешь попробовать включить софтварный, но не думаю, что дело в этом. Возможно кто-то шлёт эту букву. А Может быть просто плохой контакт. Бывает, что при подключении кабеля всякий мусор считывается.

anonymous
()
Ответ на: комментарий от arkhnchul

Рандомный мусор скорее всего выдавал бы рандомные буквы. А здесь именно и только «t».

Может это действительно какой-нибудь процесс на малинке отправляет эту «t» по com-порту? Можно ли узнать, какой?

Morozz
() автор топика

Отключаешь от PC, замыкаешь TxD и RxD со стороны PC. Смотришь, есть ли в minicom на RPi эхо.

Подключаешь к PC отключаешь от RPi, замыкаешь TxD и RxD со стороны RPi. Смотришь, есть ли в minicom на PC эхо.

Если эхо есть и там и там - поздравляю, порты у тебя и там и там живые, и шнурок тоже, и дело в настройках портов.

Если эхо нету ни там ни там, значит шнурок/MAX232

Если эхо с одной стороны есть, с другой нету, то проверяй уровни, может у тебя MAX232 не вытягивает уровни RS232 писюка, и он ещё и капризный к уровням, например. И уровни TTL посмотри на RPi.

Ну и тупо ещё раз тщательно проверь - может просто пин на RPi перепутал, вот и не работает, а ты не видишь потому что глаз замылился.

Stanson ★★★★★
()
Ответ на: комментарий от Morozz

Может временно кто-то ещё открывает и закрывает файл?

А как буква печатается? Периодически, с чётким интервалом, непрерывно спамит, случайно, в конце передчи, вначале или рандомно, в том числе, когда и ничего не посылаешь? Скорость и чётность одинаковая на устройствах?

anonymous
()
Ответ на: комментарий от anonymous

Раз в минуту буква появляется. Вспомнил. У меня на этой малинке в 13-м году скрипт работал, обращался к com-порту и читал раз в минуту с контроллера инфу. Только там адаптер был COM-USB. Наверное это он.

Morozz
() автор топика