КОНТРОЛЛЕРЫ ПОСЛЕДОВАТЕЛЬНОГО ВВОДА/ВЫВОДА

Наличие в составе 8-разрядного МК модуля контроллера последовательного ввода/ вывода стало настолько обычным явлением, что лишь самые простые, маловыводные МК в корпусах DIP16 и DIP20 не имеют портов последовательного обмена. При анализе структуры более сложных 8-разрядных МК отчетливо прослеживается тенденция нали­чия в их составе двух контроллеров последовательного обмена, а в некоторых новейших моделях - даже трех (серия AZ семейства НС08 фирмы «Motorola»). Задачи, которые решаются средствами модуля контроллера последовательного ввода/вывода, могут быть условно разделены на три группы:

1)связь встраиваемой МП-системы с системой управления верхнего уровня: промыш­ленным компьютером, программируемым контроллером, офисным компьютером; наиболее часто для этих целей используются интерфейсы RS-232C и RS-485; в настоящее
время все более широкую популярность приобретает интерфейс USB;

2)связь с внешними по отношению к МК периферийными ИС встраиваемой МП-системы, а также с датчиками физических величин с последовательным выходом; для этих
целей используются интерфейсы SPI, I2C, а также нестандартные протоколы обмена;

3)интерфейс связи с локальной сетью в мультимикропроцессорных системах; в систе­мах с числом МК до пяти обычно используют сети на основе интерфейсов PC, RS-232C,
RS-485 с собственными сетевыми протоколами верхнего уровня; в более сложных систе­мах все более популярным становится протокол CAN.

С точки зрения инженера-схемотехника, упомянутые типы интерфейсов последователь­ной связи отличаются: режимом передачи данных (синхронный или асинхронный), форма­том кадра (число бит в посылке при передаче байта полезной информации) и временными диаграммами сигналов на линиях (уровни сигналов и положение фронтов при переключе­ниях). Число линий, по которым происходит передача в последовательном коде, обычно равно двум (PC, RS-232C, RS-485, CAN) или трем (SPI, некоторые нестандартные синх­ронные протоколы). Последнее позволяет спроектировать модули контроллеров последо­вательного обмена таким образом, чтобы с их помощью на аппаратном уровне можно было бы реализовать несколько типов последовательных интерфейсов. При этом режим пере­дачи (синхронный или асинхронный) и формат кадра поддерживаются на уровне логи­ческих сигналов, а реальные физические уровни сигналов, характерные для каждого типа интерфейса, получают с помощью специальных ИС, которые носят название приемопере­датчиков, конверторов, трансиверов.

В состав 8-разрядных МК различных фирм производителей входят следующие моду­ли контроллеров последовательных интерфейсов:

• модуль последовательного универсального интерфейса USI (Universal Serial Interface); входит в состав МК семейства AVR фирмы «Atmel»; может поддерживать протоколы асинхронного обмена для интерфейсов RS-232, RS-422 и RS-485, а также синхронные протоколы интерфейсов SPI и I2C;

• модуль универсального асинхронного интерфейса UART (Universal Asynchronous Receiver and Transmitter); поддерживает протоколы асинхронного обмена интерфейсов RS-232, RS-422 и RS-485;

• модуль универсального асинхронного интерфейса SCI (Serial Communication Interface); характерен для МК фирмы «Motorola»; входит в состав 8-разрядных МК семейств НС05, НС11 и НС08; является функциональным аналогом модулей типа UART, т. е. Поддерживает протоколы асинхронного обмена для интерфейсов RS-232, RS-422 и RS-485;

• модуль последовательного синхронного интерфейса SPI (Serial Peripheral Interface); поддерживает протокол синхронного обмена в стандарте SPI; интерфейс SPI был предложен фирмой «Motorola», поэтому контроллер SPI входит в состав большого числа моделей МК семейств НС05, НС11 и НС08. В МК других производителей протокол SPI обычно реализуется в качестве альтернативного одним из модулей контроллеров последовательных интерфейсов;

• модуль синхронного последовательного интерфейса PC (Inter Integrated Circuit); входит в состав 8-разрядных МК фирмы «Pfilips» и «Microchip»; следует заметить, что для МК «Microchip» характерна реализация аппаратными средствами одного и того же моду­ля протоколов SPI и PC;

• модуль контроллера CAN (Control Aria Network); присутствует в 8-разрядных МК семейства НС08 фирмы «Motorola», МК семейства С500 фирмы «Infineon», семейства 89 фирмы «Pfilips»; поддерживает стандартные протоколы обмена CAN сетей;

• модуль контроллера USB (Universal Serial Bus); поддерживает новый стандарт пери­ферийного интерфейса вычислительной техники USB.

Протоколы интерфейсов локальных сетей на основе МК - I2C и CAN - отличает более сложная логика работы. То же можно сказать и о новом стандарте периферийного интер­фейса USB. Поэтому контроллеры CAN и USB интерфейса всегда выполняются в виде самостоятельного модуля, аппаратные средства которого ориентированы на поддержку соответствующих протоколов обмена. Интерфейс I2C с возможностью работы как в веду­щем, так и ведомом режиме, также обычно поддерживается специальным модулем (мо­дуль последовательного порта в МК 89С52 фирмы «Philips»). Но если реализуется только ведомый режим PC, то в МК PIC16 «Microchip» он успешно сочетается с SPI: настройка одного и того же модуля на один из протоколов осуществляется путем инициализации.

Следует заметить, что одноименные модули контроллеров последовательных интер­фейсов даже одной фирмы-производителя имеют отличия в реализации для разных семейств МК. Так, аппаратные средства контроллера SCI в составе МК семейства НС08 диагностируют большее количество ошибок на линии, чем одноименные контроллеры в составе семейства НС05. И естественно, отличаются одноименные модули в МК раз­личных фирм. Однако эти отличия преимущественно сводятся к различию регистров спе­циальных функций, которые обслуживают модуль. Меньше затрагивают алгоритмы фун­кционирования одноименных модулей. И, по определению, все аналогичные модули обя­зательно реализуют на аппаратном уровне логику протокола обмена выбранного ин­терфейса. Поэтому при рассмотрении данной темы целесообразно остановиться именно на протоколах обмена. По режиму обмена информацией интерфейсы подразде­ляют на симплексные, полудуплексные, дуплексные, мультиплексные. В интерфейсах с симплексным режимом обмена информацией возможна лишь однонаправленная пе­редача информации от одного абонента к другому. Соответственно и буферы приемника и передатчика информации выполнены однонаправленными. В интерфейсах с полудуп­лексным режимом обмена в произвольный момент времени может производиться либо только прием, либо только передача данных между двумя абонентами, буферы приемо­передатчика каждого из абонентов связи выполнены двунаправленными. В интерфей­сах с дуплексным режимом обмена в любой произвольный момент времени может про­изводиться одновременный прием и передача данных между двумя абонентами. Линии приема и передачи информации физически разделены, соответственно контроллер об­мена каждого абонента имеет два вывода (приемника и передатчика), и буферы этих выводов однонаправленные. В интерфейсах с мультиплексным режимом обмена в каж­дый момент времени может осуществляться прием или передача данных между парой любых абонентов сети.

Среди большого множества различных типов встроенных контроллеров последова­тельного обмена, которые входят в состав тех или иных 8-разрядных МК, сложился стан­дарт «де-факто» - модуль UART (Universal Asynchronous Receiver and Transmitter).

В переводе с английского UART - универсальный асинхронный приемопередатчик. Од­нако многие из модулей UART кроме асинхронного режима обмена способны также реа­лизовать простейший режим синхронной передачи данных. Поэтому более правильным с точки зрения терминологии было бы именовать эти модули USART (Universal Synchronous/Asynchronous Receiver and Transmitter) - универсальный синхронно/асинх­ронный приемопередатчик. Такой термин тоже существует, но пользуются им редко.

Не все производители МК используют термин UART для обозначения типа модуля кон­троллера последовательного обмена. Так, в МК фирмы «Motorola» модуль асинхронной приемопередачи, который поддерживает те же режимы асинхронного обмена, что и UART, принято называть SCI (Serial Communication Interface). Следует отметить, что модуль типа SCI обычно реализует только режим асинхронного обмена, однако МК фирмы «Motorola» традиционно имеют в своем составе два модуля последовательного обмена: модуль SCI с возможностью реализации только протоколов асинхронной приемопередачи для ин­терфейсов RS-232C, RS-422A, RS-485 и модуль контроллера синхронного интерфейса в стандарте SPI.

Модуль типа UART в максимальной конфигурации обычно реализует два типа протокола обмена в асинхронном режиме (кадр длиною в 10 бит или в 11 бит) и два типа протокола в синхронном режиме (трехпроводный полнодуплексный обмен или двухпроводный полудуплексный обмен). Упрощенная структура модуля типа UART приведена на рис. 4.19.

Модуль состоит из двух независимых подсистем: передатчика (Transmitter) и прием­ника (Receiver), поэтому возможен режим одновременной передачи и приема инфор­мации в последовательном коде. Основу каждой подсистемы составляют сдвиговый регистр и параллельный регистр буфера данных. Обращение к буферу данных приемни­ка и передатчика осуществляется по одному и тому же адресу, но при выполнении опе­рации записи данные будут помещены в буфер передатчика TDBUF, операции чтения -данные будут считаны из буфера приемника RDBUF.

Передача данных от МК к другому устройству инициируется посредством записи бай­та данных в регистр TDBUF.

 

 

Если работа передатчика разрешена (бит ТЕ в регистре управления модулем равен 1), то аппаратные средства модуля загружают содержимое TDBUF в сдвиговый регистр и под управлением генератора скорости обмена биты из сдвигового регистра, начиная с младшего DO, последовательно передаются на вывод TxD МК. По завершении передачи байта данных устанавливается бит TI, который инфор­мирует МК о том, что буфер передатчика пуст и в него могут быть загружены новые данные для передачи. Бит TI генерирует запрос на прерывание, если прерывания от передатчика в МК разрешены. Бит TI может также быть считан программно.

Если работа приемника разрешена (бит RE в регистре управления модулем равен 1), то после распознавания стартового бита аппаратные средства приемника преобразуют данные, которые поступают на вход RxD в последовательном коде, в параллельный код. После завершения приема последнего бита в сдвиговом регистре приемника находится принятый байт данных, который автоматически переносится в регистр RDBUF. Одновре­менно устанавливается в «1» флаг завершения приема RI. Бит RI может быть считан под управлением программы, а если прерывания от приемника разрешены, то генери­руется запрос на прерывание. В процессе выполнения подпрограммы прерывания при­нятый байт данных считывается из регистра данных приемника RDBUF в память МК. Сразу после копирования байта данных из сдвигового регистра в RDBUF приемник мо­жет начать формирование следующего байта данных, отдельные биты которого продол­жают поступать на вход RxD. Однако необходимо, чтобы центральный процессор МК успел считать данные из буферного регистра RDBUF до завершения формирования в сдвиговом регистре следующего принятого байта. Если этого не произошло, то возник­шая аварийная ситуация в модулях UART разрешается различными путями. В модулях SCI фирмы «Motorola» запись следующего принятого байта в буферный регистр данных не производится и устанавливается флаг ошибки OR (Overrun). Этот флаг наравне с триг­гером RI может генерировать запрос на прерывание от приемника. В модулях МК Intel MSC-51 и ему полностью аналогичных такая защита отсутствует: следующий принятый байт затирает предыдущий в регистре RDBUF.

Для повышения достоверности приема каждого разряда аппаратные средства моду­ля UART считывают уровень сигнала на входе RxD три раза в течение интервала присут­ствия бита. Значение бита, которое будет занесено в младший разряд сдвигового реги­стра приемника, определяется мажоритарным способом: по принципу два из трех. Модули SCI сообщают пользователю о наличии шума на линии приема: если не все три значения при приеме любого из битов кадра совпали, то устанавливается флаг NF (Noise Error). В модулях UART MK Intel MSC-51 такая защита не предусмотрена.

Подсистемы приемника и передатчика модуля UART не являются полностью авто­номными. Скорость обмена и формат кадра асинхронной приемопередачи назначают­ся в процессе инициализации модуля одинаковыми для приемника и для передатчика. Модули UART различных МК предоставляют неодинаковые возможности по регулиро­ванию скорости обмена. В МК Intel MSC-51 допускается плавное регулирование с диск­ретностью, равной периоду частоты тактирования таймера. Для задания скорости обмена используется один из каналов модуля таймера. Напротив, модуль SCI МК Motorola не использует ресурсы модуля таймера для этих целей. Такой подход, с одной стороны, имеет преимущество по экономии использования ресурсов МК, однако, с дру­гой стороны, не позволяет задать произвольное соотношение между частотой обмена и собственной частотой кварцевого резонатора генератора синхронизации МК. Последнее накладывает ограничения на выбор частоты кварцевого резонатора, если скорость обмена в разрабатываемом устройстве должна соответствовать стандартному ряду.

Все модули типа UART предусматривают два типа кадров асинхронного обмена, На рис. 4.20 представлена временная диаграмма 10-битового кадра: 8 бит данных пере­даются вслед за стартовым битом, начиная с младшего DO, завершает передачу стоповый бит

 

Логические уровни для передачи стартового бита (низкий) и стопового бита (высокий) формируются аппаратными средствами передатчика. Приемник распознает начало передачи нового кадра по изменению уровня сигнала на входе RxD с высокого, который может длиться сколь угодно долго, на низкий. Передаваемая в кадре полез­ная информация длиною в один байт может кодироваться абсолютно произвольно. Но может быть использовано и стандартное решение, при котором информация кодируется семью битами D6 - DO, старший бит D7 используется для контроля правильности при­ема. С этой целью передающий МК кодирует бит паритета D7 из условия четного (конт­роль на четность) или нечетного (контроль на нечетность) числа единиц в передаваемом слове, а принимающий МК производит проверку принятого кода в соответствии с выб­ранным способом кодирования. Если число единиц в байте данных соответствует выб­ранному способу кодирования, т. е. четное (нечетное), то передача считается успешной.

Следует заметить, что не все модули UART 8-разрядных МК имеют опции автомати­ческого формирования бита паритета и не контролируют принятое слово на четность или нечетность аппаратными средствами. Поэтому при необходимости эти операции дол­жны быть реализованы программными средствами. Рассмотренный 10-битовый формат кадра наиболее часто используется при организации связи встраиваемой МП системы с системой управления верхнего уровня.

Временная диаграмма 11-битового кадра асинхронного обмена представлена на рис. 4.21: 9 бит данных обрамляются одним стартовым и одним стоповым битом. При формировании 9-разрядного слова для передачи сначала старший разряд 08 поме­щается в бит Т8 одного из регистров управления модулем, а затем младшие разряды 07 - DO записываются в обычном порядке в регистр TDBUF. При приеме 9-разрядного слова младшие биты D7 - DO размещаются в регистре RDBUF, старший бит D8 переда­ется в разряд R8 одного из регистров управления. Рассматриваемый формат представ­ления кадра обычно используется для организации протокола обмена верхнего уровня в локальных сетях на основе нескольких МК. С этой же целью в модулях UART реализо­ван специальный режим ожидания с механизмом пробуждения (Wake-up).


На рис. 4.22 приведена структура такой локальной сети. Один из МК в этой сети являет­ся ведущим, все остальные - ведомыми. В каждый момент времени обмен возможен меж­ду ведущим и одним из ведомых, обмен между двумя ведомыми не реализуется. Инициа­тором обмена всегда является только ведущий. Обмен производится пакетами, каждый из которых включает не менее трех 11-битовых кадров. Первый кадр определяет адрес ведомого МК, с которым будет производиться обмен. Бит D8 этого кадра должен быть равен «1».

Следующий кадр используются для обмена данными с выбранным ведомым.

 

Рис. 4.22.Структура локальной сети микро­контроллера

Бит D8 этих кадров должен быть установлен в «0». Последний кадр пакета обмена дол­жен содержать 11 нулевых битов. Так как подобная последовательность не может быть сформирована в результате записи в регистр буфера передатчика TDBUF нулевого слова | (необходимо также обнулить стоповый бит), то для ее воспроизведения предусмотрена специальная опция формирования сигнала «Break». В модулях SCI для ее реализации необходимо установить бит SBK (Send Break) в одном из регистров управления. Обмен между ведущим и ведомым происходит в следующем порядке.

• В исходном состоянии приемники всех ведомых МК находятся в состоянии ожидания.
В этом состоянии прием байта данных осуществляется, но принятое слово переписы­вается в буферный регистр RDBUF с одновременной установкой в «1» флага завер­шения приема RI только в том случае, если бит D8 этого слова равен «1». Остальные слова с признаком D8 = 0 игнорируются.

• Ведущий МК посылает всем ведомым одновременно первый кадр пакета обмена. Раз-ряды D7 - DO этого кадра содержат адрес ведомого, бит D8 равен «1».

• Все ведомые МК принимают это 9-разрядное слово, и, поскольку разряд D8 кадра равен «1», приемник модуля UART каждого МК выходит из состояния ожидания. Фор­мируется запрос на прерывание. Подпрограмма обработки этого прерывания срав­нивает принятый адрес с собственным адресом в локальной сети. Если адреса совпа­дают, т. е. ведущий будет производить обмен именно с этим ведомым, то МК ожидает
передачи от ведомого следующего кадра. Если адреса не совпадают, то МК посред­ством специального бита управления переводит приемник модуля UART снова в режим ожидания. Тогда все следующие кадры пакета обмена этим МК восприняты не будут, поскольку они содержат нулевой разряд D8.

