Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: совместная работа i2c и spi для pic18
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
dac
могут быть какие-нибудь грабли для i2c ? PIC - мастер, остальные ведомые.
Выводы совмещенные, на SPI висит MMC карточка, на i2c часы и индикатор.
то что spi мешать не будут понятно, у него есть вывод выбора, а вот при интенсивном обмене по spi, I2C ведомые не будут глючить (для них нет вывода разрешения)?
Или стоит поставить ключи и на время обмена по spi, отключать ведомые устройства? Кто-нибудь делал такое?
MaxPIC
Если у выбранного Вами пика один модуль MSSP, то лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом, и осуществить обмен по двум другим свободным ногам, а SPI использовать аппаратный. Скорость обмена правда, будет меньше, чем у аппаратного, но для часов скорость и не нужна.
dac
Цитата(MaxPIC @ Sep 21 2007, 11:46) *
лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом


Софтовый не вопрос, там чего писать то (в свое время для ПЛИС писал, там сложнее было), хочется использовать именно аппаратный, потому как не исключены другие довески.
К тому же для индикаторва скорость все таки желательна.
MaxPIC
Ну тогда брать PIC с двумя модулями MSSP.

Кстати, чуть не забыл. В SPI режиме не требуется подтягивающих резисторов, например, на DOUT и SCLK. Пик аппаратно переключает их между +5 и GND. А вот в режиме I2C подключение к шине выполняется по схеме монтажное И, и чтобы реализовать её требуются подтягивающие резисторы на питание, и ножка, во избежание электрических конфликтов, переключается между высокоимпедансым состоянием (+5 через резистор) и GND. Поэтому городить огород на схеме электрической принципиальной я бы не стал.
dac
Цитата(MaxPIC @ Sep 22 2007, 15:12) *
Ну тогда брать PIC с двумя модулями MSSP.


Это решение я и сам знаю, не подходит

Цитата(MaxPIC @ Sep 22 2007, 15:12) *
Кстати, чуть не забыл. В SPI режиме не требуется подтягивающих резисторов, например, на DOUT и SCLK. Пик аппаратно переключает их между +5 и GND. А вот в режиме I2C подключение к шине выполняется по схеме монтажное И, и чтобы реализовать её требуются подтягивающие резисторы на питание, и ножка, во избежание электрических конфликтов, переключается между высокоимпедансым состоянием (+5 через резистор) и GND. Поэтому городить огород на схеме электрической принципиальной я бы не стал.


Спасибо, это я знаю, и именно с аппаратной частью (если слейв без спроса не дернет шину) проблем нет.
Если отделить i2c слейвы от ПИКа двунаправленным ключем, с pull-up по обе стороны ключей, то это решит проблему несанкционированных действий со стороны слейва, которые в принципе возможны только при случайном появлении в потоке данных SPi адреса устройства I2C. С учетом гораздо большей скорости обмена по SPI это маловероятно, но возможно. В общем получается аналог вывода ChipSelect для SPI устройств.

Поэтому и спрашивалю, может кто реально делал и решил эту проблему проще.
DL36
Цитата(dac @ Sep 22 2007, 21:25) *
Это решение я и сам знаю, не подходит
Спасибо, это я знаю, и именно с аппаратной частью (если слейв без спроса не дернет шину) проблем нет.
Если отделить i2c слейвы от ПИКа двунаправленным ключем, с pull-up по обе стороны ключей, то это решит проблему несанкционированных действий со стороны слейва, которые в принципе возможны только при случайном появлении в потоке данных SPi адреса устройства I2C. С учетом гораздо большей скорости обмена по SPI это маловероятно, но возможно. В общем получается аналог вывода ChipSelect для SPI устройств.

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

Так идея возникла, для обсуждения:

Поставить два мосфета встречно с p каналом, на шине, и I2C отключать таким образом. В первом приближении должно быть работоспособно.
George!
Я думаю вы зря все так усложняете. У нас схемы где SPI и I2C на одном MSSP сидят уже несколько лет используются. Никаких проблем не возникает.
Вот здесь подобное обсуждалось microchip.ru, правда тоже к результату не пришли.
dac
Цитата(George! @ Sep 25 2007, 06:15) *
У нас схемы где SPI и I2C на одном MSSP сидят уже несколько лет используются. Никаких проблем не возникает.


Спасибо большое, именно это (практический опыт) я и хотел услышать smile.gif

Если не секрет, что именно висит одновременно?
Alich
Цитата(dac @ Sep 25 2007, 12:07) *
Спасибо большое, именно это (практический опыт) я и хотел услышать smile.gif

Если не секрет, что именно висит одновременно?


Как то вешали часы и ммскарту. Точно сейчас не помню - но часы как то подключивали, когда с ММС картой работали. PCF8363.

Но в целом ничего мешать не должно. Как на выхода повлияют резисторы, если не переборшить с номиналом то? Ну висят и висят себе параллельно внутренностям.
yura-w
Цитата(dac @ Sep 21 2007, 06:33) *
...на i2c часы и индикатор.
....I2C ведомые не будут глючить (для них нет вывода разрешения)?
Или стоит поставить ключи и на время обмена по spi, отключать ведомые устройства?

i2c - просто интерфейс (http://www.gaw.ru/html.cgi/txt/interface/iic/start.htm) и даже при максимальной скорости обмена (400 кбит/с) он устовчив к помехам, т.к. слишком медленный.
Но если это вам кажется недостаточным можите просто выводы контроллера висящие на i2c перевести в логическую 1.
Но это откровенная перестраховка, если у вас в схеме помехи по времени имеют порядок микросекунда, то надо переделовать схему.
George!
Цитата(dac @ Sep 25 2007, 13:07) *
Спасибо большое, именно это (практический опыт) я и хотел услышать smile.gif

Если не секрет, что именно висит одновременно?


На вскидку.
SPI: память.
I2C: память, RTC и расширитель интерфейса (порты в/в)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.