USB-I2C на STM32F103

Nov 24, 2024 17:04

Ковыряю помаленьку. Собрал модуль ядра для i2c-tiny-usb, проверю на "заглушке". Потом добавлю оставшийся функционал, чтобы работало и I2C. Зачем-то там инициировали interrupt endpoing, но она вообще не используется.
Однако, как-то не нравится мне эта побайтовая работа. В исходниках нашел еще и модуль robotfuzz-osif - здесь все более вменяемо, можно читать-писать + есть вызов установки скорости. Правда, автор модуля ядра тоже тяп-ляп навалял: большие объемы не прочитаешь (хотя, судя по командам железки, там есть такая возможность: читать-читать, а потом отправить STOP), да еще и гвоздями прибита скорость: в самом модуле выставляется только 100кГц - и больше ничего (а могли бы параметром модуля выделить; я, конечно, могу модуль переделать, как надо, но кто его поддерживать будет? Ну, а т.к. Линус оказался нациком, то никаких коммитов от российских разработчиков он принимать не будет).
Ладно, пока что tiny добью, а потом, если будет желание, попробую и этот robotfuzz реализовать.

Правда, меня ждало охрененное разочарование: STM32 жестко привязывает номер после энумерации, поэтому играть роль виртуального хаба (чтобы на борту было несколько устройств с разными VID/PID) не может. Потом, конечно, можно будет попробовать - а не выйдет ли просто сделать составное устройство. Правда, ХЗ, каким чертом привязать к этому VID/PID еще и модуль pl2303, чтобы помимо интерфейса I2C было и всякое разное.

А тем временем на алике обнаружил cp2112. Полистал исходник модуля ядра - оно точно так же создает устройство /dev/i2c-xxx, с которым можно работать, как и с прочими шинами I2C. Купил, пощупаю. Думаю, это будет самым простым вариантом аппаратно что-нибудь I2C'шное к компьютеру подключить. Ну, а с составным устройством когда-нибудь потом поиграюсь, хоть и надежды особой нет.

железяки, stm32

Previous post Next post
Up