• Ведущий МК передает ведомому необходимое число байтов, сопровождая каждый из них признаком данных D8 = 0. При необходимости ведущий принимает данные от ведо­мого. О завершении обмена ведущий информирует ведомый посылкой сигнала «Break».

• Ведомый в ответ на сигнал «Break» переводит приемник модуля UART в состояние ожида­ния. Локальная сеть приведена в исходное состояние и готова к передаче нового пакета.

Кроме рассмотренных режимов асинхронного обмена, многие из модулей UART под­держивают режим синхронной приемопередачи. Так, вМКМЗС-51 контроллер последова­тельного интерфейса реализует полудуплексный обмен в синхронном режиме, при кото­ром импульсы синхронизации выдаются на линию TxD, данные передаются или принима­ются по линии RxD (см. 4.2.7). Важно отметить, что при синхронном обмене модуль UART МК MSC-51 может работать только в ведущем режиме, т. е. именно этот модуль формирует импульсы синхронизации независимо от направления обмена. Модуль SCI МК МС68НС705В16 (модуль типа UART) реализует симплексный синхронный обмен, при ко­тором возможно только одно направление передачи данных: из МК к периферийной ИС.

Большинство МК фирмы «Motorola» имеют в своем составе контроллер последователь­ного интерфейса SPI (Serial Peripheral Interface). Стандарт SPI предложен фирмой «Motorola». Он предназначен для связи МК с периферийными устройствами МП системы. Наиболее часто эти устройства расположены на одной плате с МК, реже - это вынесенные пульты управления, индикаторные панели и т. п.

 

Рис. 4.23.Сопряжение МК с периферийными ИС посред­ством интерфейса SPI

В качестве пе­риферийных устройств могут использоваться как простей­шие сдвиговые регистры, так и сложные периферийные ИС со встроенными контроллера­ми управления, такие как ЦАП, сигма-дельта АЦП с цифровой фильтрацией, последова­тельные запоминающие устройства типа FLASH или EEPROM, энергонезависимые ОЗУ и т. д. В редких случаях интерфейс SPI используется для обмена данными между не­сколькими МК системы.

На рис. 4.23 представлена структурная схема сопряжения МК и двух периферийных ИС с использованием интерфейса SPI. В рассматриваемом примере МК является веду­щим устройством, он инициирует обмен при передаче информации между МК и одной из периферийных ИС. Каждая из периферийных ИС является устройством ведомым. SPI- шина представлена тремя общими линиями связи (MISO, MOSI, SCK) и двумя лини­ями выбора ведомого устройства (SS1, SS2), которые индивидуальны для каждой пери­ферийной ИС:

MOSI - линия передачи данных от ведущего к ведомому (Master Output Slave Input); MISO - линия передачи данных от ведомого к ведущему (Master Input Slave Output);

SCK-линия сигнала стробирования данных;

SS1 и SS2-линии сигналов выбора ведомого устройства.

Как видно из рис. 4.23, образованная на основе интерфейса SPI мини-сеть относится к классу магистрально-радиальных. Линии передачи данных и линия синхронизации яв­ляются примером шинной организации, а линии выбора ведомого устройства - элемент системы радиального типа. Перед началом обмена (рис. 4.24) ведущее устройство отме­чает одно ведомое устройство, с которым будет производиться обмен. Для этого на линии выбора устройства SSi устанавливается низкий активный уровень сигнала. Затем ведущее устройство последовательно выставляет на линию MOSI восемь бит информа­ции, сопровождая каждый бит сигналом синхронизации SCK Ведомое устройство дешифрирует переданный байт информации и определяет, в каком направлении будет про­изводиться дальнейший обмен. Если ведомое устройство должно принимать информа­цию, то ведущее устройство, не снимая сигнала выбора ведомого SSi, продолжит пере­дачу по линии MOSI. Если ведомое устройство должно передавать информацию, то оно активизирует линию MISO и в ответ на каждый импульс синхронизации от ведущего бу­дет выставлять один бит информации. Длина посылки обмена в общем случае не огра­ничена, но для правильной работы модуля SPI должна составлять целое число байтов. Завершение обмена также инициируется ведущим посредством установки в неактивное состояние сигнала выбора ведомого SSi.

 


Для подключения к SPI-шине встроенный контроллер SPI имеет четыре вывода: MOSI, MISO, SCK, SS. Модули контроллеров SPI фирмы «Motorola» могут работать как в веду­щем, так и в ведомом режимах. Скорость приема и передачи определяется частотой тактирования межмодульных магистралей МК fBUS: в ведущем режиме скорость обмена не может превышать /gus/2, в ведомом режиме максимальная скорость обмена равна fgus.Поэтому для МК семейства НС05 максимальная скорость обмена в ведущем режиме составляет 1 Мбит/с, в ведомом - 2 Мбит/с. Аналогичные показатели для МК семейства НС08 соответственно 4 и 8 Мбит/с.

При работе встроенного контроллера в ведущем режиме к выводу MOSI подклю­чается выходная линия данных, а к MISO - входная. При работе в ведомом режиме выво­ды меняются ролями. Вывод SCK является выходом, если контроллер SPI работает в ведущем режиме, и входом, если - в ведомом. В системах с несколькими ведущими устройствами все выводы SCK соединяются вместе. То же делается с выводами MOSI и MISO. На время отсутствия связи буферы выводов встроенного контроллера SPI пе­реводятся в высокоимпедансное состояние. Последнее позволяет избежать конфликтов на шине SPI. В противном случае несколько выводов MISO ведомых устройств одно­временно были бы активными, что не позволило бы ведущему устройству произвести прием достоверной информации.

 

