Jump to content

    
Sign in to follow this  
toweroff

USB хаб на плате -- сброс

Recommended Posts

43 минуты назад, aaarrr сказал:

А пин? Смысл идеи был в том, чтобы снять резистор и измерить падение диодов GND->SMBDATA и/или SMBDATA->VCC.

вот прям на пинах микрочипа: 2.7, 2.7 (если не касаться ничего, только утечка и при касании чуть не в ноль падает.. ну или куда дотронешься)
 

Share this post


Link to post
Share on other sites

Можете взять вот этот пример модуля ядра для упровления GPIO с device tree, подредактировать только немного для пина сброса и попробовать:

https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_kernel_space

 

Share this post


Link to post
Share on other sites
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 где-то

Share this post


Link to post
Share on other sites
1 hour ago, toweroff said:

С совсем пустыми, если не касаться ничего, то 2.7/2.7 где-то

Падение же. Тестером в режиме проверки диодов GND->SMBDATA. Должно быть 0.6В примерно.

Share this post


Link to post
Share on other sites
1 минуту назад, aaarrr сказал:

Падение же. Тестером в режиме проверки диодов GND->SMBDATA. Должно быть 0.6В примерно.

приговариваем кролика к замене?

Share this post


Link to post
Share on other sites

Чтобы убрать возможность влияния драйвера, попробуйте так:

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

Share this post


Link to post
Share on other sites

а, стоп. Это напряжение на ногах при питании хаба, это не падение на диодах _без_ питания.

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, и без нихт орбайтн

ну, вроде, кусаный я и железом, и софтом) кроме кролика некому быть убитым, вроде как
скажите насчёт дерева - там-то правильно, чтобы потом не поднимать тему и не дёргать никого?

Share this post


Link to post
Share on other sites
10 minutes ago, toweroff said:

приговариваем кролика к замене?

Вряд ли он дохлый все же - в прицельно умерший i2c не верится совсем. Я бы в таком случае еще другой i2c хост попробовал, если есть.

Share this post


Link to post
Share on other sites
3 минуты назад, aaarrr сказал:

Вряд ли он дохлый все же - в прицельно умерший i2c не верится совсем. Я бы в таком случае еще другой i2c хост попробовал, если есть.

ну дороги не хочется рвать от слова совсем на единственном прототипе(
да и видит же на 100кГц хост епром, я сначала вообще зарядил 400, потом уменьшил до 100 и заменил с 1.5кОм на 10кОм подтяжки

Share this post


Link to post
Share on other sites
19 minutes ago, toweroff said:

ну дороги не хочется рвать от слова совсем на единственном прототипе(

Можно и не рвать дороги, если у вас есть под рукой какой-нибудь i2c хост, например, программатор ch341а или подобный, то достаточно убрать резисторы R122 и R124 на линиях SMBCLK/SMBDATA и подсоединить к i2c хосту SMBCLK и SMBDATA, а ресет переключать как раньше.
 

Share this post


Link to post
Share on other sites
24 minutes ago, toweroff said:

ну дороги не хочется рвать от слова совсем на единственном прототипе(

Резисторы же! Только i2c подключить.

 

26 minutes ago, toweroff said:

заменил с 1.5кОм на 10кОм подтяжки

Многовато.

Share this post


Link to post
Share on other sites
6 минут назад, BaN сказал:

Можно и не рвать дороги, если у вас есть под рукой какой-нибудь i2c хост, например, программатор ch341а или подобный, то достаточно убрать резисторы R122 и R124 на линиях SMBCLK/SMBDATA и подсоединить к i2c хосту SMBCLK и SMBDATA, а ресет переключать как раньше.
 

под руками нет, в самой шине уверен. Смысл?

4 минуты назад, aaarrr сказал:

Резисторы же! Только i2c подключить.

 

Многовато.

нуу... можно дотянуть к I2C0, но результат-то... думаю, не изменится в текущем варианте
то есть многовато 10кОм для 100кГц?

Share this post


Link to post
Share on other sites
3 minutes ago, toweroff said:

Смысл?

"Трясти надо!" :) А если серьёзно, то I2C иногда преподносит сюрпризы. Можно еще софтовый I2C запустить на тех же выводах.

 

5 minutes ago, toweroff said:

то есть многовато для 100кГц?

Вообще, да. Но работать должно.

Share this post


Link to post
Share on other sites
2 минуты назад, aaarrr сказал:

"Трясти надо!" :) А если серьёзно, то I2C иногда преподносит сюрпризы. Можно еще софтовый I2C запустить на тех же выводах.

 

Вообще, да. Но работать должно.

нунифигасе, Каприз Токыч...
на 100 всегда видел 10кОм, на 400 - 2.2кОм, бигли ставят 1.5кОм
надо покопать, но... я понимаю, у кролика ноги определяют конфигурацию, но не так же нежно

Share this post


Link to post
Share on other sites

А если попробовать через gpio интерфейс как здесь описано:

https://www.emcraft.com/stm32f429discovery/controlling-gpio-from-linux-user-space
 

Если получится подергать ножку, то с конфигурацией или драйвером проблема.

Участвуют две компоненты:
1. Драйвер должен сконфигурировать режим и направление, а также приимать сигналы интерпретировать их и воплощать в жизнь (в данном случае выставлять сигнал на ножке).
2. device tree дает информацию как сконфигурировать и какую ножку.

 

 

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this