toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 43 минуты назад, aaarrr сказал: А пин? Смысл идеи был в том, чтобы снять резистор и измерить падение диодов GND->SMBDATA и/или SMBDATA->VCC. вот прям на пинах микрочипа: 2.7, 2.7 (если не касаться ничего, только утечка и при касании чуть не в ноль падает.. ну или куда дотронешься) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaN 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба Можете взять вот этот пример модуля ядра для упровления GPIO с device tree, подредактировать только немного для пина сброса и попробовать: https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_kernel_space Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 5 минут назад, BaN сказал: Вот код самого драйвера: https://github.com/torvalds/linux/blob/master/drivers/usb/misc/usb251xb.c Там сначала получается дескриптор пина сброса: hub->gpio_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); if (PTR_ERR(hub->gpio_reset) == -EPROBE_DEFER) { return -EPROBE_DEFER; } else if (IS_ERR(hub->gpio_reset)) { err = PTR_ERR(hub->gpio_reset); dev_err(dev, "unable to request GPIO reset pin (%d)\n", err); return err; } И затем этот дескриптор используется для чтения/записи пина: static void usb251xb_reset(struct usb251xb *hub) { if (!hub->gpio_reset) return; i2c_lock_bus(hub->i2c->adapter, I2C_LOCK_SEGMENT); gpiod_set_value_cansleep(hub->gpio_reset, 1); usleep_range(1, 10); /* >=1us RESET_N asserted */ gpiod_set_value_cansleep(hub->gpio_reset, 0); /* wait for hub recovery/stabilization */ usleep_range(500, 750); /* >=500us after RESET_N deasserted */ i2c_unlock_bus(hub->i2c->adapter, I2C_LOCK_SEGMENT); } Возможно, управление пином в юзерспейсе через /sys/class/gpio/export итд и управление пином в драйвере даст разный результат. И в первом случае будет работать, а во втором - нет. я вот прям стучу кулаком об стол))) у меня сброс в HI, что соответствует нормальной работе микросхемы. Она _должна_ взлететь и, как минимум, определяться на I2C, если рабочая. Ну какие там кернел- или юзерспейсы? 58 минут назад, aaarrr сказал: А пин? Смысл идеи был в том, чтобы снять резистор и измерить падение диодов GND->SMBDATA и/или SMBDATA->VCC. С совсем пустыми, если не касаться ничего, то 2.7/2.7 где-то Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 1 hour ago, toweroff said: С совсем пустыми, если не касаться ничего, то 2.7/2.7 где-то Падение же. Тестером в режиме проверки диодов GND->SMBDATA. Должно быть 0.6В примерно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 1 минуту назад, aaarrr сказал: Падение же. Тестером в режиме проверки диодов GND->SMBDATA. Должно быть 0.6В примерно. приговариваем кролика к замене? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaN 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба Чтобы убрать возможность влияния драйвера, попробуйте так: sudo echo 88 > /sys/class/gpio/unexport sudo rmmod usb251xb sudo echo 88 > /sys/class/gpio/export sudo echo "out" > /sys/class/gpio/gpio88/direction sudo echo "0" > /sys/class/gpio/gpio88/value sudo echo "1" > /sys/class/gpio/gpio88/value sudo i2cdetect -y -r 1 sudo i2cset 1 0x21 0x00 0x12 sudo i2cdetect -y -r 1 sudo i2cget 1 0x21 0x00 Если хаб после этого не определится по I2C, то остается только припаять новую микросхему хаба. Встретил, что у кого-то не детектилось устройство по I2C, пока он не сделал запись в него: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/379901/i2c-io-expander-ic-not-detected Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба а, стоп. Это напряжение на ногах при питании хаба, это не падение на диодах _без_ питания. 8 минут назад, aaarrr сказал: Падение же. Тестером в режиме проверки диодов GND->SMBDATA. Должно быть 0.6В примерно. 0.59в 5 минут назад, BaN сказал: Чтобы убрать возможность влияния драйвера, попробуйте так: sudo echo 88 > /sys/class/gpio/unexport sudo rmmod usb251xb sudo echo 88 > /sys/class/gpio/export sudo echo "out" > /sys/class/gpio/gpio88/direction sudo echo "0" > /sys/class/gpio/gpio88/value sudo echo "1" > /sys/class/gpio/gpio88/value sudo i2cdetect -y -r 1 sudo i2cset 1 0x21 0x00 0x12 sudo i2cdetect -y -r 1 sudo i2cget 1 0x21 0x00 Если хаб после этого не определится по I2C, то остается только припаять новую микросхему хаба. Встретил, что у кого-то не детектилось устройство по I2C, пока он не сделал запись в него: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/379901/i2c-io-expander-ic-not-detected видел и с -r, и без нихт орбайтн ну, вроде, кусаный я и железом, и софтом) кроме кролика некому быть убитым, вроде как скажите насчёт дерева - там-то правильно, чтобы потом не поднимать тему и не дёргать никого? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 10 minutes ago, toweroff said: приговариваем кролика к замене? Вряд ли он дохлый все же - в прицельно умерший i2c не верится совсем. Я бы в таком случае еще другой i2c хост попробовал, если есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 3 минуты назад, aaarrr сказал: Вряд ли он дохлый все же - в прицельно умерший i2c не верится совсем. Я бы в таком случае еще другой i2c хост попробовал, если есть. ну дороги не хочется рвать от слова совсем на единственном прототипе( да и видит же на 100кГц хост епром, я сначала вообще зарядил 400, потом уменьшил до 100 и заменил с 1.5кОм на 10кОм подтяжки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BaN 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 19 minutes ago, toweroff said: ну дороги не хочется рвать от слова совсем на единственном прототипе( Можно и не рвать дороги, если у вас есть под рукой какой-нибудь i2c хост, например, программатор ch341а или подобный, то достаточно убрать резисторы R122 и R124 на линиях SMBCLK/SMBDATA и подсоединить к i2c хосту SMBCLK и SMBDATA, а ресет переключать как раньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 24 minutes ago, toweroff said: ну дороги не хочется рвать от слова совсем на единственном прототипе( Резисторы же! Только i2c подключить. 26 minutes ago, toweroff said: заменил с 1.5кОм на 10кОм подтяжки Многовато. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 6 минут назад, BaN сказал: Можно и не рвать дороги, если у вас есть под рукой какой-нибудь i2c хост, например, программатор ch341а или подобный, то достаточно убрать резисторы R122 и R124 на линиях SMBCLK/SMBDATA и подсоединить к i2c хосту SMBCLK и SMBDATA, а ресет переключать как раньше. под руками нет, в самой шине уверен. Смысл? 4 минуты назад, aaarrr сказал: Резисторы же! Только i2c подключить. Многовато. нуу... можно дотянуть к I2C0, но результат-то... думаю, не изменится в текущем варианте то есть многовато 10кОм для 100кГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 3 minutes ago, toweroff said: Смысл? "Трясти надо!" :) А если серьёзно, то I2C иногда преподносит сюрпризы. Можно еще софтовый I2C запустить на тех же выводах. 5 minutes ago, toweroff said: то есть многовато для 100кГц? Вообще, да. Но работать должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 22 октября, 2021 Опубликовано 22 октября, 2021 · Жалоба 2 минуты назад, aaarrr сказал: "Трясти надо!" :) А если серьёзно, то I2C иногда преподносит сюрпризы. Можно еще софтовый I2C запустить на тех же выводах. Вообще, да. Но работать должно. нунифигасе, Каприз Токыч... на 100 всегда видел 10кОм, на 400 - 2.2кОм, бигли ставят 1.5кОм надо покопать, но... я понимаю, у кролика ноги определяют конфигурацию, но не так же нежно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 23 октября, 2021 Опубликовано 23 октября, 2021 · Жалоба А если попробовать через gpio интерфейс как здесь описано:https://www.emcraft.com/stm32f429discovery/controlling-gpio-from-linux-user-space Если получится подергать ножку, то с конфигурацией или драйвером проблема. Участвуют две компоненты: 1. Драйвер должен сконфигурировать режим и направление, а также приимать сигналы интерпретировать их и воплощать в жизнь (в данном случае выставлять сигнал на ножке). 2. device tree дает информацию как сконфигурировать и какую ножку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться