Форум программистов, компьютерный форум, киберфорум
Eddy_Em
Войти
Регистрация
Восстановить пароль

Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI

Запись от Eddy_Em размещена 18.02.2026 в 23:22. Обновил(-а) Eddy_Em 18.02.2026 в 23:33
Показов 4593 Комментарии 0
Метки electronics, stm32

Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:

Основана на STM32F303RBT6.
На борту пять последовательных интерфейсов (три RS-485, два RS-232, один CAN и один SSI; перемычками можно последний 232 вместо SPI подключить к выходу на датчик, будет RS-422 с нестандартной распиновкой DB9). Все интерфейсы гальванически развязаны.
Вчера закончил отладку последовательных. Проверял на китайском "свистке" на основе CH340, поэтому быстрей 2Мбод скорость не вышло установить.
Пока тестировал 485, после того, как проверил 232, заметил, что MAX3232 сильно греется. Похоже, опять достался "паленый" чип с алиэкспресса (я на такие уже натыкался): чуть поработает, потом "уходит в себя" и перегревается. Жрет столько, что даже DC-DC нагрелась. Перепаяю, может другой чип будет получше.
Т.к. ISOxxxx на 232 я не нашел, то сделал проще: развязал обычными оптопарами (H11L1) сигналы U[S]ARTов, а дальше уже их отправил на MAX3232.
Сегодня добавил CAN, но еще не отладил. У него свой, "стандартный" для меня протокол. Легким движением руки он может быть переделан под протокол, который понимает "can festival". Но у меня уже столько железок на моем протоколе работает, что менять не хочу.
На плате есть перемычка "Config mode". Если ее снять, то при включении последний интерфейс (SSI) станет конфигурационным интерфейсом, и можно выполнить кое-какие настройки. Пока настроек немного: скорость CAN по умолчанию, да названия USB интерфейсов (поля iInterface). Простой udev-скрипт позволяет различать интерфейсы при подключении:
Code
1
2
3
ACTION=="add", DRIVERS=="usb", ENV{USB_IDS}="%s{idVendor}:%s{idProduct}"
ACTION=="add", ENV{USB_IDS}=="067b:2303", ATTRS{interface}=="?*", PROGRAM="/bin/bash -c \"ls /dev | grep $attr{interface} | wc -l \"", SYMLINK+="$attr{interface}%c", MODE="0666", GROUP="tty"
ACTION=="add", ENV{USB_IDS}=="0483:5740", ATTRS{interface}=="?*", PROGRAM="/bin/bash -c \"ls /dev | grep $attr{interface} | wc -l \"", SYMLINK+="$attr{interface}%c", MODE="0666", GROUP="tty"
По умолчанию это /dev/usbserialX.x (X - индекс интерфейса, от 0 до 4, x - номер подключенного устройства, если их несколько), /dev/usbSPIx и /dev/usbCANx. Настройки сохраняются во флеш-памяти МК (эмуляция EEPROM).
При сборке в отладочном режиме в "конфигурационный интерфейс" еще и сыплется весь отладочный выхлоп.
Пока что размер бинарника - 17кБ.
Код для USB-CDC практически полностью мой. Никаких калокубов, естественно, не использую. Предельная скорость USB около 6-7Мбод (таки еще и МК должен успевать что-то делать). По идее, если сделать двойную буферизацию, скорость можно увеличить. Но пока и так сойдет.
Миниатюры
Нажмите на изображение для увеличения
Название: board.jpg
Просмотров: 10604
Размер:	254.4 Кб
ID:	11617  
Метки electronics, stm32
Размещено в Железо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru