Главная страница
Навигация по странице:

  • Периферийные устройства SDK-1.1M Расширитель ввода/вывода PCA9538PW

  • Часы реального времени MCP79411

  • Графический OLED-дисплей WEO012864DL

  • Ethernet

  • Излучатель звука HC0903A

  • Инерционный модуль iNEMO LSM9DS

  • Встроенный программатор-отладчик

  • Инструкция по эксплуатации Общий вид стенда SDK-1.1M

  • Элемент Описание

  • Инструменты для разработки для SDK-1.1M на базе

  • Настройка IDE Настройки проекта в STM32CubeMX

  • Настройки проекта в System Workbench for STM32 После первой сборки проекта, необходимо добавить два файла: Для SDK-1.1MC.107: SDK1_1_M FTDBG.cfg

  • Для SDK-1.1MC.407: SDK1_1_M FTDBG.cfg

  • Для SDK-1.1MC.427: SDK1_1_M FTDBG.cfg

  • Требования к лабораторным работам Требования к выполнению работ

  • Требования к отчётам

  • Защита лабораторной работы

  • Лабораторная работа, «Интерфейсы ввода/вывода общего назначения (GPIO)» Задание

  • Учебное-пособие-SDK-1.1M_beta_02_10_2019. Учебное пособие (черновой вариант) фпи и кт университет итмо санктПетербург 2019 г


    Скачать 1.52 Mb.
    НазваниеУчебное пособие (черновой вариант) фпи и кт университет итмо санктПетербург 2019 г
    Дата30.03.2023
    Размер1.52 Mb.
    Формат файлаpdf
    Имя файлаУчебное-пособие-SDK-1.1M_beta_02_10_2019.pdf
    ТипУчебное пособие
    #1025580
    страница2 из 4
    1   2   3   4
    Микропроцессор NXP i.MX 6ULL (Type MX6)
    • Процессорное ядро ARM Cortex-A7:
    • Базовая частота 528 МГц;
    • Частота в разгоне 900 МГц;
    • General Interrupt Controller (GIC) с поддержкой 128 прерываний;
    • Глобальный таймер;
    • Snoop Control Unit (SCU);
    • Шина интерфейса вывода L2 кэша Single Master AXI (128 бит);
    • NEON MPE сопроцессор:
    • Архитектура обработки мультимедиа SIMD;
    • Регистровый файл NEON с 32x32-битными, 32x64-битными и 16x128-битными регистрами общего назначения;
    • Целочисленный вычислительный конвейер NEON (АЛУ, Сдвиг, MAC);
    • Двойной, одинарный вычислительный конвейер NEON с плавающей запятой
    (FADD, FMUL);
    • Конвейер NEON загрузки/хранения и перемещения;
    • Обеспечение преобразований между 16-битными, 32-битным, 64-битными форматами с плавающей запятой и целочисленными текстовыми форматами
    ARM.
    • Память: процессор поддерживает высокопроизводительную DRAM, NOR, флэш- память, а также SD-карты. Система памяти состоит из следующих компонентов:
    • Кэш 1 уровня – 32 Кб команд, 32 Кб данных;
    • Кэш 2 уровня – объединенные 128 Кб команд и данных;
    • Загрузочное ПЗУ, включающее 96 Кб высокоуровневой загрузки (HAB);
    • Встроенное ОЗУ быстрого доступа (OCRAM, 128 Кб);
    • Встроенные интерфейсы памяти:
    • 16-битная LP-DDR2, 16-битная DDR3-400, LV-DDR3-400;
    • 8-битная NAND флэш-память, включающая поддержку MLC/TLC, 2 Кб, 4 Кб и
    8 Кб размера страницы;
    • До 40 бит BCH ECC;
    • 16-битная флэш-память;
    • 16-битная PSRAM, Cellular RAM;
    • Двухканальная/одноканальная QuadSPI флэш-память.
    • Дисплеи:
    • LCDIF – поддерживает один параллельный 24-битный LCD дисплей с разрешением 1366x768 и частотой 60 Гц;
    • EPDC – поддерживает прямой драйвер для панелей E-Ink EPD с разрешением
    2048x1536 с частотой 106 Гц или 4096x4096 с частотой 20 Гц.
    • Параллельный 24-битный порт камеры с частотой 66 МГц;
    • Карты расширения: 4 MMC/SD/SDIO порта для карт, поддерживающие:
    • 1-битный или 4-битный режим передачи инструкций для SD и SDIO карт, вплоть до режима UHS-1 SDR-104 (104 Мб/с);
    • 1-битный, 4-битный, 8-битный режим передачи инструкций для MMC карт, вплоть до 52 МГц в SDR и DDR режимах;
    • Совместимость с SD, miniSD, SDIO, SD Combo, MMC, встроенной MMC и встроенной SD-картой;
    • Частота варьируется от 32 КГц до 52 КГц;

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    10
    • До 200 Мб/с передачи данных для SD/SDIO карт, использующих 4 параллельных линии данных;
    • До 416 Мб/с передачи данных для MMC карт, использующих 8 параллельных линии данных;
    • До 832 Мб/с передачи данных для MMC/SD карт, использующих 8 параллельных линии данных в режиме DDR;
    • 2 высокоскоростных USB 2.0 OTG (до 480 Мбит/с), с встроенной высокоскоростной
    USB PHY;
    • Различные интерфейсы:
    • 3 I
    2
    S/SAI/AC97, работающих со скоростью до 1.4 Мбит/с;
    • ESAI;
    • 8 UART (5 Мбит/с) которые обеспечивают интерфейс RS-232 и поддерживают
    9-битный многоточечный режим RS-485;
    • 4 eCSPI, три из которых поддерживают до 52 Мбит/с и один низкоскоростной;
    • 4 I
    2
    C, поддерживающих 400 Кбит/с;
    • Контроллер Ethernet IEEE1588 10/100 Мбит/с;
    • 8 ШИМ-модуляторов;
    • System JTAG Controller (SJC);
    • Порты ввода/вывода с поддержкой прерываний;
    • Порт для клавиатуры 8x8;
    • Sony Philips Digital Interface (SPDIF), Rx и Tx;
    • 2 CAN (1 Мбит/с);
    • 3 таймера Watchdog (WDOG);
    • Асинхронный конвертер частоты дискретизации (ASRC);
    • Medium Quality Sound (MQS).

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    11
    Периферийные устройства SDK-1.1M
    Расширитель ввода/вывода PCA9538PW
    PCA9538PW – это 8-битный расширитель портов GPIO с поддержкой прерываний, подключенный по интерфейсу I
    2
    C. PCA9538PW состоит из 8-битного регистра конфигурации
    (вход или выход на выбор), 8-битного регистра входного порта, 8-битного выходного порта и
    8-битного регистра инверсии полярности.
    В стенде SDK-1.1M установлено два расширителя PCA9538PW для обработки сигналов от различных периферийных устройств.
    Часы реального времени MCP79411
    MCP79411 – часы/календарь с 1 Кбит встроенной энергонезависимой памяти EEPROM с защищенными от записи областями, работает на частоте 32,768 кГц. Время отслеживается с использованием внутренних счетчиков часов, минут, секунд, дней, месяцев, лет, дней недели.
    Сигнализация может быть настроена на всех счетчиках вплоть до месяцев. Для использования и настройки MCP79411 поддерживает I
    2
    C со скоростью до 400 кГц.
    Графический OLED-дисплей WEO012864DL
    Монохромный OLED-дисплей 128x64 точки c диагональю 0,96 дюйма, подключенный по интерфейсу I
    2
    C. Размеры активной области 21,8 x 10,9 мм. Дисплей оборудован встроенным контроллером IC SSD1306.
    Рис. 1. Графический OLED дисплей WEO012864DL
    Ethernet
    Учебный стенд SDK-1.1M оборудован разъемом RJ-45 для подключения по Ethernet со скоростью 10/100 Мбит/с.
    USB
    На процессорной плате размещается имеется разъем USB 2.0 micro B для подключения в режиме host, device или OTG.
    Излучатель звука HC0903A
    HC0903A – электромагнитный излучатель звука, управляемый прямоугольным периодическим сигналом.

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    12
    Рис. 2. Излучатель звука HC0903A
    Инерционный модуль iNEMO LSM9DS
    LSM9DS – это система, состоящая из трехмерного цифрового датчика линейного ускорения, трехмерного цифрового датчика угловой скорости и трехмерного цифрового магнитного датчика. LSM9DS подключен по последовательной шине I
    2
    C.
    Рис. 3. Инерционный модуль iNEMO LSM9DS
    Клавиатура
    Клавиатура организована в виде матрицы 3x4, подключенной к расширителю портов.
    Три бита соответствуют колонкам, четыре бита соответствуют рядам.
    Рис. 4. Матричная клавиатура

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    13
    Встроенный программатор-отладчик
    Для отладки и загрузки программ в память SDK-1.1M используется отладочный разъем
    USB 2.0 micro B (Debug USB), подключенный к встроенному в стенд программатору- отладчику. Программатор-отладчик обеспечивает подключение к микроконтроллеру по интерфейсу JTAG.
    Инструкция по эксплуатации
    Общий вид стенда SDK-1.1M
    Рис. 5. Общий вид стенда SDK-1.1M
    На рисунке представлено схематическое изображение лицевой панели стенда SDK-1.1M.
    Расшифровка обозначений на схеме дана в таблице.
    Таблица. 3. Расшифровка обозначений на схеме лицевой панели стенда SDK-1.1M
    Элемент
    Описание
    Питание (XT1, XS7) Внешнее питание (если необходимо). Полярность подключения не имеет значения.
    XS6
    Слот подключения FPGA,GSM, Wi-Fi, GPS/ГЛОНАСС и т.д.
    XS2…XS5
    Слот для модулей расширения Arduino.
    XT10 “RS485”
    Разъем взаимодействия SDK-1.1M по интерфесу RS-485.
    Переключатели
    SA1, SA2
    Конфигурируемые переключатели.
    Дисплей HQ1
    Графический OLED дисплей WEO012864DL (см. предыдущий раздел).
    Клавиатура
    SB1…SB12
    Клавиатура (см. предыдущий раздел).
    SB13 “reset”
    Кнопка сброса RESET.
    XS8 “MicroUSB”
    MicroUSB разъем, предназначенный для программирования SDK-1.1M.
    XS1
    Разъем подключения платы с микроконтроллером.
    Динамик BA1
    Излучатель звука HC0903A (см. предыдущий раздел).

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    14
    A2
    Разъем RJ-45, для подключения кабеля Ethernet 10/100.

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    15
    Инструменты для разработки для SDK-1.1M на базе
    микроконтроллеров STM32 (Type 107, Type 407, Type 427)
    Рекомендуется использовать следующее программное обеспечение (
    https://www.st.com
    ):
    • STM32CubeMX;
    • System Workbench for STM32.
    STM32CubeMX – это графический инструмент, позволяющий конфигурировать микроконтроллеры STM32 и генерировать соответствующие шаблоны проектов с кодом на языке C посредством пошагового процесса.
    System Workbench for STM32 – кроссплатформенная свободно распространяемая среда разработки (IDE).
    Рис. 6. Схема генерации проекта в программе STM32CubeMX

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    16
    Установка драйверов
    Для программирования и отладки SDK-1.1M оборудован программатором YPROG.
    Подключение к компьютеру производится через кабель USB-microUSB. После подключения к компьютеру необходимо установить драйвер FTDI.
    Рис. 7. Расположение разъема YPROG на стенде SDK-1.1M
    Порядок установки драйвера для Windows:
    1. Скачать и запустить программу Zadig (
    https://zadig.akeo.ie
    );
    2. Подключить SDK-1.1M к компьютеру;
    3. Во вкладке Options выбрать List All Devices (рисунок 8);
    4. Выбрать из списка RS232 (Interface 0) или SDK 1.1M Debugger (Interface 0);
    5. Выбрать драйвер WinUSB и нажать кнопку установки (рисунок 8).
    Рис. 8. Процесс установки драйвера
    Порядок установки драйвера для Linux (Debian/Ubuntu):
    1. Открыть терминал;
    2. Ввести команду: sudo apt-get install libusb-1.0-0;
    3. Ввести команду: sudo nano /etc/udev/rules.d/50-myusb.rules или sudo vi
    /etc/udev/rules.d/50-myusb.rules;
    4. Добавить строку: SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403",
    ATTRS{idProduct}=="6010",TAG+="uaccess"
    5. Сохранить и закрыть файл;
    6. Ввести команду: sudo udevadm control —reload;
    7. Переподключить SDK-1.1M к компьютеру.

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    17
    Настройка IDE
    Настройки проекта в STM32CubeMX
    При создании каждого проекта для SDK-1.1M необходимо добавлять Debug JTAG (5 pins):
    Вкладка Pinouts & Configuration -> System Core -> SYS -> Debug -> JTAG (5 pins) рисунок 11.
    Рис. 9. Параметры Debug
    Во вкладке Project Manager рекомендуется использовать следующие параметры:
    • Во вкладке Project задать имя проекта и путь к нему;
    • В поле Toolchain/IDE – SW4STM32;
    • Во вкладке Code Generator в Generated files поставить галочку Generate peripheral initialization as pair of ‘.c/.h’ files per peripheral.
    Настройки проекта в System Workbench for STM32
    После первой сборки проекта, необходимо добавить два файла:
    Для SDK-1.1MC.107:
    SDK1_1_M FTDBG.cfg
    source [find SDK11M_FT.cfg] set WORKAREASIZE 0x8000 transport select jtag set CHIPNAME STM32F107VCTx set BOARDNAME SDK1_1M
    # STlink Debug clock frequency
    #set CLOCK_FREQ 9000
    # use hardware reset, connect under reset
    # connect_assert_srst needed if low power mode application running (WFI...) reset_config srst_only
    # srst_nogate connect_assert_srst set CONNECT_UNDER_RESET 1 source [find target/stm32f1x.cfg]
    SDK11M_FT.cfg
    interface ftdi ftdi_vid_pid 0x0403 0x6010

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    18 ftdi_layout_init 0x0028 0x0ffb
    #ftdi_layout_signal OE -data 0x0020 ftdi_layout_signal nSRST -oe 0x0800
    #ftdi_set_signal OE 1
    Для SDK-1.1MC.407:
    SDK1_1_M FTDBG.cfg
    source [find SDK11M_FT.cfg] set WORKAREASIZE 0x8000 transport select jtag set CHIPNAME STM32F407VGTx set BOARDNAME SDK1_1_M reset_config srst_only
    # srst_nogate connect_assert_srst set CONNECT_UNDER_RESET 1 source [find target/stm32f4x.cfg]
    SDK11M_FT.cfg
    interface ftdi ftdi_vid_pid 0x0403 0x6010 ftdi_layout_init 0x0408 0x0ffb
    #ftdi_layout_signal OE -data 0x0020 ftdi_layout_signal nSRST -oe 0x0800
    #ftdi_set_signal OE 1
    Для SDK-1.1MC.427:
    SDK1_1_M FTDBG.cfg
    source [find SDK11M_FT.cfg] set WORKAREASIZE 0x8000 transport select jtag set CHIPNAME STM32F427VITx set BOARDNAME SDK1_1_M reset_config srst_only
    # srst_nogate connect_assert_srst set CONNECT_UNDER_RESET 1 source [find target/stm32f4x.cfg]
    SDK11M_FT.cfg
    interface ftdi ftdi_vid_pid 0x0403 0x6010 ftdi_layout_init 0x0408 0x0ffb

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    19
    #ftdi_layout_signal OE -data 0x0020 ftdi_layout_signal nSRST -oe 0x0800
    #ftdi_set_signal OE 1
    После этого нажать File -> Properties -> Run/Debug Settings -> New -> Ac6 STM32 Debugging.
    Установить параметры как на рисунках 10 и 11.
    Рис. 10. Параметры Main

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    20
    Рис. 11. Параметры Debugger

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    21
    Требования к лабораторным работам
    Требования к выполнению работ
    Проект должен быть в виде отдельных файлов, каждый из которых содержит отдельный драйвер или цельную, логически законченную часть программы.
    Код должен быть структурированным, хорошо читаемым. Названия переменных и функций должны быть осмысленными и поясняющими назначение данных переменных и функций. На
    «верхнем уровне» программы (функция main) должна быть только прикладная часть, вся логика работы с аппаратурой скрывается от пользователя «верхнего уровня» и реализуется на уровне драйверов.
    Не должно быть одинаковых или сильно похожих блоков кода, желательно реализовывать их с помощью отдельных функций. Крайне желательно минимизировать количество вложенных циклов и свести их к необходимому минимуму.
    Требования к отчётам
    Отчёт должен содержать:
    1. Титульный лист с номером лабораторной работы, её названием, ФИО и группой исполнителей.
    2. Номер варианта, задание.
    3. Блок-схема прикладного алгоритма.
    4. Подробное описание инструментария, который использовался в работе.
    5. Исходные коды прикладной программы и использованных библиотек.
    6. Выводы, в которых описываются проблемы, которые возникли в ходе работы, и способы их решения.
    Защита лабораторной работы
    На защите задаются вопросы по:
    1. Теории.
    2. Инструментальным средствам, которые использовались для работы.
    3. Принципиальной схеме стенда SDK.
    4. Исходным кодам, включая библиотеки.
    Лабораторная работа, «Интерфейсы ввода/вывода общего
    назначения (GPIO)»
    Задание
    Разработать и реализовать драйверы GPIO (управление светодиодными индикаторами и обработка нажатий кнопки контроллера SDK-1.1М). Написать программу с использованием разработанных драйверов по алгоритму, соответствующему варианту задания.

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    22
    Общие сведения
    Интерфейс ввода/вывода общего назначения
    (general-purpose input/output, GPIO) – базовый интерфейс взаимодействия компьютерной системы с внешним миром. С его помощью чаще всего подключаются такие внешние элементы как светодиоды, кнопки, переключатели, осуществляется управление периферийными устройствами и т.д.
    GPIO контакты группируются в порты, обычно по 8, 16 или 32 линий. Одни и те же контакты GPIO могут выступать в роли входа или выхода. Режим входа обычно включен по умолчанию, для работы в качестве выхода необходимо настроить соответствующую ножку на выход при помощи управляющего регистра. Каждый контакт настраивается индивидуально – на одном порте могут чередоваться входы и выходы в любых комбинациях.
    Управление выходом может быть прямым, из программы (записать 0 или 1), может осуществляться при помощи внутренних устройств (например, реализация широтно- импульсной модуляции на базе таймеров).
    В учебном стенде SDK-1.1M с процессорным модулем на базе STM32 есть одна кнопка, подключённая к PC15, и два управляемых светодиода: зеленый, подключенный к PD13, и двухцветный красный/желтый, подключенный к контактам PD14, PD15 (Рис. 1).
    Рис. 12. Кнопка и управляемые светодиоды на принципиальной схеме стенда

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    23
    Работа с GPIO
    Сперва, необходимо произвести настройку Pinout в STM32CubeMX: включить контакты
    PD13-PD15 в режим GPIO_Output (рисунок 1).
    Добавить Debug JTAG (5 pins): Вкладка Pinouts & Configuration -> System Core -> SYS-> Debug
    -> JTAG (5 pins).
    Включить тактовый генератор RCC: Вкладка Pinouts & Configuration -> System Core -> RCC->
    High Speed Clock -> Crystal/Ceramic Resonator.
    Рис. 13. Окно настройки pinout UART
    Для работы с GPIO на STM32 используется библиотека HAL (Hardware Abstract Layer).
    STM32CubeMX при генерации проекта добавляет в код функцию инициализации UART
    MX_GPIO_Init. static void MX_GPIO_Init(void)
    {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOH_CLK_ENABLE();
    __HAL_RCC_GPIOD_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15,
    GPIO_PIN_RESET);
    GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
    }
    Для переключения состояния светодиода можно использовать стандартную функцию из библиотеки HAL:
    HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

    GPIOx
    – буква x предназначена для выбора периферийного устройства, может быть (A-
    K). Для управления светодиодом нужно использовать букву D;

    GPIO_Pin
    – номер управляемого контакта. Например:
    GPIO_Pin_13.
    Пример кода: while (1)
    {
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_13);

    Быковский С.В., Ключев А.О., Кустарев П.В., Платунов А.Е. ФПИ и КТ университета ИТМО
    24
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_13);
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_14);
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_14);
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_15);
    HAL_Delay(500);
    HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_15);
    HAL_Delay(500);
    }
    Этот код поочередно включает и выключает светодиоды с задержкой в 500 мс.
    1   2   3   4


    написать администратору сайта