реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как разумнее 8 датчиков I2C c одинаковым адресом подключить к atmega328p
iiv
сообщение Jan 12 2012, 23:12
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Всем привет,

посоветуйте, пожалуйста, САБЖ. Датчики на 1.8В, атмега на 5В, ног CS или переустановки адресов в датчиках нет, датчики идентичные, опрашивать их надо одновременно, или последовательно по циклу. Я вижу два выхода:

1) электронный ключ, например, как SN74CBT3251D на каждую SDA ногу датчиков и через выравниватель уровней на SDA атмеги, а SCL через выравниватель уровней на все датчики броадкастом, понятно дополнительно задействовать 3 ноги для выбора датчика по схеме SN74CBT3251D.

2) воткнуть 8 пинов через выравниватель уровней в каждую SDA ногу датчиков, SCL через выравниватель уровней на все датчики броадкастом.

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

Во втором случае - основной недостаток - мутить софтверный I2C. Есть ли он такой, можно ли так сделать? Я пока только через SDA/SCL эту шину реализовывал и софтверно не видел можно ли. Если такой софт есть, то склоняюсь ко второму варианту.

Ножек на оба варианта хватает, так как надо дополнительно только ком порт и 3 обычные ноги еще подключить.

Вдруг я что-то еще не учел, пожалуйста, посоветуйте!

Спасибо

ИИВ

Цитата(iiv @ Jan 13 2012, 04:26) *
2) воткнуть 8 пинов через выравниватель уровней в каждую SDA ногу датчиков, SCL через выравниватель уровней на все датчики броадкастом.

кажется, этот вариант отпадает, так как ведомый может удерживать уровень SCL, если данные не готовы... Остается первый вариант, если в нем нет каких-то еще подводных камней.
Go to the top of the page
 
+Quote Post
KARLSON
сообщение Jan 13 2012, 04:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Если есть аппаратный I2C в контроллере, то лучше через ключи. ИМХО


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 13 2012, 05:19
Сообщение #3


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



а что если выводы SDA/SCL тех датчиков, которые в данный момент не опрашиваются, подтягивать свободными портами к 1 и соединять их с линиями SDA/SCL через диоды (Шоттки, анодами в линию)? правда потребуется 16 свободных портов и 16 диодов (можно 8 сдвоенных в sot-23, по одному диоду на каждый датчик)

пс: можно и 8 портами обойтись, но тогда потребуется 16 сдвоенных диодов

пспс: хотя наверное плохая идея, фронты затянутся

Сообщение отредактировал stells - Jan 13 2012, 06:16
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Jan 13 2012, 06:11
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Однажды использовал PCA9545A - 4-х портовый транслятор I2C.
Прикрепленное изображение


Но минимальное напряжение питания Slave не ниже 2.7 В. Поищите нечто подобное в линейке Texas или NXP.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jan 13 2012, 11:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Сами датчики обзавите , как нибудь , а лучше уж сразу DS , так проще смотреть , что можно из них "выжать"


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
iiv
сообщение Jan 13 2012, 12:15
Сообщение #6


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Дорогие друзья, огромное спасибо за интересные советы!

Отдельно очень-очень благодарен Вам Sergey_Aleksandrovi4 за совет про I2C mux, нашел у NXP PCA9548AD, которую, похоже, можно попользовать.

Цитата(ILYAUL @ Jan 13 2012, 17:15) *
Сами датчики обзавите , как нибудь , а лучше уж сразу DS , так проще смотреть , что можно из них "выжать"

На самом деле датчиков у меня 24 sm.gif по 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 чтобы убедиться, что он будет полностью совместим с тройками моих датчиков.
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 13 2012, 12:21
Сообщение #7


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(iiv @ Jan 13 2012, 16:15) *
Сейчас читаю даташит PCA9548AD чтобы убедиться, что он будет полностью совместим с тройками моих датчиков.

она же тоже вроде 2,7-5,5В по цифровым входам (рис.14)?
Go to the top of the page
 
+Quote Post
iiv
сообщение Jan 13 2012, 12:40
Сообщение #8


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(stells @ Jan 13 2012, 18:21) *
она же тоже вроде 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 могут поддерживать, или я опять что-то не до конца понял?
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 13 2012, 12:44
Сообщение #9


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



кстати, датчики Ваши питаются до 3,6В... может поднять им питание?
Go to the top of the page
 
+Quote Post
iiv
сообщение Jan 13 2012, 12:48
Сообщение #10


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(stells @ Jan 13 2012, 18:44) *
кстати, датчики Ваши питаются до 3,6В... может поднять им питание?

мы с Вами одновременно подумали sm.gif

У меня пока основная непонятка в том, что если у меня висит 3 датчика на одном входе PCA9548AD смогу ли я правильно разрулить доступ ко всем этим датчикам.
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 13 2012, 12:54
Сообщение #11


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(iiv @ Jan 13 2012, 16:48) *
если у меня висит 3 датчика на одном входе PCA9548AD смогу ли я правильно разрулить доступ ко всем этим датчикам.

с разными адресами? ну наверное... а почему нет?
Go to the top of the page
 
