Электроника

Введение

Довольно часто в практике разработчика возникает необходимость организовать множество параллельных дискретных портов ввода-вывода по последовательному интерфейсу. Эти порты могут использоваться, например, для опроса состояния различных датчиков или контактов, а также для дискретного управления единичными индикаторами или исполнительными устройствами. Наиболее предпочтительными для этих целей являются последовательные интерфейсы PC и SPI, которые обладают высокой скоростью, требуют минимального количества линий связи и широко распространены в различной аппаратуре.

Конечно, данную задачу можно решить, применив недорогой микроконтроллер, имеющий встроенный интерфейс PC или SPI. В этом случае микроконтроллер под управлением программы сможет принимать данные по последовательному интерфейсу и транслировать их через параллельные порты ввода-вывода, а также выполнять обратную передачу данных. Такой микроконтроллер должен иметь большое число выводов, или к нему придется подключить дополнительные регистры.

Однако поставленную задачу можно решить и более простым способом, не требующим использования микроконтроллера, а также создания и отладки программы. Такую возможность предоставляют новые микросхемы MCP23017 и MCP23S17 компании Microchip, которые были представлены на рынке электронных компонентов в 2007 г.

Первая из них является преобразователем последовательного интерфейса I2C в два параллельных 8-разрядных порта ввода-вывода, а вторая - преобразователем последовательного интерфейса SPI в два параллельных 8-разрядных порта ввода-вывода. Рассмотрим состав и основные технические характеристики этих микросхем.

Характеристики

Обе микросхемы обеспечивают преобразование данных из последовательного интерфейса в параллельный 16-разрядный, состоящий из двух 8-разрядных портов. Микросхемы отличаются только типом последовательного интерфейса: МСР23017 имеет интерфейс I2C, a MCP23S17 - интерфейс SPI. Набор внутренних регистров микросхем позволяет сконфигурировать любой вывод порта ввода-вывода. С помощью этих регистров можно задать направление, полярность и тип вывода. Кроме того, данные регистры позволяют создать гибкую систему с различными условиями генерации прерываний. Аппаратные адресные выводы используются для задания адреса самой микросхемы, что позволяет

подключить к одному последовательному интерфейсу одновременно несколько таких микросхем.

Ниже перечислены особенности и основные технические параметры описываемых микросхем:

- наличие двух 8-разрядных дистанционных двунаправленных портов ввода-вывода А и В, которые по умолчанию сконфигурированы как входы;

- скорость работы интерфейса I2C может составлять 100, 400 кГц или 1,7 МГц;

- скорость работы интерфейса SPI может достигать 10 МГц;

- три адресных вывода позволяют использовать до восьми микросхем на одной шине интерфейса;

- допускается конфигурировать выходной сигнал прерывания на выводах INTA и INTB как активный высокий и низкий уровни или открытый сток;

- выходные сигналы прерываний INTAn INTB могут быть сконфигурированы для независимого или совместного обслуживания;

- источник сигнала прерываний конфигурируется с помощью специального регистра и по умолчанию настроен на слежение за изменением сигнала на выводах портов;

- полярность входных данных портов ввода может изменяться с помощью конфигурационного регистра полярности;

- содержит схему сброса при включении питания;

- наличие входа внешнего сброса;

- ток потребления в режиме ожидания не превышает 1 мкА;

- максимальный выходной ток любого вывода составляет 25 мА;

- суммарная максимальная рассеиваемая мощность - 700 мВт;

- диапазон рабочего напряжения от 1,8 до 5,5В;

- температурный рабочий диапазон от -40 до +125°С;

- изготавливаются в 28-выводных корпусах типов PDIP (300 mil), SOIC (300 mil), SSOP и QFN (6x6 мм).

 Архитектура микросхем МСР23017 и MCP23S17

Рис. 1. Архитектура микросхем МСР23017 и MCP23S17

Архитектура

На рис. 1 представлена архитектура микросхем. Как видно из рисунка, микросхемы МСР23017 и MCP23S17 имеют одинаковую структуру и отличаются лишь интерфейсным блоком. Три входных адресных сигнала позволяют задать адрес микросхеме. Это дает возможность подключить к одному последовательному интерфейсу до восьми таких микросхем. Управление микросхемами осуществляется с помощью внутренних регистров конфигурации и управления. С их помощью можно включить автоматическую инверсию для каждой входной линии портов А и В.

Описание выводов

Назначение выводов микросхем МСР23017 и MCP23S17 приведено в таблице 1.

Протокол обмена с микросхемами

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

Микросхема МСР23017 с интерфейсом PC поддерживает 7-разрядную адресацию. Восьмой разряд данных в управляющем байте определяет режим обращения к микросхеме. Он имеет обозначение R/W и инициирует режим чтения (R) или записи (W) при установке соответственно уровня лог. 1 или лог. О в этом разряде. Передача данных на шине всегда начинается со стартового условия S и заканчивается стоповым условием Р, которые показаны на рис. 2.