Вывод SS встроенного контроллера SPI используется в зависимости от того, в каком режиме работает данное устройство. При работе в ведомом режиме при подаче высокого уровня сигнала на вход SS устройство игнорирует сигналы SCK и удерживает вывод MISO в высокоимпедансном состоянии. Если же в ведомом режиме работы на вхо­де SS установлен низкий логический уровень, то буферы линий MOSI и SCK разворачива­ются на ввод, линия MISO - на вывод. При работе в ведущем режиме вывод SS может быть использован как обычная линия вывода. В системах со сложной логикой работы этот вывод может использоваться как вход сигнала обнаружения ошибки для индикации состо­яния шины в случаях, если более чем одно устройство пытается стать ведущим.

Схема управления контроллера SPI интерфейса позволяет выбрать один из двух про­токолов обмена и полярность импульсов синхронизации SCK. При работе в ведущем режиме возможно также программно выбрать частоту импульсов синхронизации.

Два бита регистра управления любого контроллера SPI интерфейса определяют вре­менную диаграмму обмена по шине SPI:

1) бит СРНА назначает протокол обмена;

2} бит CPOL определяет полярность сигнала синхронизации SCK.

В соответствии с комбинацией битов CPHA:CPOL принято различать четыре режима работы интерфейса SPI. Комбинации CPHA:CPOL = 00 соответствует режим 0, комбина­ции CPHA:CPOL =11— режим 3. Встроенный контроллер SPI МК позволяет программно настраивать режим SPI в процессе инициализации, в то время как периферийные ИС ре­ализуют один или два режима SPI, которые определяются их техническим описанием. Наи­более часто это режимы 0 и 3.

На рис. 4.25 представлены временные диаграммы сигналов для протокола пере­дачи СРНА = 0. Для сигнала SCK приводятся две диаграммы, различающиеся поляр­ностью сигнала.

Первая соответствует режиму 0, вторая - режиму 1. Диаграммы относятся как к веду­щему, так и к ведомому устройству, поскольку выводы MISO и MOSI ведущего соединены с аналогичными выводами ведомого. Сигнал SS подается только на ведомое устрой­ство. Поэтому вывод SS у ведущего остается незадействованным и его диаграмма не представлена, но имеется в виду, что она соответствует неактивному состоянию. Встроен­ные контроллеры SPI выполнены таким образом, что длина посылки составляет один байт, что и отражено на временных диаграммах.

Начало обмена рассматриваемого протокола определяется установкой сигнала выбора ведомого SS в активное состояние SS = 0. При направлении передачи от ведущего к ведомому первый перепад сигнала синхронизации SCK используется ведомым устрой­ством для запоминания очередного бита во внутреннем сдвиговом регистре контроллера SPI. Ведущий выставляет очередной бит посылки на линии MOSI по каждому четному фронту сигнала SCK. При передаче данных от ведомого к ведущему старший бит переда­ваемого байта должен быть выставлен ведомым на линию MISO сразу после изменения уровня сигнала SS = 0. По первому фронту SCK уровень сигнала на линии MISO будет запомнен в младшем разряде сдвигового регистра ведущего устройства. По этой причине сигнал на линии выбора ведущего должен быть возвращен в неактивное состояние SS = 1 после передачи каждого байта в любом направлении. Тогда передача каждого нового бай­та будет сопровождаться предварительной

установкой SS в «0»

 

 

 

Начало обмена для протокола опции СРНА = 1 (рис. 4.26) определяет первое измене­ние уровня сигнала на линии SCK после установки сигнала выбора ведомого SS в актив­ное состояние SS = 0. При передаче данных от ведущего к ведомому и в обратном на­правлении все нечетные перепады SCK вызывают выдвижение очередного бита посыл­ки из сдвигового регистра передатчика на линию. Каждый четный перепад используется для записи этого бита в сдвиговый регистр приемника. Сигнал выбора ведомого может оставаться в активном состоянии SS = 0 в течение передачи нескольких байт информа­ции. Это несколько упрощает логику программного драйвера SPI.

Рассмотренные протоколы обмена не имеют различий по скорости и надежности пе­редачи информации. Выбор протокола диктуется периферийным устройством. В неко­торых случаях полярность и фаза сигнала SCK изменяются между передачами для того, чтобы обеспечить связь с устройствами, имеющими различный протокол. Пример кон­троллера SPI рассмотрен в п. 4.3.9.

Интерфейс I2C является двухпроводным последовательным интерфейсом, разрабо­танным фирмой «Philips Corporation».

Основными свойствами интерфейса PC являются следующие:

 

• двунаправленная передача данных между главными и подчиненными устройствами;

• многоабонентская шина (центрального главного узла в сети может не быть);

• арбитраж между одновременно передающими устройствами без разрушения целост­ности передаваемых данных;

• последовательная тактовая синхронизация позволяет приборам с различными скоро­стями передачи битов осуществлять связь через одну последовательную шину;

• последовательная тактовая синхронизация может использоваться в качестве механизма квитирования установления связи, чтобы приостанавливать и возобновлять пос­ледовательную передачу.

Магистраль интерфейса I2C использует две линии для передачи информации между приборами:

1)SDA - двунаправленную линию данных;

2)SCL - линию сигнала стробирования данных.

Типовая конфигурация PC-шины показана на рис. 4.27.

 

 

 

В протоколе интерфейса I 2C каждое устройство имеет адрес. Когда ведущее устрой­ство желает инициировать передачу данных, оно передает адрес устройства, с которым будет производить обмен. Все устройства на шине следят за выставляемым на шину адресом и сравнивают его с собственным адресом. Вместе с адресом передается бит направления передачи R/W, который определяет, будет ли ведущий читать из ведомо­го или будет писать в него. При R/W = 0 реализуется режим записи в ведомое устрой­ство. При R/W = 1 реализуется режим чтения из ведомого устройства. Интерфейс I2C поддерживает два формата передачи адреса. Простейший - 7-битный формат с битом R/W в младшем разряде передаваемого байта (рис. 4.28). Более сложным является 10-битный формат.

