Покуда автогидом заняться не могу (его элементарно все никак не соберут до окончательного варианта, чтобы я мог уже заняться управлением моторчиками и отладкой алгоритмов на стенде), разработал очередную железяку для СУ БТА:
контроллер микрометра на основе холловского датчика "Novotechnik TFD-4000". Нужны эти железки для того, чтобы измерять толщину масляной пленки в азимутальном подшипнике БТА (минимум нужно в трех опорах измерять, но лучше во всех шести).
Датчик имеет аналоговый вход: от 0.25В на нуле до 4.75В на 14мм. Если магнит вне зоны Холла, на выходе 0 (удобно для детектирования проблем с магнитом). Сам датчик 12-битный. И тут опять та же дурь, как в случае с аналоговыми видеокамерами: сначала полученные с холла данные обрабатывает АЦП, а потом ЦАП наружу выдает напряжение. Почему нельзя было их сделать на цифровом интерфейсе - загадка. Вот, собственно, каждая такая маленькая плата и нужна для того, чтобы по CAN-шине передавать данные измерений. Использую встроенный АЦП STM32F103C6T6, а т.к. диапазон выхода с датчика выше, то делитель 1:2 на резисторах.
Паяю:
Пока "пап" type-C у меня нет, могу лишь испытать, как работает USB. А вот как приедут разъемы, буду CAN проверять. В принципе, там команд-то раз, два - и обчелся. А выдавал бы датчик сразу CAN или хотя бы RS-485 (пусть даже дебильный модбас, всяко сразу можно было бы к компу подключить), не пришлось бы почти неделю на эту фитюлину тратить. Вот так плата выглядит:
Уже когда собрался датчик припаивать, обнаружил, что я забыл нарисовать делитель, поэтому на соплях спаял временный. Все равно это - прототип (на станке отфрезеровали, лень мне заморачиваться с фоторезистом, да и "УФ"-осветитель что-то наполовину помер, надо прозванивать, какой из диодов сдох).
А дома намедни возился с "новой концепцией" USB: захотел выделить базисные файлы, общие для всего, а конкретное устройство задавать при помощи descriptors.c и usbdev.c (в первом, как следует из названия, дескрипторы и функция передачи дескрипторов, а во втором - специфичная для конкретного устройства часть кода). Но что-то "лыжи не едут": вроде, просто отрефакторил код для USB-CDC, а фигвам: поначалу, пока у меня был неправильный дескриптор, оно даже определялось (как USB-2C), а когда поменял все в соответствии с PL2303, даже энумерацию почему-то не стало проходить. Нужно таки подключать CH340, да отлаживать через UART на 3Мбодах.