Перейти к содержанию
    

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 где-то

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, toweroff said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, toweroff said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, toweroff said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, toweroff said:

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

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

 

26 minutes ago, toweroff said:

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

Многовато.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, BaN сказал:

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

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

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

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

 

Многовато.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, toweroff said:

Смысл?

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

 

5 minutes ago, toweroff said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...