Журнал РАДИОЛОЦМАН, декабрь 2017
Dan Meeks
EDN
В большинстве современных микроконтроллеров, процессоров обработки сигналов и ПЛИС имеются аппаратные и программные ресурсы для поддержки распространенных интерфейсных стандартов SPI и I2C – либо одного из них, либо обоих. Этим интерфейсным стандартам присущи существенные недостатки. Например, пропусканная способность I2C может составлять 100 Кбит/с, 400 Кбит/с или 3.4 Мбит/с в стандартном, скоростном и высокоскоростном режимах, соответственно, чего не всегда достаточно для соответствия частоте дискретизации современного периферийного преобразователя данных. Даже без учета кадрирующих и вспомогательных битов, 12 разрядный АЦП с быстродействием 100 Квыб/с должен передавать данные со скоростью не менее 1.2 Мвыб/с, поддерживаемой только высокоскоростным режимом I2C. Между тем во многих процессорах и контроллерах высокоскоростной режим I2C не предусмотрен, и значит, поддерживать быстрое преобразование данных они не могут.
Одним из главных преимуществ I2C является сокращенное число проводов, соединяющих ведущее устройство с ведомым. Используя всего два провода плюс землю, ведущий контроллер может и адресоваться к ведомому устройству, и обмениваться с ним данными, в то время как SPI требует трех проводов – для сигналов данных, синхронизации и выбора устройства. Несколько ведомых устройств могут использовать общую шину SPI, но для каждого нужна собственная линия выборки.
При постоянном росте частоты дискретизации невысокая скорость I2C может ограничивать использование этого интерфейса в некоторых приложениях, побуждая разработчикам выбирать SPI. Однако для SPI требуется дополнительная линия от хост контроллера. В ситуациях, когда свободных выводов микроконтроллера у вас нет, а приложению необходим быстрый интерфейс SPI, можно воспользоваться методом, показанным на Рисунке 1.
Рисунок 1. | Два инвертора и несколько компонентов могут заменить линию выборки кристалла АЦП на интерфейсе SPI. |
Например, выпускаемый Texas Instruments 12-битный АЦП ADS7816 с быстродействием до 200 Квыб/с на максимальной частоте требует битовой скорости передачи данных 3 Мвыб/с. Процесс преобразования инициируется активным низким уровнем на выводе /CS (выбор кристалла) микросхемы ADS7816. Обратно к высокому уровню /CS возвращается по завершении процесса преобразования, заканчивающегося передачей данных.
Переход сигнала /CS в низкий уровень происходит по спадающему фронту CLOCK. Постоянная времени пикового детектора, образованного элементами D1, R1 и C1, гарантирует, что уровень /CS не станет высоким до тех пор, пока линия сигнала CLOCK не останется на высоком уровне на протяжении более чем одного периода тактовой частоты (Рисунок 2). Хотя данные, синхронизируемые линией CLOCK, выводятся из IC2, уровень /CS остается низким, и после завершения выгрузки данных сигнал CLOCK переходит в высокое состояние, а затем за ним следует и /CS, подготавливая схему к следующему циклу преобразования.
Рисунок 2. | Тактовый сигнал (CLOCK) интерфейса SPI (верхняя диаграмма) синхронизирует вывод данных (нижняя диаграмма), а пиковое детектирование тактовых импульсов (точка A на Рисунке 1) формирует сигнал (предпоследняя диаграмма), подменяющий выбор кристалла. |
Поскольку к концу цикла преобразования конденсатор C1 должен быть разряжен, управляющему контроллеру необходимо задержать запуск следующего преобразования на время, необходимое для полного разряда конденсатора. Продуманным выбором величин R1 и C1 эту задержку можно снизить до трех периодов тактовых импульсов. Кроме того, напряжение на C1 не должно опускаться ниже порогового уровня входа инвертора IC1B до прихода следующего тактового импульса, который восстановит заряд конденсатора. Время заряда C1 определяется выходным напряжением и выходным сопротивлением инвертора IC1A, а время разряда зависит от сопротивления резистора R1 и входного импеданса инвертора IC1B. Чтобы сделать надежную схему, учитывайте допуски номиналов и температурные коэффициенты компонентов, а также разбросы пороговых напряжений и выходных уровней логических элементов.