Для подтверждения приема данных используется девятый бит квитирования, имеющий название АСК. Микросхема MCP23S17 с интерфейсом SPI поддерживает байтовый обмен данными и имеет вход выбора кристалла CS, наличие низкого уровня сигнала на котором разрешает обращение к ней. Формат управляющего байта данных для интерфейса PC представлен на рис. 3, а для интерфейса  SPI - на рис. 4.

Как видно из рисунков, адрес микросхем состоит из двух частей - неизменной части 0100, представляющей собой старшую часть двоичного адреса, и переменной младшей части адреса, определяемой состоянием разрядов А2, А1 и АО. При совпадении их значений адреса и значения сигналов, установленных на адресных выводах микросхемы, последняя будет откликаться на него.
Адресация внутренних регистров микросхем производится с помощью адреса, передаваемого во втором байте. Формат первого и второго байтов для интерфейсов PC и SPI представлен на рис. 5 и 6 соответственно.

Таблица 1. Назначение выводов микросхем МСР23017 и MCP23S17


Условные обозначения: 1 - ввод, О - вывод, Р - питание.

Передача данных на шине

Рис. 2. Передача данных на шине

Формат управляющего байта данных для интерфейса I2С

Рис. З. Формат управляющего байта данных для интерфейса I2С

Формат управляющего байта данных для интерфейса SPI

Рис. 4. Формат управляющего байта данных для интерфейса SPI

Формат первого и второго байтов для интерфейса I2С

Рис. 5. Формат первого и второго байтов для интерфейса I2С

Формат первого и второго байтов для интерфейса SPI

Рис. 6. Формат первого и второго байтов для интерфейса SPI

Описание регистров

Микросхемы МСР23017 и MCP23S17 имеют 11 регистров конфигурирования и управления для порта А и 11 регистров для порта В. Адресовать их можно двумя способами, определяемыми состоянием в регистре IOCON разряда под названием BANK с условной записью IOCON.BANK. Если IOCON.BANK=0, то адреса регистров портов Аи В являются спаренными. Например, регистр IODIRA порта А имеет адрес OOh, а регистр IODIRB порта В - адрес 01 h и т.д. При этом все 22 регистра доступны в диапазоне адресов от OOh до 15h.

Если IOCON.BANK=1, адреса регистров портов А и В отделены. Регистры, связанные с портом А, отображены на адреса OOh-OAh, а регистры, связанные с портом В, отображены на адреса 10h-1 Ah. Например, регистр IODI-RA порта А имеет адрес OOh, а регистр IODIRB порта В - адрес 10h. Таким образом, разряд IOCON.BANK обеспечивает режим 8-разрядного и 16-разрядного обращения к регистрам микросхем. В таблице 2 приведены оба варианта адресации регистров микросхем МСР23017 и MCP23S17. Данная организация регистров позволяет пользователю самостоятельно выбрать удобный режим адресации для обращения к ним из программы.

Рассмотрим назначение каждого из регистров. В таблице 3 отображены имена разрядов всех регистров микросхем для портов А и В. Следует обратить внимание на то, что их названия отличаются друг от друга лишь последней буквой. Кроме того, регистр IOCON является единым для обоих портов, хотя и имеет два адреса. Регистр IODIR определяет направление данных каждого разряда порта ввода-вывода. Когда любой разряд IO7 - Ю0 этого регистра установлен в единичное состояние, соответствующий вывод порта становится входом; когда данный разряд сброшен, вывод становится выходом.

Таблица 2. Адресация    регистров микросхем МСР23017    и MCP23S17


Таблица 3. Имена разрядов регистров микросхем  MCP23017  и MCP23S17                   


Регистр IPOL отвечает за инверсию полярности входов портов. Когда любой разряд IP7 - IP0 этого регистра установлен в единичное состояние, соответствующий вход порта инвертируется; когда данный разряд сброшен, вход порта не инвертируется.

Регистр GPINTEN управляет формированием прерывания для каждого вывода порта. Если любой из его разрядов GPINT7 - GPINT0 установлен, соответствующий вывод сформирует прерывание при изменении своего состояния. Сброс этих разрядов регистра запрещает формирование прерывания при изменении состояния входов портов.

Регистр DEFVAL представляет собой регистр сравнения с разрядами портов и позволяет формировать прерывания для каждого вывода порта при несовпадении соответствующего разряда порта и разряда DEF7 -DEFO данного регистра.

Регистр INTCON управляет реакцией входов порта на регистр сравнения для формирования прерывания. Если разряд ЮС7 - ЮС0 установлен, соответствующий вход порта сравнивается с соответствующим разрядом в регистре DEFVAL. Если разряд ЮС7 - ЮС0 сброшен, соответствующий вход порта сравнивается с его предшествующей величиной.

Регистр конфигурации IOCON содержит несколько разрядов для выбора конфигурации микросхемы:

- разряд 7 (BANK) определяет адресацию регистров (как показано выше);

- разряд 6 (MIRROR) управляет отражением разрядов порта на вход прерывания. Если он сброшен, прерывание на выводе INTA формируется от порта А, а прерывание на выводе INTB - от порта В. Если данный разряд установлен, прерывание на выводах INTAn INTB формируется от любого из портов;