В зависимости от направления передачи возможны два типа обмена данными для I 2C шины.

 

1.Передача данных от главного передатчика к подчиненному приемнику. Первый байт,передавае-

 

мый передатчиком, является адресом подчиненного приемника. Затем следу­ет несколько байтов данных. Подчиненный приемник возвращает бит подтверждения после каждого принятого байта.

 

2.Передача данных от подчиненного передатчика к главному приемнику. Первый байт
(адрес подчиненного передатчика) передается главным устройством. Затем подчинен­ный передатчик возвращает бит подтверждения. Следующие несколько байтов данных
передаются подчиненным устройством главному. Главное устройство возвращает бит
подтверждения после каждого принятого байта, кроме последнего. В конце последнего
принятого байта возвращается «нет подтверждения».

Когда нет передачи данных, реализуется режим ожидания: линии тактирования SCL и данных SDA приведены подтягивающими резисторами к высокому уровню логического сигнала.

 

 

Ведущее (главное) устройство генерирует все последовательные синхроимпульсы и условия START и STOP, определяющие начало и конец передачи данных. Условие START определяется как переход SDA из высокого уровня в низкий при высоком уровне SCL, а условие STOP - как переход SDA из низкого уровня в высокий при высоком уровне SCL (рис. 4.29). Ввиду такого способа определения условий START и STOP при передаче данных линия SDA может изменять свое состояние только при низком уровне SCL.

Модуль контроллера интерфейса 12С, который удовлетворяет спецификации 12С-шины и поддерживает два вышеперечисленных типа передачи данных, может работать в сле­дующих четырех режимах.

1.Режим главного передатчика. Последовательный вывод данных через выход SDA
передатчика, в то время как на выходе SCL передатчика формируются последователь­ные синхроимпульсы. Первый переданный байт содержит адрес подчиненного приемно­го устройства (7 бит) и бит направления данных R/W = 0. В этом случае говорят, что
передается «W». Таким образом, первый переданный байт представляет собой адрес
подчиненного приемника плюс «W». Последовательные данные передаются по 8 бит.
После отправки каждого байта главный передатчик ожидает от подчиненного устройства
бит подтверждения ASK. Условия START и STOP формируются ведущим (главным)
устройством для указания начала и конца сеанса последовательного обмена посылкой,
состоящей в общем случае из нескольких байтов.

2.Режим главного приемника. Первый переданный приемником байт содержит ад­рес подчиненного передающего устройства (7 бит) и бит направления данных R/W = 1.
В этом случае говорят, что передается «R». Таким образом, первый переданный прием­ником байт представляет собой адрес подчиненного передатчика плюс «R». Последовательные данные передаются по линии SDA от ведомого (подчиненного) устройства
к ведущему (главному), в то время как импульсы синхронизации на линии SCL формиру­ет ведущий. Последовательные данные передаются по 8 бит. После того, как ведущий
(главный) принял очередной байт, он выставляет на линию сигнал подтверждения приема ASK. Сигналы START и STOP формируются ведущим.

3.Режим подчиненного приемника. Последовательные данные и синхроимпульсы передаются по линиям SDA и SCL на одноименные входы подчиненного приемника. После
того, как принят каждый байт, приемник анализирует наличие на линии бита подтверждения ASK, который формирует передатчик. Условия START и STOP формируются передат­чиком. Распознавание адреса выполняется аппаратными средствами модуля приемника
после приема адреса подчиненного устройства и бита направления.

4. Режим подчиненного передатчика. Первый байт принимается и обрабатывается
подчиненным передатчиком так же, как и в режиме подчиненного приемника. Однако бит
направления в принятом байте будет указывать, что направление обмена должно быть
изменено на обратное. Далее последовательные данные передаются по линии SDA
с одноименного выхода подчиненного (ведомого) передатчика, в то время как синхроим­пульсы принимаются им по входу SCL от главного приемника. После передачи каждого
байта подчиненный передатчик анализирует наличие на линии бита подтверждения ASK.
Условия START и STOP формирует главный приемник.

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

 


Разработанный в середине 1980-х фирмой «Bosch» для систем управления узлами автомобиля, протокол CAN (Controller Area Network - сеть контроллеров) является пос­ледовательным протоколом высокоскоростной и высоконадежной передачи данных в широковещательном (broadcast) режиме в мультимастерной среде. Удачное сочетание низкой стоимости подключения, простоты и надежности с доступностью элементной базы и инструментальных средств разработки - одни из основных достоинств CAN-технологии. Положения стандарта, закрепленные в используемой на сегодня спецификации 2.0А/В фирмы «Bosch» и международном стандарте ISO 11898, соответствуют двум на­чальным уровням (физическому и канальному) 7-уровневой модели взаимодействия открытых систем ISO/OSI. Ряд оригинальных технических решений, реализованных при разработке протокола, наилучшим образом позволили сориентировать его на решение задач контроля и управления.

