Jump to content

    

совместная работа i2c и spi для pic18

могут быть какие-нибудь грабли для i2c ? PIC - мастер, остальные ведомые.

Выводы совмещенные, на SPI висит MMC карточка, на i2c часы и индикатор.

то что spi мешать не будут понятно, у него есть вывод выбора, а вот при интенсивном обмене по spi, I2C ведомые не будут глючить (для них нет вывода разрешения)?

Или стоит поставить ключи и на время обмена по spi, отключать ведомые устройства? Кто-нибудь делал такое?

Share this post


Link to post
Share on other sites

Если у выбранного Вами пика один модуль MSSP, то лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом, и осуществить обмен по двум другим свободным ногам, а SPI использовать аппаратный. Скорость обмена правда, будет меньше, чем у аппаратного, но для часов скорость и не нужна.

Share this post


Link to post
Share on other sites
лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом

 

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

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

Share this post


Link to post
Share on other sites

Ну тогда брать PIC с двумя модулями MSSP.

 

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

Share this post


Link to post
Share on other sites
Ну тогда брать PIC с двумя модулями MSSP.

 

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

 

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

 

Спасибо, это я знаю, и именно с аппаратной частью (если слейв без спроса не дернет шину) проблем нет.

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

 

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

Share this post


Link to post
Share on other sites
Это решение я и сам знаю, не подходит

Спасибо, это я знаю, и именно с аппаратной частью (если слейв без спроса не дернет шину) проблем нет.

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

 

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

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

 

Поставить два мосфета встречно с p каналом, на шине, и I2C отключать таким образом. В первом приближении должно быть работоспособно.

Share this post


Link to post
Share on other sites

Я думаю вы зря все так усложняете. У нас схемы где SPI и I2C на одном MSSP сидят уже несколько лет используются. Никаких проблем не возникает.

Вот здесь подобное обсуждалось microchip.ru, правда тоже к результату не пришли.

Share this post


Link to post
Share on other sites
У нас схемы где SPI и I2C на одном MSSP сидят уже несколько лет используются. Никаких проблем не возникает.

 

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

 

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

Share this post


Link to post
Share on other sites
Спасибо большое, именно это (практический опыт) я и хотел услышать :)

 

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

 

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

 

Но в целом ничего мешать не должно. Как на выхода повлияют резисторы, если не переборшить с номиналом то? Ну висят и висят себе параллельно внутренностям.

Share this post


Link to post
Share on other sites
...на i2c часы и индикатор.

....I2C ведомые не будут глючить (для них нет вывода разрешения)?

Или стоит поставить ключи и на время обмена по spi, отключать ведомые устройства?

i2c - просто интерфейс (http://www.gaw.ru/html.cgi/txt/interface/iic/start.htm) и даже при максимальной скорости обмена (400 кбит/с) он устовчив к помехам, т.к. слишком медленный.

Но если это вам кажется недостаточным можите просто выводы контроллера висящие на i2c перевести в логическую 1.

Но это откровенная перестраховка, если у вас в схеме помехи по времени имеют порядок микросекунда, то надо переделовать схему.

Share this post


Link to post
Share on other sites
Спасибо большое, именно это (практический опыт) я и хотел услышать :)

 

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

 

На вскидку.

SPI: память.

I2C: память, RTC и расширитель интерфейса (порты в/в)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this