Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Леонид Каганов ([info]lleokaganov)
@ 2026-03-12 00:40:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Уже неделю бьюсь с RS485
взято отсюда: https://lleo.me/dnevnik/2026/03/11_rs485

UPD: Друзья! Особенно Алексе Семеняка, id, OlegY, Харитонис Устинович, Sergey Nazaryev и stream! Спасибо вам огромное, спасли! Всё заработало! Вы великие и мудрые. Реально дело было даже не в DI-сигналах, а тупо в настройках порта. При 9600 8N1 всё прекрасно читалось (что меня ставило в тупик), но не писалось, потому что надо было 9600 8E1! Добавил на https://lleo.me/uart опции настроек порта, поигрался, и отлично прочлась батарея!




Было:


Мы из столбов и толстых перекладин
За складом оборудовали зал.
Там Гамлета играл ефрейтор Дядин
И в муках руки кверху простирал.

Евгений Винокуров

Вторую неделю бьюсь с RS485 и не могу победить. Есть китайские мопеды (в количестве), у них процессор с дисплеем на приборке и батарея, имеющая три сигнальных провода rs485: черный — земля, белый — А, серый (или синий) — B. Землю можно не подключать, но конечно пробую по-всякому. Подключаю провода к свистку rs485-uart, читаю посылки. Расшифровываю протокол, он оказывается прост и довольно стандартен (позже я даже нашел, что его реверснули и китайцы и получили то же):

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Нарисовал себе читалку-инструментик прямо на вебе (благо Chrome десктопа позволяет работать с UART): https://lleo.me/uart/ Подслушиваю разговор мопеда с батареей. На запрос мопеда 31CE 02 (чтение) с данными 02 2B или 2D 37 не отвечает никто, если батареи нет, а если есть — она отвечает 31CE 82 с инфо (включая серийник) и состоянием (процент заряда, напряжение, ток, температура, вольтаж на каждой банке). Я знаю о ней всё:

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

В общем, посылки получаю, расшифровываю, формат известен, данные правильные, контрольные суммы сходятся, и всё это точно RS485, не RS232, не CAN и не LIN. Казалось бы, могу и сам отправлять их в линию, и меня услышат. Но хрен там — меня не слышат. Слева — посылки нормального человека, справа — с моего свистка:

Нет положенных в rs485 размахов аплитуды, каждый канал уходит в минус только до средней линии. Над этой загадкой я бился, потом подсказали друзья. Мой китайский свисток в принципе раньше работал мастером нормально, но если он не мастер и линия подтянута, работать нормально не сможет. В драйвере rs485 на микросхеме MAX458 есть сигнал DT (ноги 2,3), который переключает ее в прием/передача. Этим должен управлять комп, но китайцы делают «автораспознавание»: тупо завели TX через транзистор. Поэтому когда 1, MAX458 честно передает 1, а когда 0, передача выключается, сигналы падают к уровням тишины, и 0 не отрабатывается по полной амплитуды. Ставят эту дурацкую схему, разумеется, как в дешевые китайские свистки, так и во многие дорогие (традиционный херушка на воротничок любителям ориентироваться в мире суеверий по цене).

Ну ок, не вопрос. Я выяснил, что вторая микросхема свистка uart CH340C имеет выводы RTS и DTR (не все варианты CH340 их имеют), припаял с ножки 14 резистор 10k и выставляю с компа RTS принудительно на время передачи (JS в Chrome и это умеет).

Результат — теперь мои сигналы стали идеальными:

Казалось бы, проблема решена? Но нет, батарея все равно меня не слышит и отвечать не хочет :) Все остальное, разумеется, уже перепробовал: землю, полярности A/B, тайминги, 120 Ом терминатор, линию никто не глушит, посылки не накладываются, сами на 100% соответствуют формату, и их последовательность тоже (пробовал слать в батарею и вообще всё, что слышно в мопеде). Причем, батарея посылку слышит — она явно «просыпается» по первой же посылке: уровни тишины линии сдвигаются на 0.5V вверх, через какое-то время засыпает снова. Но отвечать мне считает ниже своего достоинства. Больше идей у меня пока нет. Может, у вас есть?

Бывало, выйдет, головой поникнет,
Как надо, руки скорбно сложит, но
Лишь только «быть или не быть?» воскликнет,
Всем почему-то делалось смешно.

Евгений Винокуров



(Читать комментарии)

Добавить комментарий:

Как:
( )анонимно- этот пользователь отключил возможность писать комментарии анонимно
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Имя пользователя:
Пароль:
Тема:
HTML нельзя использовать в теме сообщения
Сообщение:



Обратите внимание! Этот пользователь включил опцию сохранения IP-адресов пишущих комментарии к его дневнику.