В догонку по кернельному модулю для переходника I2C-USB

Nov 16, 2024 18:10

Попробовал собрать готовый, который для ch341a. Куча ошибок, да оно и понятно: судя по дате, еще, небось, для четвертого ядра писали. На шестом не работает ( Read more... )

рукожопие, железяки

Leave a comment

Comments 7

ardelfi November 16 2024, 15:52:58 UTC
> самопальный протокол

Вот это наш метод. Гадость гадская этот ваш айтуси, зомби-мутант. Даже в спецификацию записано что устройство может зависнуть, и тогда циклируйте шине питание (ачотакова да). В спецификации записана аксиома что мастер формирует тактовую, а потом улучшатели дописали что устройство может закоротить линию тактовой на землю неограниченно долго, потому что оно тупое и не успевает что-то там, потому вся шина подождёт. Этот стандарт был нормальным в своей первой версии, которую потом извратили до безумия. Безумие - это версия с тактовой до 3.4МГц. В общем, чем проще метод использования этого зомби-мутанта, тем меньше нервов будет потрачено - возможно к этой мысли пришли и авторы вашего кода.

Когда делал свой модуль айтуси для плиса, начал с мысли "сделаю по полной программе". По мере делания и усложнения автомата, пришёл к мысли "да гори оно огнём! резать! непременно резать!"

Reply

eddy_em November 16 2024, 16:03:41 UTC
Питание дергать - не проблема, хоть каждый раз при инициализации. Можно вообще даже завести отдельную команду.
Но хочется иметь "ядреную" поддержку. Чтобы просто воткнул свое устройство, и у тебя /dev/i2c-xxx появилось, с которым работай теми же методами, что и на одноплатнике. Ну и в ядре есть модули для некоторых попсовых вещей, того же BME280 - подключил к переходнику, воткнул в комп, инициировал устройство - бдыщь, кернельный модуль обслуживает, тебе ничего самому писать не надо…

А что I2C - адское говнище, я согласен. Но, с другой стороны, аналога ведь вообще нет! Как сотню устройств посадить на одну шину, не ведя к каждому отдельный кабель CS? Не на CAN же всю эту примитивщину вешать, в конце-то концов!

Reply

ardelfi November 16 2024, 16:26:41 UTC
Аналоги есть, но похоже все сделали выводы и придумали самопальные шины и протоколы - CAN тому пример, других нишевых и самопальных тоже полно. Айтуси остался лишь на всеобщей привычке: он был, потому есть, потому продолжают ставить в новые чипы. Выбора же нет: вот нужный чип, и у него айтуси или спай, или просто айтуси - выбирай из одного ( ... )

Reply

eddy_em November 16 2024, 17:03:40 UTC
Ну, были и попытки сделать "короткую физику" тех же CAN или 485 на одном проводе. Получился убогий 1-wire, который вообще ничем аппаратно не поддерживается, и народ с ним страдает по сей день…
Хотя, казалось бы: в чем проблема это аппаратно реализовать? Просто добавь ты к выходам Rx/Tx CAN'а низкоуровневый преобразователь на один провод, а не на витуху. Нет никого в шине - подтяжка к питанию, начали передавать единичку - прижали к нулю… Думаю, появились бы и дискретные преобразователи из этого в дифференциальный сигнал. То бишь, хочешь на небольшом расстоянии работать - используй голое подсоединение. Нужно увеличить - ставь мелкосхемку и выходи на общую витуху.
А тут еще и оптика подоспела, которая сейчас значительно подешевела. Разве что очень тяжело на оптике шину сделать: каждый узел по сути будет ретранслятором, и если помрет, то и дальнейший сегмент шины отвалится…

Reply


Leave a comment

Up