iiv 27 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Всем привет, посоветуйте, пожалуйста, САБЖ. Датчики на 1.8В, атмега на 5В, ног CS или переустановки адресов в датчиках нет, датчики идентичные, опрашивать их надо одновременно, или последовательно по циклу. Я вижу два выхода: 1) электронный ключ, например, как SN74CBT3251D на каждую SDA ногу датчиков и через выравниватель уровней на SDA атмеги, а SCL через выравниватель уровней на все датчики броадкастом, понятно дополнительно задействовать 3 ноги для выбора датчика по схеме SN74CBT3251D. 2) воткнуть 8 пинов через выравниватель уровней в каждую SDA ногу датчиков, SCL через выравниватель уровней на все датчики броадкастом. В первом случае - вроде все просто, но схема сложнее, могу по габаритам не пролезть, большая вероятность ошибки в схеме, а мне желательно с первого раза иметь работающую версию. Во втором случае - основной недостаток - мутить софтверный I2C. Есть ли он такой, можно ли так сделать? Я пока только через SDA/SCL эту шину реализовывал и софтверно не видел можно ли. Если такой софт есть, то склоняюсь ко второму варианту. Ножек на оба варианта хватает, так как надо дополнительно только ком порт и 3 обычные ноги еще подключить. Вдруг я что-то еще не учел, пожалуйста, посоветуйте! Спасибо ИИВ 2) воткнуть 8 пинов через выравниватель уровней в каждую SDA ногу датчиков, SCL через выравниватель уровней на все датчики броадкастом. кажется, этот вариант отпадает, так как ведомый может удерживать уровень SCL, если данные не готовы... Остается первый вариант, если в нем нет каких-то еще подводных камней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KARLSON 1 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба Если есть аппаратный I2C в контроллере, то лучше через ключи. ИМХО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 13 января, 2012 Опубликовано 13 января, 2012 (изменено) · Жалоба а что если выводы SDA/SCL тех датчиков, которые в данный момент не опрашиваются, подтягивать свободными портами к 1 и соединять их с линиями SDA/SCL через диоды (Шоттки, анодами в линию)? правда потребуется 16 свободных портов и 16 диодов (можно 8 сдвоенных в sot-23, по одному диоду на каждый датчик) пс: можно и 8 портами обойтись, но тогда потребуется 16 сдвоенных диодов пспс: хотя наверное плохая идея, фронты затянутся Изменено 13 января, 2012 пользователем stells Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Aleksandrovi4 2 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба Однажды использовал PCA9545A - 4-х портовый транслятор I2C. Но минимальное напряжение питания Slave не ниже 2.7 В. Поищите нечто подобное в линейке Texas или NXP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба Сами датчики обзавите , как нибудь , а лучше уж сразу DS , так проще смотреть , что можно из них "выжать" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба Дорогие друзья, огромное спасибо за интересные советы! Отдельно очень-очень благодарен Вам Sergey_Aleksandrovi4 за совет про I2C mux, нашел у NXP PCA9548AD, которую, похоже, можно попользовать. Сами датчики обзавите , как нибудь , а лучше уж сразу DS , так проще смотреть , что можно из них "выжать" На самом деле датчиков у меня 24 :) по 8 с одинаковыми адресами: 8 раз L3G4200D: http://www.st.com/internet/com/TECHNICAL_R.../CD00265057.pdf и 8 раз LSM303DLM: http://www.st.com/internet/com/TECHNICAL_R.../DM00026454.pdf так как в магнетометре не поменять адрес, то наличие CS или изменения бита у измерителя ускорения погоды не делает... Сейчас читаю даташит PCA9548AD чтобы убедиться, что он будет полностью совместим с тройками моих датчиков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба Сейчас читаю даташит PCA9548AD чтобы убедиться, что он будет полностью совместим с тройками моих датчиков. она же тоже вроде 2,7-5,5В по цифровым входам (рис.14)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба она же тоже вроде 2,7-5,5В по цифровым входам (рис.14)? пока я до конца не уверен, в таблице 6 главы 10 на странице 14 написано 10. Static characteristics Table 6. Static characteristics at VDD = 2.3 V to 3.6 V VIH HIGH-level input voltage 0.7VDD(минимум) - VDD + 0.5 V(максимум) то есть минимум будет от 1.7В? Или я не прав? ЗЫ: а датчики вроде тоже VDD_IO=3V могут поддерживать, или я опять что-то не до конца понял? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба кстати, датчики Ваши питаются до 3,6В... может поднять им питание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба кстати, датчики Ваши питаются до 3,6В... может поднять им питание? мы с Вами одновременно подумали :) У меня пока основная непонятка в том, что если у меня висит 3 датчика на одном входе PCA9548AD смогу ли я правильно разрулить доступ ко всем этим датчикам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба если у меня висит 3 датчика на одном входе PCA9548AD смогу ли я правильно разрулить доступ ко всем этим датчикам. с разными адресами? ну наверное... а почему нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба с разными адресами? ну наверное... а почему нет? Да, Вы правы, все ок, поверхностно прочитал даташит и не до окнца во всем разобрался... Похоже PCA9548AD самый простой и надежный для меня вариант. Еще и ноги съэкономятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба интересно, что за штука у Вас такая с восемью комплектами датчиков? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба интересно, что за штука у Вас такая с восемью комплектами датчиков? :) старая затея - прецизионная позиционировка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iiv 27 4 июня, 2013 Опубликовано 4 июня, 2013 · Жалоба Всем привет, решил не открывать новую тему, так как вопрос об этом же... Сейчас все работает через PCA9548A (восьми портовый i2c разветвитель) на все 8 блоков моих датчиков, в каждом блоке сидит по lsm303 и l3g4200d, за что, выражаю всем преогромнейшую благодарность... Но есть одно но... Скорость шины 400кГц, больше вроде бы нельзя. Трафик с датчиков таков, что я могу опрашивать только 70-80 запросов в секунду с каждого датчика. Так как суммарно у меня 24 датчика, каждый из которых посылает мне 6 байт, то один такой 6-ти байтный запрос "стоит" мне примерно 200 тиков по i2c шине, что в общем-то многовато, но, близко к пику (110 тиков). Хочется это как-то ускорить... Готов везде сделать напряжение 3.3В. Правильно ли я понимаю, что если я SCL одной ногой всем раздам, а SDA c каждого датчика повешу на свою контроллерную ногу, и запрограммирую софтверный i2c, то все должно работать? В этом случае, на 400КГц я смогу считывать все, что мне надо. Меня интересует, 1. имеет ли право слейв i2c задерживать сигнал с SCL, например, в момент ack/nack или он только SDA сигнал имеет право задержать? 2. Хватит ли мощности не надо ли что-то еще сделать, чтобы раздать 1 сигнал с SCL на все 24 датчика? Спасибо ИИВ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться