44776

Работа модуля МКИО на отладочных платах Миландр 1986ВЕ8Т и 1986ВК018/016

Автор статьи: Лампадов Илья Александрович (Инженер)
Дата последнего изменения: 01.12.2021 13:40:47

Введение

Данная статья является логическим продолжением статьи "Пример работы МКИО на 1986ВЕ8Т"

Также к циклу статей относится смежная статья, но по работе с модулями МКИО между другими платами "Работа модуля МКИО на отладочных платах Миландр 1986ВЕ8Т и 1923ВК014".

Особенность отладочной платы для микроконтроллера 1986ВЕ8Т(81Т) заключается в том, что на неё можно установить сразу два модуля МКИО производства компании Миландр на базе микросхемы 5559ИН13У (протестирован также модуль на базе микросхемы 5559ИН67Т), задействовав оба контроллера МКИО внутри микросхемы 1986ВЕ8Т(81Т) (в микроконтроллере 1986ВК018/016 два контроллера МКИО). В вышеприведенной статье как раз рассматривался пример такого подключения в рамках одной платы, где один модуль работает в роли контроллера шины (КШ), а второй в роли оконечного устройства (ОУ).

Но в реальных изделиях зачастую необходима организация подключения между двумя разными устройствами, и в данном случае для такой организации были выбраны отладочные платы 1986ВЕ8Т(81Т) и 1986ВК018/016 - в общем и целом аналогично можно организовать подключение между двумя другими устройствами. В рамках отладочной платы 1986ВК018/016 можно также как и на плате с 1986ВЕ8Т подключить два разных модуля, так как физические разъемы для подключения модулей используют линии обоих контроллеров МКИО (подробнее в статье "Использование внешних модулей на отладочной плате 1986ВК018 (Электросила) - версия платы EVB v0.3").

Проект для отладочной платы 1986ВЕ8Т(81Т) будет использоваться из исходной статьи в неизменном виде (для IDE Keil с использованием библиотеки SPL). Напомню, что в этом проекте модуль, который устанавливается в разъем, использующий линии MIL0, будет работать в режиме оконечного устройства (ОУ), а модуль, который устанавливается в разъем, задействующий линии MIL1, будет работать в режиме контроллера шины (КШ). 

Проект для отладочной платы 1986ВК018/016 написан также для IDE Keil, но по большей части (то есть используются и библиотеки SPL) на регистровом уровне с соответствующими подробными комментариями по коду для большего понимания механики происходящего, но общая логика проекта полностью повторяет проект для 1986ВЕ8Т(81Т). Особенности следующие:
  1. Частота следования импульсов тактовых сигналов настраивается в проекте для 1986ВК018/016 на 120 МГц, что входит в допустимый диапазон по документации. На отладочной плате применяется кварцевый резонатор на 8 МГц. С помощью блока PLL на выходе получается частота 120 МГц, а для соответствия стандарту блока МКИО, в самом блоке используется делитель 120, чтобы получить необходимую частоту 1 МГц. В проекте для 1986ВЕ8Т(81Т) на выходе для тактирования по HSE получается частота 80 МГц, в блоке МКИО используется делитель 80.
    Важно отметить, что приходящая на блок МКИО частота должна быть не меньше 24 МГц - в противном случае работа блока не гарантируется;
  2. Разъемов для подключения модуля МКИО на базе микросхемы 5559ИН13У (либо на базе 5559ИН67Т) в отладочной плате 1986ВК018/016 два, поэтому для примера конфигурируются только порты для блока MIL0, которые выведены на разъем "Модуль 1". Причем конфигурируется только основной канал А. При необходимости с минимальными изменениями проектов можно добиться работы по резервному каналу В.
Имея в наличии два модуля МКИО, две рассматриваемые отладочные платы и проекты к ним, можно организовать следующий функционал по обмену:
  • Отладочная плата 1986ВЕ8Т(81Т) в роли контроллера шины (КШ) - Отладочная плата 1986ВК018/016 в роли оконечного устройства (ОУ);
  • Отладочная плата 1986ВК018/016 в роли контроллера шины (КШ) - Отладочная плата 1986ВЕ8Т(81Т) в роли оконечного устройства (ОУ).
Важно помнить, что для подключения отладочных плат необходимо применять кабель COM 9F/9F (мама - мама) прямой распайки (1-1, 2-2…9-9)

Конфигурация и запуск проектов для работы 1986ВЕ8Т(81Т) в роли КШ - 1986ВК018/016в роли ОУ

Проект для 1986ВЕ8Т(81Т) остаётся в неизменном виде. Один из модулей подключается в разъем, использующий линии MIL1.

В проекте для 1986ВК018/016 необходимо оставить активной строку кода, в которой проводится конфигурация работы блока MIL0 в режиме оконечного устройства (ОУ), при этом закомментировать строчку, которая конфигурирует блок MIL0 для работы в режиме контроллера шины (КШ), как это показано в фрагменте кода 1:

// Controller Bus 
// MDR_MIL0_STD_1553->CONTROL = (120 << 11)|(1 << 2) | (1 << 4); // and | (1<<19) if use module on 5576IN67 

// End Point
MDR_MIL0_STD_1553->CONTROL = (120 << 11)|(1 << 6)|(1 << 4)|(2 << 2); // and | (1<<19) if use module on 5576IN67. attention comment cycle while 
Фрагмент кода 1

Поскольку 1986ВК018/016 будет работать в роли оконечного устройства (ОУ), а проект является универсальным, то весь цикл while(1) необходимо закомментировать, потому что в нём применен код, который актуален, если работа 1986ВК018/016 будет вестись в роли контроллера шины (КШ). 

Далее выполняется подключение модуля МКИО в разъем на отладочной плате 1986ВК018/016 и соединение двух модулей между собой.

Запуск программ выполняется по классическому сценарию:
  • 1986ВЕ8Т(81Т). Проект запускается из-под ОЗУ с соответствующим файлом *.ini;
  • 1986ВК018/016. Программа записывается в микроконтроллер стандартными средствами.
Результатом работы такого подключения будет следующее поведение:

В случае успешной отправки командного слова (КС) со стороны 1986ВЕ8Т(81Т) на 1986ВК018/016 будет моргать светодиод VD7 на отладочной плате 1986ВЕ8Т(81Т). В случае, если передача будет идти с ошибкой (реализуется при отключении кабеля), будет моргать светодиод VD14.

Конфигурация и запуск проектов для работы 1986ВК018/016 в роли КШ - 1986ВЕ8Т(81Т) в роли ОУ

Проект для 1986ВЕ8Т(81Т) остаётся в неизменном виде. Один из модулей подключается в разъем, использующий линии MIL0.

В проекте для 1986ВК018/016 необходимо оставить активной строку кода, в которой проводится конфигурация работы блока MIL0 в режиме контроллера шины (КШ), при этом закомментировать строчку, которая конфигурирует блок MIL0 для работы в режиме оконечного устройства (ОУ), как это показано в фрагменте кода 2:

// Controller Bus 
MDR_MIL0_STD_1553->CONTROL = (120 << 11)|(1 << 2) | (1 << 4); // and | (1<<19) if use module on 5576IN67 

// End Point
// MDR_MIL0_STD_1553->CONTROL = (120 << 11)|(1 << 6)|(1 << 4)|(2 << 2); // and | (1<<19) if use module on 5576IN67. attention comment cycle while 
Фрагмент кода 2

Поскольку 1986ВК018/016 будет работать в роли контроллера шины (КШ), а проект является универсальным, то необходимо убедиться, что все строчки цикла while(1) не являются закомментированными, так как важно обеспечить постоянную передачу командного слова со стороны 1986ВК018/016 с последующим контролем обмена - код цикла while(1) и выполняет эти функции.

Далее выполняется подключение модуля МКИО в разъем на отладочной плате 1986ВК018/016 и соединение двух модулей между собой.

Запуск программ выполняется по аналогичному сценарию из пункта текущей статьи "Конфигурация и запуск проектов для работы 1986ВЕ8Т(81Т) в роли КШ - 1986ВК018/016 в роли ОУ"

Результатом работы такого подключения будет следующее поведение:

В случае успешной отправки командного слова (КС) со стороны 1986ВК018/016 на 1986ВЕ8Т(81Т) будет гореть синий светодиод на отладочной плате 1986ВК018/016. В случае, если передача будет идти с ошибкой (реализуется при отключении кабеля), будет гореть светодиод красный. Параллельно будет происходить моргание светодиода VD14 (наличие ошибки в обмене) на отладочной плате 1986ВЕ8Т(81Т), поскольку программа записывалась без изменений, и в цикле while(1) контроллер пытается постоянное отправить командное слово (КС) Сохранить статью в PDF

Файлы для скачивания

Теги

Была ли статья полезной?