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

Как сделать chip select для I2C?

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

Там на схеме у него нарисовано. Да и будь оно подключено к разным шинам-пинам, никакого вопроса и не возникло бы.

Он привёл схему для одного слэйва. Для второго предполагается аналогичная схема (только пин коммутации другой).

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


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

7 минут назад, jcxz сказал:

Он привёл схему для одного слэйва. Для второго предполагается аналогичная схема (только пин коммутации другой).

А я думаю это схема его мастера такая, а не слейва. Он же написал, что изделия - китайские, торчит только I2C и таких девайсов несколько, получается, с одинаковыми адресами.

И логично вопрос возник, как ему спаять свой мастер так, чтобы на разные разъемы выходила одна и та же шина I2C с его МК, но так, чтобы можно было обращаться к разным слейвам.

В противном случае (с несколькими раздельными шинами I2C) вопроса и не возникло бы.

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


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

13 минут назад, Arlleex сказал:

А я думаю это схема его мастера такая, а не слейва.

Это и есть - схема на мастере. Для подключения одного из слэйвов. И точно такая же имеется, на том же мастере - для другого слэйва.

Вроде как это очевидно.  :unknw:

13 минут назад, Arlleex сказал:

В противном случае (с несколькими раздельными шинами I2C) вопроса и не возникло бы.

Не скажите. Если например в МК есть только один I2C-интерфейс, но маппируемый на разные ноги, то как показывает практика: не каждый может догадаться, что мультиплексировать можно посредством этого ремапа. И начинает думать: что бы такое приколхозить снаружи, чтобы SCL или SDA коммутировать?

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


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

8 минут назад, jcxz сказал:

Это и есть - схема на мастере. Для подключения одного из слэйвов. И точно такая же имеется, на том же мастере - для другого слэйва.

Так а я о чем? Чем это противоречит моему

Цитата

Вроде ж, ТС ясно указал, что 2 устройства повешены на 1 шину I2C...

что было бы максимально логичным предположением о ситуации у ТС?

По-Вашему, ТС пришел на форум за итак максимально логичным советом подключить 2 разных устройства к 2 разным шинам I2C (пусть к одной - но заремапленной)? Не думаю.

Думаю, свободных I2C (а то и вовсе доступных в МК) просто не оказалось.

Хотя я не Ванга - возможно, мои ожидания о минимальных компетенциях ТС в этих вопросах слегка завышены.

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


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

28 minutes ago, jcxz said:

А значит: ремап ног МК - вполне себе годное решение.

Если нет второго i2c порта.

А ситуации топикстартера, как ни странно, встречаестся не так уж и редко. Мне за последнее время пришлось столкнуться дважды - в первом случае у девасов был адрес, но один. А мне надо было четыре девайса вместе включить.

Второй случай веселее, шина была одна, на нее посадили два девайса. Один была еепромка, у кторой в первом байте после кода устройства было 3 адресных бита. Недоглядели, что у второго код устройства тот-же самый, а там где у еепромки адрес, у этого "101b".

Повезло что еепромка использовалась лишь частично, была возможность вырезать из употребления ее кусок, со старшими адресами равными "101". В сам кусок записали все "1, чтобы "монтажным ИЛИ" не мешал работать со вторым девайсом.

Еще - хорошо что это была первая пробная плата, в кторой и без этого нужны были изменения. Так что в следующей верии на другой порт посадили, он был свободен.

 

 

 

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


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

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

А ситуации топикстартера, как ни странно, встречаестся не так уж и редко.

Бывает, да. У меня не часто, совсем. Последний раз - на шине висел задающий генератор, который настраивался единожды при включении. А затем на другие пины этот I2C выводился в качестве интерфейса для связи с изделием. Хотя в МК еще были свободные I2C, пришлось городить именно такой колхоз, т.к. чип МК был BGA с шагом 0.5 мм, и я просто не смог вытащить ничего другого, как маппируемые пины. Так что, иногда и выбора особо нет)) Ну а вообще для таких ситуаций стараюсь ставить специализированные I2C-коммутаторы-мультиплексоры, либо (приоритетно) подключать к разным I2C.

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


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

13 minutes ago, Arlleex said:

Ну а вообще для таких ситуаций стараюсь ставить специализированные I2C-коммутаторы-мультиплексоры

Было дело, поставил 6 штук PCA9547 для коммутации 20 EDID-каналов, и на трех перепутал SDA/SCL со стороны слейвов. Пришлось городить программный I2C с виртуальной шиной.

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


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

37 минут назад, Arlleex сказал:

По-Вашему, ТС пришел на форум за итак максимально логичным советом подключить 2 разных устройства к 2 разным шинам I2C (пусть к одной - но заремапленной)? Не думаю.

Вы судите со своей колокольни - колокольни человека-оркестра. Вы ведь занимаетесь и схемой и встроенным ПО? А значит вам может быть невдомёк, что чистый схемотехник, не имевший ранее дел с ARM-ами, может априори даже не подозревать о возможности ремапа, встроенного почти во все ARM-МК. А мне не раз приходилось с таким сталкиваться. Не обязательно I2C, но например - что можно завести MISO (активных) от нескольких слэйвов, сидящих на одной шине в один мастер без внешних мультиплексоров - тоже было невдомёк и приходилось даже убеждать, что так точно будет работать.  :unknw:

PS: Да что там I2C с SPI! Я сталкивался со схемами на Cortex-M, в которых была заложена внешняя спец.цепь для сброса МК с помощью GPIO-пина + RC-цепочка! Так как схемотехник, её рисовавший, даже не подозревал о возможностях сброса МК через ядро или через встроенный WDT.  :smile:

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


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

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

Было дело, поставил 6 штук PCA9547 для коммутации 20 EDID-каналов, и на трех перепутал SDA/SCL со стороны слейвов. Пришлось городить программный I2C с виртуальной шиной.

Я так понял, устройство было единичное и без прототипа))
 

17 минут назад, jcxz сказал:

Вы судите со своей колокольни - колокольни человека-оркестра. Вы ведь занимаетесь и схемой и встроенным ПО?

Я да, но обычно всегда исхожу из предположения, что, коли схемотехник и программист работают над одним проектом, они как-то коммуницируют, и распределение ножек МК перед трассировкой (или в процессе) согласуется с программистом. Для меня это само собой разумеющееся. Никогда не видел полностью изолированных специалистов, потому что на выходе, как правило, получается какая-то шляпа. Хотя нет, видел. Но выхлоп там тот же - шляпа. Все равно схемотехник и программист должны как-то обговаривать детали. В проектах, где я был только программистом, товарищ-схемотехник вовсе просил меня на бумажке записать пины, к которым все подключить. В процессе разводки пару раз подходил, потому что что-то плохо разводилось и просил перенести на другие пины. И это нормально. А вот бывали проекты, когда мне просто приезжали железки а от меня требовалось запрограммировать - и там был сущий ад - программные ШИМ-ы в перемешку с программными UART-ами и т.д. когда ничего не мешало задействовать аппаратные, и это на 8-битном AVR-барахле.

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


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

13 minutes ago, Arlleex said:

Я так понял, устройство было единичное и без прототипа))

Оно так и производится - плат много сразу заказали, а они большие и дорогие. Серийность низкая, переделывать смысла нет.

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


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

23 минуты назад, Arlleex сказал:

распределение ножек МК перед трассировкой (или в процессе) согласуется с программистом.

Это в идеале. А посмотрите хотя-бы на местный раздел "Предлагаю работу" - там неоднократно уже наблюдал сообщения типа: "Схема готова, нужен программист, чтобы запрограммировать". Часто уже и железо изготовлено.

23 минуты назад, Arlleex сказал:

А вот бывали проекты, когда мне просто приезжали железки а от меня требовалось запрограммировать - и там был сущий ад - программные ШИМ-ы в перемешку с программными UART-ами и т.д. когда ничего не мешало задействовать аппаратные, и это на 8-битном AVR-барахле.

вот-вот... :smile:

Или бывает - делалось вроде совместно с программистом(?), но потом он не справился с задачей и слился.... А железо уже готово. И переделывать - нет времени/денех. И в таких случаях там как раз полный мрак, в распределении ног. Но надо как-то докостылить то, что есть.

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


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

А тут изоляторы, компараторы (привет двунаправленности SCL) и прочие велосипеды с квадратными колесами.
Ну, справедливости ради, SCL двунаправленность не грозит никак (-;

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


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

34 minutes ago, Obam said:

Ну, справедливости ради, SCL двунаправленность не грозит никак (-;

Да ну?

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


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

MS4553M ?

Если отключать только SCL, то нужно следить, чтоб на SDA в это время не было низкого уровня.

И изменения уровня SDA при SCL=1 - это же многократные START/STOP - слейвы к этому нормально относятся?

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


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

Ну, справедливости ради, SCL двунаправленность не грозит никак (-;
Да ну?

Синхроимпульсы: источник только мастер, или в ваших ебТюгулях не так? (-;
Так что, ну да (((-8Ж

PS: или вы имели ввиду clock stretching?

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


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

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

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

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

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

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

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

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

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

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