+Quote Post
iiv
сообщение Jan 13 2012, 13:08
Сообщение #12


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(stells @ Jan 13 2012, 18:54) *
с разными адресами? ну наверное... а почему нет?

Да, Вы правы, все ок, поверхностно прочитал даташит и не до окнца во всем разобрался... Похоже PCA9548AD самый простой и надежный для меня вариант. Еще и ноги съэкономятся.
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 13 2012, 13:19
Сообщение #13


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



интересно, что за штука у Вас такая с восемью комплектами датчиков? sm.gif
Go to the top of the page
 
+Quote Post
iiv
сообщение Jan 13 2012, 14:17
Сообщение #14


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(stells @ Jan 13 2012, 19:19) *
интересно, что за штука у Вас такая с восемью комплектами датчиков? sm.gif

старая затея - прецизионная позиционировка.
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 4 2013, 08:08
Сообщение #15


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Всем привет,

решил не открывать новую тему, так как вопрос об этом же...

Сейчас все работает через 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 датчика?

Спасибо

ИИВ
Go to the top of the page
 
+Quote Post
arttab
сообщение Jun 4 2013, 08:23
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



можно мультиплексорами коммутировать датчики. до кучи


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
iiv
сообщение Jun 4 2013, 08:34
Сообщение #17


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(arttab @ Jun 4 2013, 13:23) *
можно мультиплексорами коммутировать датчики.

это не интересно, так как PCA9548A - это тот же самый мультиплексор, только гораздо умнее. Мультиплексором у меня скорость просядет, а я сейчас за скорость борюсь. Мне надо 800кБит/с суммарно прокачать с датчиков, и поэтому я хочу распараллелить i2c на восемь каналов, чтобы на каждом было только 100кБит/с.
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 15 2017, 18:06
Сообщение #18


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(iiv @ Jun 4 2013, 12:08) *
в каждом блоке сидит по lsm303 и l3g4200d, за что, выражаю всем преогромнейшую благодарность...

мне бы тоже хотелось выразить кому-нибудь преогромнейшую благодарность, если бы он объяснил мне (дал ссылки), как с помощью lsm303 можно получить азимут и зенитный угол... причем самое главное - помочь смоделировать это в голове, потому как она абсолютно отказывается понять эту методу 1111493779.gif
Go to the top of the page
 
+Quote Post
AVStech
сообщение Jan 12 2018, 18:12
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



У меня вопрос по PCA9545A - можно им UARTы щёлкать?

ИЛИ

Есть что-то подходящее для UARTов?

Спасибо!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 12 2018, 18:39
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AVStech @ Jan 12 2018, 21:12) *
У меня вопрос по PCA9545A - можно им UARTы щёлкать?

Конечно, нельзя.

Цитата(AVStech @ Jan 12 2018, 21:12) *
Есть что-то подходящее для UARTов?

Для скольких?
Go to the top of the page
 
+Quote Post
AVStech
сообщение Jan 12 2018, 18:43
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(aaarrr @ Jan 12 2018, 21:39) *
Конечно, нельзя.


Для скольких?


Три штуки. Желательно иметь еще 1 в резерве. Всего 4.
СПАСИБО!

Сообщение отредактировал AVStech - Jan 12 2018, 18:43
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 12 2018, 19:02
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AVStech @ Jan 12 2018, 21:43) *
Три штуки. Желательно иметь еще 1 в резерве. Всего 4.
СПАСИБО!

Поставьте 74xx4052
Go to the top of the page
 
+Quote Post
AVStech
сообщение Jan 12 2018, 19:28
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(aaarrr @ Jan 12 2018, 22:02) *
Поставьте 74xx4052

Уже не первый раз меня выручаете. СПАСИБО!
Go to the top of the page
 
+Quote Post
UncleHarry
сообщение Feb 6 2018, 18:28
Сообщение #24





Группа: Новичок
Сообщений: 4
Регистрация: 22-06-07
Пользователь №: 28 626



Цитата(AVStech @ Jan 12 2018, 22:12) *
У меня вопрос по PCA9545A - можно им UARTы щёлкать?

ИЛИ

Есть что-то подходящее для UARTов?

Спасибо!


У NXP есть для щелканья UART'ов SC16IS752, I2C <-> 2 UART. Ценник, правда, негуманный...
Go to the top of the page
 
+Quote Post
Elresearch
сообщение Feb 7 2018, 10:06
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730



Цитата(iiv @ Jun 4 2013, 11:34) *
это не интересно, так как PCA9548A - это тот же самый мультиплексор, только гораздо умнее. Мультиплексором у меня скорость просядет, а я сейчас за скорость борюсь. Мне надо 800кБит/с суммарно прокачать с датчиков, и поэтому я хочу распараллелить i2c на восемь каналов, чтобы на каждом было только 100кБит/с.

может для таких целей уже задействовать хотя бы CPLD? Можно вообще сделать так что последовательно принимать по I2C и байтами + номер канала выдавать на MCU.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 21:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01603 секунд с 7
ELECTRONIX ©2004-2016