/*************************************************************************************************************
  Copyright (C) 2016-2022 JSC "ICC Milandr" 

*************************************************************************************************************/

/*
 *
 *  Файл:      readme.txt
 *  Описание:  Описание примера MIL_STD_Format_4
 *
 *  История:
 *             05.10.22  - cоздан
 *
 */


/* Описание примера ----------------------------------------------------------------------------------------*/

В данном примере приведена работа КШ и ОУ (формат 4 - передача КУ) в рамках одного процессора. 
Частота CCLK = 192 МГц, чтобы частота SOC шины (192 / 2 = 96) была кратна 8 - требование контроллера MIL_STD. 
Опишем действия КШ и ОУ для формата 4 по отдельности.

Пример работы КШ
Формат 4, КШ формирует КС, содержащее КУ. Для работы необходимо:
1. Настроить GPIO для работы выбранного MILSTD
2. Проинициализировать выбранный MILSTD, выбрав в структуре инициализации (MILSTD_Init_type) для поля Mode 
   значение MILSTD_Mode_BC. 
3. Сформировать COMMWORD1, обратите внимание, что регистр COMMWORD для КШ доступен ТОЛЬКО на запись, 
   при чтении из этого регистра будет читаться ноль. Поэтому для удобства заводим переменную 
   «MILSTD_COMMWORD CommWordTemp» и формируем ее значение при помощи битовых полей, далее перезаписываем
   CommWordTemp.word в LX_MILSTDx->COMMWORD1.word. Для того, чтобы осуществить транзакцию в формате 4 в
   регистре COMMWORD1 необходимо установить бит TXRX и в поле SUBADDR записать 0x00 или 0x1F.
4. Подождать некоторое время (в данном примере ожидание более 120 тактов), после запустить транзакцию с 
   помощью функции HAL_MILSTD_StartCWTransmit(LX_MILSTDx).
5. Ожидать получения ОС. Для этого можно установить прерывание по событие RFLAGN.
6. При получении ОС проанализировать его.

Пример работы ОУ
Формата 4, ОУ анализирует КУ и отправляет ОС. Для работы необходимо:
1.	Настроить GPIO для работы выбранного MILSTD.
2.	Проинициализировать выбранный MILSTD, выбрав в структуре инициализации (MILSTD_Init_type) для поля Mode 
    значение MILSTD_Mode_RT. 
3.	Записать в поле RTA регистра STATWORD1, адрес своего ОУ( т.е. поле RTA регистра CONTROL). Обратите 
    внимание, что регистр STATWORD1 в режиме ОУ выполняет доступ к ОС ТОЛЬКО по записи. По чтению регистр 
    содержит ОС принятое от второго ОУ в транзакции ОУ-ОУ. Поэтому для удобства заводим переменную 
    «MILSTD_STATWORD StatWordTemp» и формируем значение поля RTA, далее перезаписываем 
    StatWordTemp.word в LX_MILSTDx->STATWORD1.word.
4.	Ожидать запроса от КШ. Для этого в данном примере включается прерывание MILSTD_IT_RFLAGNIE.
5.	При получении КС от КШ произойдет прерывание (прерывание НЕ произойдет, если поля RTA в КС и ОС не будут 
    равны), далее будет от 4 до 12 мкс для анализ принятого КС, содержащего КУ (КС будет помещено в регистр 
    COMMWORD1 данного ОУ, в регистр MSG будет помещен код сообщения, соответствующий описанию из спецификации, 
    Таблица – Коды сообщений регистра MSG), и формирования ОС. Спустя 4-12 мкс в КШ будет отправлено ОС.

Если данные были переданы успешно, то в отладочную консоль будет выведено сообщение "Result: Success". 
Если в ходе работы примера была зафиксирована ошибка, то в отладочную консоль будет выведено сообщение
"Result: Error - <Описание проблемы>".


/* Содержание каталога -------------------------------------------------------------------------------------*/

    - main.c               Основная программа
    - project.ldf          Файл сценария для компоновщика
    - session.lldbinit     Файл инициализации периферии до запуска отладки
    - .cproject, .project  Файлы конфигурации проекта


/* Аппаратная и программная среда --------------------------------------------------------------------------*/

    - Интегрированная среда разработки CM-LYNX.
    - Отладочная плата для процессора 1967ВН044.
    - Модуль МКИО на основе 5559ИН13У2.
    - Модуль МКИО на основе 5559ИН67Т.
    
    Модуль МКИО на основе 5559ИН13У2 необходимо подключить в разъёмы XS1.1-XS1.2.
    Модуль МКИО на основе 5559ИН67Т необходимо подключить в разъёмы XS2.1-XS2.2.
    Для модуля отладочного вер. 2.31 и более необходимо установить джамперы на разъёмы XP1 и XP2.
    Для модуля отладочного вер. 2.3 и менее необходимо снять джамперы с разъёмов XP1 и XP2.


/* Использование -------------------------------------------------------------------------------------------*/

Для запуска примера необходимо выполнить следующие действия:
    - Создать новое или открыть существующее рабочее пространство (Workspace).
    - Выполнить импорт проекта "MIL_STD_Format_4" в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", 
      п. "Импорт существующего проекта".
    - Выполнить сборку проекта.
    - Создать конфигурацию отладки в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", п. "Настройка 
      конфигурации и запуск отладки".
    - Запустить пример в режиме отладки.

Подробное описание библиотеки HAL с примерами использования функций приведено в каталоге по пути:
"CM-LYNX.x.yy.zz\toolchain\1967VN044\HAL\doc".