- разряд 5 (SEQOP) управляет автоматическим инкрементом адреса для режима последовательных операций. Если он сброшен, автоинкремент отключен, если установлен - включен. Это позволяет читать и записывать данные в один и тот же регистр, не указывая каждый раз его адрес, а также производить запись и чтение последовательно во все регистры, указав лишь адрес первого регистра;

- разряд 4 (DISSLW) позволяет контролировать скорость изменения сигнала SDA. Если он установлен, скорость изменения сигнала SDA не контролируется, если сброшен - контролируется;

- разряд 3 (HAEN) разрешает аппаратную адресацию (только для MCP23S17). Если он установлен, аппаратная адресация разрешена, а если сброшен - запрещена;

- разряд 2 (ODR) позволяет конфигурировать вывод прерывания как открытый сток, если он установлен. Если этот разряд сброшен, активный уровень вывода прерывания определяется разрядом полярности INTPOL;

- разряд 1 (INTPOL) определяет активный уровень вывода прерывания. Когда он установлен, активный уровень высокий, когда сброшен - низкий;

- разряд 0 не используется и всегда читается как ноль. Регистр GPPU служит для подключения к входам портов подтягивающих к источнику питания резисторов 100 кОм. Когда любой разряд из PU7 - PU0 этого регистра установлен в единичное состояние, соответствующий вывод порта подключается к подтягивающему резистору; когда данный разряд сброшен, соответствующий вывод порта отключается от резистора.

Регистр INTF отражает факт возникновения прерывания от выводов порта, которые сконфигурированы с помощью регистра GPINTEN. Установленный разряд этого регистра указывает, что соответствующий вход порта вызвал прерывание. Этот регистр предназначен только для чтения, запись данных в него игнорируется.

Регистр захвата прерываний INT-САР позволяет определить уровень возникновения прерывания - 0 или 1. Этот регистр только читается и обновляется аппарат-но во время возникновения прерывания. Регистр останется неизменным, пока прерывание не будет очищено с помощью чтения регистра INTCAP или GPIO.

Регистр GPIO отражает значение порта. Чтение из этого регистра считывает порт. Запись в него модифицирует регистр OLAT.

Регистр блокировки OLAT обеспечивает доступ к выходному буферу. Чтение из этого регистра заканчивается чтением буфера, а не самого порта. Запись в него модифицирует выходной буфер, который изменяет выводы, сконфигурированные в качестве выходов.

Структурная схема подключения восьми микросхем МСР23017 к последовательному интерфейсу I2C

Рис. 7. Структурная схема подключения восьми микросхем МСР23017 к последовательному
интерфейсу I2C

Структурная схема подключения восьми микросхем MCP23S17 к последовательному интерфейсу SPI

Рис. 8. Структурная схема подключения восьми микросхем MCP23S17 к последовательному интерфейсу SPI

Конструкция

Конструктивно микросхемы могут быть изготовлены в одном из четырех типов корпусов.
Следует обратить внимание на очень удачное расположение выводов микросхем, которое позволяет разрабатывать простую трассировку для печатной платы. Чертежи корпусов с указанием размеров можно найти на интернет-странице производителя микросхем: www.micro-chip.com.

Схемотехника применения

На рис. 7 показана структурная схема подключения восьми микросхем МСР23017 к последовательному интерфейсу I2C. В качестве управляющего устройства здесь выступает процессор CPU. Аналогичная схема подключения к последовательному интерфейсу SPI представлена на рис. 8. Как видно из представленных схем, первая из них - с последовательным интерфейсом PC - намного проще.

Однако следует помнить, что тактовая частота данного интерфейса не превышает 1,7 МГц. Более сложная схема с последовательным интерфейсом SPI позволяет работать на частоте до 10 МГц.

Заключение

Поскольку стоимость описанных микросхем составляет около 1 доллара США, они хорошо конкурируют с другими микросхемами подобного типа. А простота их применения и удачное для трассировки платы расположение выводов делает их использование предпочтительным.

Если требуется преобразовать последовательный порт в один параллельный байт, можно воспользоваться ранее выпущенными микросхемами МСР23008 и MCP23S08 этой же фирмы, имеющими один 8-разрядный порт ввода-вывода.

 

Статья предоставлена редакцией журнала Электроника. Другие статьи журнала "Электроника" можно прочитать на сайте журнала.

Дата публикации: 01.02.2010

Комментарии

  • Тут ошибка в самом изложении. В таблице 2, графы бита IOCON.BANK при 1 и 0 перепутаны. А на рис.6 не хватает бита А1 во втором байте.

  • ZNLp8Q , [url=http://pkrcpmvelmzx.com/]pkrcpmvelmzx[/url], [link=http://jkhtrctkdfex.com/]jkhtrctkdfex[/link], http://wafxcfkzbljq.com/

  • Kudos! What a neat way of tihnikng about it.

Только зарегистрированные пользователи могут оставлять комментарии.

LiveInternet