Структура CAN-сети представлена на рис. 4.30. Шинная топология, являющаяся основой CAN, требует наличия механизма адресации узлов, однако в CAN нет адре­сов как таковых: сообщение принимается всеми узлами. Любое передаваемое сообще­ние имеет определяющий его содержание уникальный идентификатор (ID), на основа­нии которого каждый узел фильтрует «свои» сообщения и «решает», реагировать или нет на сообщение, транслируемое в данный момент. Неоспоримыми преимуществами отсутствия адресации являются теоретически неограниченное число узлов и простота их добавления и отключения.

 

 

  Рис. 4.30. Структура CAN-сети   Физическая среда передачи данных в CAN может быть самой разной - ви­тая пара, плоский кабель, оптоволокно, а так же радио- и ИК-каналы и даже линии электропередач. Основным ог­раничением протяженности шины яв­ляется лишь предельно допустимая суммарная задержка распространения сигнала для заданной скорости пере­дачи (в кабелетрансиверах, входных цепях контроллеров и т. д.). В соответ­ствии с рекомендациями IS011898 при использовании стандартных трансиверов и быстродействующих оптопар (для гальвани-ческой развязки) максимальная протяженность сети при скорости передачи 1 Мбит/с ограничена девятью мет­рами. Предельная рекомендуемая протяженность сети в соответствии с тем же стандар­том достигается при снижении скорости передачи до 50 кбит/с. А в документах промыш­ленной CAN-группы CiA (CAN in Automation) приведены следующие полученные практи­ческим путем соотношения «скорость - протяженность» для проводной сети без галь­ванической развязки: 1 Мбит/с - 30 м; 500 кбит/с -100 м; 125 кбит/с - 500 м; 20 кбит/с -2500 м; 10 кбит/с - 5000 м.   Сообщения, передаваемые по CAN-шине, именуются фреймами. Форматы фреймов передаваемых данных приведены на рис. 4.31. В зависимости от инициатора передачи и ее цели существуют четыре типа фреймов: 1)Data Frame - фрейм данных; 2)Remote Frame - фрейм запроса данных; 3)Error Frame - фрейм ошибки; 4)Overload Frame - фрейм перегрузки. Собственно для передачи данных используется Data Frame, в поле данных которого (Data Field) могут находиться от 0 до 8 байтов данных. Поле арбитража (Arbitration Field) фрейма включает в себя идентификатор (ID), одно­значно определяющий содержание и приоритет сообщения. Стандартным форматом со­общений (CAN Specification 2.0A) предусмотрен 11-битный идентификатор, позволяющий различать до 20348 типов сообщений (на практике обычно до 2032), а расширенный (CAN Specification 2.0B) - 29-битный (стандартный 11-битный  


с 18-битным расширением) с тео­ретически возможным числом типов сообщений более 536 млн. Фреймы, соответствую­щие стандартному и расширенному форматам сообщений, приведены на рис. 4.31.

Бит RTR (Remote Transmission Request - запрос передачи данных) для фрейма дол­жен иметь доминантный уровень. В расширенном формате фрейма бит SRR (Substitute Remote Request) с рецессивным уровнем заменяет следующий (в стандартном форма­те) за 11-разрядным идентификатором бит RTR. Бит распознавания формата фрейма IDE (ID Extension) имеет доминантный уровень для стандартного формата фрейма и рецессивный -для расширенного. Биты r0 и r1 - резервные.

В поле управления (Control Field) содержится 4-разрядный код, задающий длину поля данных (0-8 байт) - DLC - Data Lenght Code. Поле контрольной суммы CRC Field включает в себя контрольную сумму сообщения (15 бит) и бит-разделитель. В поле под­тверждения АСК (Acknowledgement) передающий узел всегда выставляет рецессивный уровень. В случае, если передача прошла успешно, приемный узел сигнализирует об этом установкой в этом поле доминантного уровня.

Начинается фрейм доминантным битом SOF (Start of Frame), служащим также для синхронизации битового потока, а заканчивается семью битами рецессивного уровня поля EOF (End of Frame) и 3-битным того же уровня промежутком между фреймами.

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


 

Для запроса данных от удаленного узла служит фрейм запроса данных Remote Frame, также имеющий стандартный и расширенный форматы. Отличия фрейма запроса дан­ных от фрейма данных - в отсутствии поля данных и рецессивном уровне бита RTR. При получении фрейма запроса данных запрашиваемый узел отвечает передачей фрейма данных.

Сигнализация об ошибках происходит посредством передачи фрейма Error Frame. Он инициируется любым узлом (в CAN правильность передачи контролируется каждым узлом), обнаружившим ошибку.

Шесть доминантных бит флага ошибки (активный флаг ошибки) перекрывают остаток ошибочно переданного фрейма и создают глобальную ошибку в сети - ошибку битстаффинга, которая воспринимается остальными узлами, если им не удалось обнаружить пер­воначальную (локальную) ошибку. Далее они выставляют свои флаги ошибки. Ввиду этого обстоятельства последовательность доминантных бит (суперпозиция флагов ошибки) мо­жет иметь длину от 6 до 12 бит. Ненадежным или частично поврежденным узлам (см. ниже) при обнаружении ошибки разрешено посылать лишь пассивный флаг ошибки - последо­вательность шести рецессивных бит.

Для задержки передачи данных или посылки фрейма запроса данных (при неготовно­сти приемника или наличии доминантных бит в промежутке между фреймами) служит фрейм перегрузки Overload Frame. В отличие от фрейма ошибки он не влияет на счетчик ошибок и не вызывает повторную передачу сообщения.

Несколько необычно решается проблема коллизий (столкновений в сети), присущая шинной топологии. В этом случае снова используется идентификатор сообщения в соче­тании со схемой подключения к шине типа «монтажное ИЛИ», где узел, выставляющий на шину «О» - доминантный уровень, подавляет «1» - рецессивный уровень, выставлен­ный другим узлом. Победителем в арбитраже является узел, имеющий идентификатор с наименьшим численным значением и, как следствие, наивысший приоритет. Только победивший узел продолжает передачу данных, остальные пытаются сделать это позже. На рис. 4.68 наглядно отражена процедура арбитража при попытке передачи сообщений одновременно четырьмя узлами сети.

Подобный режим доступа к шине известен как CSMA/CD+AMP (Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority) - множественный дос­туп с контролем несущей, обнаружением коллизий и арбитражем на основе приоритета сообщений. Этот режим не позволяет поспорившим узлам устраивать столкновение на шине, а сразу выявляет победителя. CAN-протокол, изначально разработанный специ­ально для систем управления жизненно важными узлами автомобилей, критичных к уров­ню безопасности и степени достоверности передаваемых данных, обладает эффектив­ными средствами обнаружения ошибок.

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

 

