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

 
 
 
Reply to this topicStart new topic
> совместная работа i2c и spi для pic18
dac
сообщение Sep 21 2007, 02:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



могут быть какие-нибудь грабли для i2c ? PIC - мастер, остальные ведомые.
Выводы совмещенные, на SPI висит MMC карточка, на i2c часы и индикатор.
то что spi мешать не будут понятно, у него есть вывод выбора, а вот при интенсивном обмене по spi, I2C ведомые не будут глючить (для них нет вывода разрешения)?
Или стоит поставить ключи и на время обмена по spi, отключать ведомые устройства? Кто-нибудь делал такое?
Go to the top of the page
 
+Quote Post
MaxPIC
сообщение Sep 21 2007, 07:46
Сообщение #2


специалист
***

Группа: Свой
Сообщений: 279
Регистрация: 3-05-07
Из: г. Москва
Пользователь №: 27 506



Если у выбранного Вами пика один модуль MSSP, то лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом, и осуществить обмен по двум другим свободным ногам, а SPI использовать аппаратный. Скорость обмена правда, будет меньше, чем у аппаратного, но для часов скорость и не нужна.
Go to the top of the page
 
+Quote Post
dac
сообщение Sep 21 2007, 08:06
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(MaxPIC @ Sep 21 2007, 11:46) *
лучше взять готовую библиотечку софтворного I2C, поставляемого Microchip'ом


Софтовый не вопрос, там чего писать то (в свое время для ПЛИС писал, там сложнее было), хочется использовать именно аппаратный, потому как не исключены другие довески.
К тому же для индикаторва скорость все таки желательна.
Go to the top of the page
 
+Quote Post
MaxPIC
сообщение Sep 22 2007, 11:12
Сообщение #4


специалист
***

Группа: Свой
Сообщений: 279
Регистрация: 3-05-07
Из: г. Москва
Пользователь №: 27 506



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

Кстати, чуть не забыл. В SPI режиме не требуется подтягивающих резисторов, например, на DOUT и SCLK. Пик аппаратно переключает их между +5 и GND. А вот в режиме I2C подключение к шине выполняется по схеме монтажное И, и чтобы реализовать её требуются подтягивающие резисторы на питание, и ножка, во избежание электрических конфликтов, переключается между высокоимпедансым состоянием (+5 через резистор) и GND. Поэтому городить огород на схеме электрической принципиальной я бы не стал.
Go to the top of the page
 
+Quote Post
dac
сообщение Sep 22 2007, 18:25
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(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 устройств.

Поэтому и спрашивалю, может кто реально делал и решил эту проблему проще.
Go to the top of the page
 
+Quote Post
DL36
сообщение Sep 23 2007, 13:49
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



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

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

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

Поставить два мосфета встречно с p каналом, на шине, и I2C отключать таким образом. В первом приближении должно быть работоспособно.
Go to the top of the page
 
+Quote Post
George!
сообщение Sep 25 2007, 02:15
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 28
Регистрация: 19-03-05
Из: Омск
Пользователь №: 3 489



Я думаю вы зря все так усложняете. У нас схемы где SPI и I2C на одном MSSP сидят уже несколько лет используются. Никаких проблем не возникает.
Вот здесь подобное обсуждалось microchip.ru, правда тоже к результату не пришли.
Go to the top of the page
 
+Quote Post
dac
сообщение Sep 25 2007, 08:07
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



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


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

Если не секрет, что именно висит одновременно?
Go to the top of the page
 
+Quote Post
Alich
сообщение Sep 25 2007, 08:44
Сообщение #9


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

Группа: Свой
Сообщений: 106
Регистрация: 27-01-06
Из: г. Ярославль
Пользователь №: 13 686



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

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


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

Но в целом ничего мешать не должно. Как на выхода повлияют резисторы, если не переборшить с номиналом то? Ну висят и висят себе параллельно внутренностям.
Go to the top of the page
 
+Quote Post
yura-w
сообщение Sep 25 2007, 08:54
Сообщение #10


Местный
***

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



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

i2c - просто интерфейс (http://www.gaw.ru/html.cgi/txt/interface/iic/start.htm) и даже при максимальной скорости обмена (400 кбит/с) он устовчив к помехам, т.к. слишком медленный.
Но если это вам кажется недостаточным можите просто выводы контроллера висящие на i2c перевести в логическую 1.
Но это откровенная перестраховка, если у вас в схеме помехи по времени имеют порядок микросекунда, то надо переделовать схему.
Go to the top of the page
 
+Quote Post
George!
сообщение Sep 26 2007, 02:04
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 28
Регистрация: 19-03-05
Из: Омск
Пользователь №: 3 489



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

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


На вскидку.
SPI: память.
I2C: память, RTC и расширитель интерфейса (порты в/в)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 02:39
Рейтинг@Mail.ru


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