Использование I2C и SPI
Схема для одновременного использования интерфейсов I2C и SPI в микроконтроллерах PIC
В микроконтроллерах PIC последовательные шины I2C и SPI мультиплексно делят одни и те же выводы модуля MSSP (master synchronous serial port). Никаких проблем при использовании ни одного, ни другого интерфейса обычно не возникает. Но что, если одновременно понадобятся оба периферийных устройства одного микроконтроллера?
Описанная ниже схема была разработана для портативного прибора, использующего 28-выводной микроконтроллер PIC от Microchip Technology. На плате прибора были установлены часы реального времени, EEPROM и ЖК-индикатор с интерфейсом I2C, а также цифровой потенциометр и карта памяти microSD с интерфейсом SPI.
Рисунок 1 Эта схема позволяет использовать шины SPI и I2C на одних и тех же выводах периферийного порта.
Схема на Рисунке 1 позволяет без существенного увеличения числа компонентов использовать шины SPI и I2C, задействовав два дополнительных вывода GPIO и добавив всего четыре MOSFET. Использованные нами MOSFET являются легкодоступными N-канальными приборами с логическими уровнями управления. Например, хорошо подходят транзисторы 2N7000 и BSS138, выпускаемые ON Semiconductor. Варианты схемы с обоими MOSFET были проверены и продемонстрировали надежную работу.
По командам микроконтроллера, в соответствии с выбранным периферийным устройством, эти MOSFET коммутируют мультиплексированные выводы SCK/SCL и SDA/SDI. Программа микроконтроллера до инициализации соответствующей шины включает требуемую периферию путем установки высокого уровня на одном выводе GPIO и низкого на другом.
Рисунок 2. Реальное устройство в работе; интерфейсные шины переключаются автоматически.
Схема очень проста: стоки MOSFET соединены с выводами микропроцессора, за исключением транзистора FET-DI (MOSI), у которого к микроконтроллеру подключен исток. К истокам MOSFET со стороны шины I2C необходимо подключить подтягивающие резисторы.
Источник: rlocman.ru