4.2. СЕМЕЙСТВО МК MCS-51 ФИРМЫ «INTEL»

АРХИТЕКТУРА МК 8051 АН

На рис. 4.32 приведена внутренняя структура МК 8051 АН фирмы «Intel», с которого началось семейство MCS-51 (отечественный аналог 1816ВЕ51). Контроллер включает следующие модули:

• центральный процессор CPU MCS-51; разрядность обрабатываемого слова состав­ляет один байт;

• внутреннюю память программ объемом 4096 однобайтовых ячеек памяти

(4 Кбайта);

• внутреннюю память данных объемом 128 однобайтовых ячеек;

• четыре 8-разрядных параллельных порта ввода/вывода; _

• два 16-разрядных программируемых таймера;

• последовательный порт;

• схему формирования сигналов внешней мультиплексированной магистрали адрес/
данные и внешней магистрали управления.

 

 

Обмен информацией между модулями осуществляется по 8-разрядной внутренней магистрали.

МК семейства MCS-51 используют гарвардскую архитектуру: память программ (ПЗУ) и память данных (ОЗУ) имеют раздельное адресное пространство. И, как следствие, для обращения к ячейкам памяти разного типа должны быть использованы разные типы ко­манд. Максимальный размер адресного пространства для каждого типа памяти состав­ляет 64 Кбайта. Однако непосредственно на кристалле МК 8051 АН располагаются толь­ко 4 «байта ПЗУ и 128 байт ОЗУ. МК семейства MCS-51 имеют открытую архитектуру, т.е. позволяют подключать внешнюю память. Поэтому при необходимости, как память про­грамм, так и память данных могут быть увеличены посредством подключения дополни­тельных микросхем памяти.

Варианты организации памяти в МП системе на основе МК 8051 АН поясняет рис. 4.33. МК может быть использован в однокристальном режиме (сигнал на линии ЕА равен 1). Тогда внешняя память в системе отсутствует, память программ располагает­ся по адресам 0000h...0FFFh, память данных - с 00h no 7Fh. Регистры специальных функций периферийных модулей имеют объединенное с внутренним ОЗУ адресное пространство. Они расположены по адресам 80h...0FFh. Даже если МК 8051 АН работа­ет в однокристальном режиме, к нему может быть подключена внешняя память про­грамм. Она должна располагаться в диапазоне адресов 1000h-0FFFFh, т. е. дополнять внутреннее ПЗУ МК. Если МК работает в расширенном режиме (сигнал на линии ЕА равен 0), то он будет адресовать только внешнюю память программ - с 0000h no 0FFFFh, несмотря на то, что внутреннее (резидентное) ПЗУ на кристалле имеется.

В каждом из рассмотренных режимов МК 8051 АН может использовать два массива памяти данных: внутреннее ОЗУ, расположенное по адресам 00h... 7Fh, и подключаемое внешнее ОЗУ, или ПЗУ, которое может располагаться, начиная с адреса 0000h вплоть до 0FFFFh. He следует бояться возможного перекрытия адресного пространства внутрен­ней и внешней памяти данных. Доступ к ним осуществляется разными командами.

 

В архитектуре MCS-51 адресное пространство внутренней памяти данных объединя­ет все программно доступные ресурсы МК, в том числе регистры центрального процес­сора. Пространство внутренней памяти данных делится на пространство адресов внут­реннего ОЗУ и пространство адресов регистров специальных функций (рис. 4.34).

В области ОЗУ выделяют три сегмента.

1.Младшие 32 адреса занимают четыре регистровых банка, каждый из которых содер­жит по 8 регистров общего назначения RO - R7. При обращении к ячейкам памяти этого сегмента могут быть использованы как абсолютные адреса 00h - 1Fh, так и символьные
имена регистров RO - R7. Для выбора одного регистра из четырех, имеющих одно имя, используется механизм задания текущего банка регистров. Номер банка, на 8 ячеек кото­рого в данный момент времени распространяются имена R0 - R7, определяется значени­ем битов RS1 :RS0 регистра признаков PSW.

2.Ячейки памяти с адресами 20h - 2Fh допускают побитное обращение. Прямо адресуемые биты имеют адреса 00h — 7Fh. Таким образом, обращение к данным, располо­женным в ячейках памяти с адресами 20h - 2Fh, может быть осуществлено как в байто­вом, так и в битовом формате

3. Ячейки памяти с адресами 30h - 7Fh допускают обращение только посредством абсолютных адресов, данные доступны только в байтовом формате.

Область памяти с адресами 80h - OFFh занимают регистры специальных функций: регистры данных портов ввода/вывода Р0, Р1, Р2, РЗ, регистры задания режимов рабо­ты других периферийных модулей. Обратите внимание, что в этом же адресном про­странстве расположены регистры центрального процессора: аккумулятор АСС, ре­гистр В, регистр состояния PSW, старший DPH- и младший DPL-байты двухбайтового регистра DPTR, указатель стека SP. Большая часть регистров специальных функций, а также АСС, В и PSW допускают побитное обращение. Прямоадресуемые биты имеют адреса с 80h no OFFh. Формат регистров специальных функций будет рассмотрен в раз­делах, посвященных соответствующим периферийным модулям. Из рис. 4.34 видно, что не все адресное пространство области 80h - 0FFh использовано, имеются свободные адреса. В версиях МК с ядром MCS-51, но с большим по сравнению с моделью 8051 АН набором периферийных модулей эти адреса используются для размещения дополни­тельных регистров специальных функций. Перечень регистров специальных функций МК 8051АН приведен в табл. 4.4.

Таблица 4.4



.php">16
  • Далее ⇒