elbear_arduino_bsp/README.md

12 KiB
Raw Blame History

elbear_arduino_bsp

Пакет поддержки платы Elbear Ace-Uno на базе микроконтроллера MIK32 Амур в среде программирования Arduino IDE.

Установка пакета в ArduinoIDE

Для установки пакета в параметрах ArduinoIDE необходимо добавить ссылку https://elron.tech/files/package_elbear_beta_index.json в поле "Дополнительные ссылки для Менеджера плат".
Подробные шаги по установке и начальной настройке описаны в инструкции.

Функциональное назначение выводов

Pinout

Особенности использования платы Elbear Ace-Uno в ArduinoIDE

Цифровые выводы

На плате Elbear Ace-Uno пользователю доступны встроенные светодиод и кнопка. Для их использования можно воспользоваться макросами LED_BUILTIN и BTN_BUILTIN, передавая их в качестве аргументов функции вместо номера цифрового вывода.
В отличие от стандартного функционала Arduino, на плате Elbear Ace-Uno невозможно управлять притяжками цифрового вывода, настроенного на вход, с помощью функции digitalWrite(). Для включения притяжки к питанию необходимо воспользоваться функцией pinMode(PinNumber, INPUT_PULLUP).
Для изменения состояния цифровых выводов помимо стандартной функции digitalWrite() доступна функция digitalToggle(uint32_t PinNumber).

Аналоговые выводы

АЦП

Разрешение встроенного в MIK32 АЦП составляет 12 бит. Разрешение АЦП по умолчанию в Arduino IDE составляет 10 бит. Функция analogReadResolution() позволяет измененить разрешение в пределах от 1 до 32 бит. Функция analogRead() возвращает результаты измерения после усреднения по 10 значениям.

ШИМ

На плате Elbear Ace-Uno доступны следующие выводы для формирования ШИМ сигнала: D3, D5, D6, D9, D10, D11. Сигнал формируется с помощью 32-битного таймера. Выводы D3, D5, D6, D9 подключены к таймеру 1, выводы D10, D11 подключены к таймеру 2. Выводы, подключенные к одному и тому же таймеру, выдают ШИМ сигнал одинаковой частоты.
Цифровой вывод D10 не может быть использован для ШИМ, если одновременно активен интерфейс SPI. Это ограничение связано с особенностями работы микроконтроллера. Ограничение не распространяется на использование D10 в качестве цифрового вывода при активном SPI.
По умолчанию частота сформированного ШИМ сигнала составляет 1 кГц. Функция analogWriteFrequency() позволяет изменить частоту сигнала в пределах от 1 Гц до 1 МГц.
По умолчанию разрешение, используемое в функции analogWrite(), составляет 8 бит. Функция analogWriteResolution() позволяет измененить разрешение в пределах от 1 до 32 бит.

Прерывания

На плате Elbear Ace-Uno доступно 7 прерываний, настраиваемых функцией attachInterrupt():

Цифровой вывод Номер прерывания
D2 0
D3 1
D4 2
D5 3
D8 4
D9 5
BTN_BUILTIN 6

В микроконтроллере MIK32 предусмотрен всего один вектор прерывания. Когда срабатывает прерывание от любого источника, общая функция-обработчик последовательно проверяет все возможные источники и, при необходимости, вызывает соответствующие обработчики конкретных модулей. Поэтому важно, чтобы функции, вызываемые при прерываниях, выполняли минимально необходимый объем работы и обеспечивали как можно более быстрое завершение обработки. Это позволит избежать задержек и снизит риск пропуска последующих прерываний.
Общая функция-обработчик прерываний располагается в RAM памяти. Это позволяет устраненить задержки, связанных с кэшированием памяти при работе из FLASH памяти. Обработчики прерываний, назначаемые цифровым выводам с помощью функции attachInterrupt(), а так же обработчик прерывания для функции tone() так же располагаются в памяти RAM.

Serial

Для работы доступно два последовательных интерфейса. Нулевой интерфейс доступен на выводах D0, D1, для работы с ним используется экземпляр класса под названием Serial. Нулевой интерфейс используется для вывода информации в Монитор порта в Arduino IDE.
Первый интерфейс доступен на выводах D7, D8, используемый экземпляр класса - Serial1.
Доступны следующие настройки режима работы каждого интерфейса: длина данных - 7 или 8 бит; четность - нет, четное, нечетное; стоп бит - 1 или 2 бита.

Предупреждения об ошибках

Если в скетче используется интерфейс Serial, при возникновении ошибок при использовании какой-либо функции из пакета в порт может передаваться сообщение об этой ошибке с пояснением. Например, если в функцию будет передан некорректный номер цифрвого вывода, предупреждение об этом появится в подключенном com порте.
По умолчанию вывод предупреждений включен. Если интерфейс Serial используется для коммуникации с другим устройством, вывод предупреждений можно отключить. Для этого в самом начале функции setup() необходимо вызвать макрос DISABLE_ERROR_MESSAGES();. Вывод предупреждений можно включить обратно, вызвав макрос ENABLE_ERROR_MESSAGES(); в любом месте программы.

Библиотеки, входящие в состав пакета

Входящие в состав пакета библиотеки используют периферию микроконтроллера MIK32 и адаптированы для работы с ним.

Библиотека Описание Заметки
SPI Библиотека для работы с интерфейсом SPI Для работы используется встроенный SPI1. Доступные делители частот - SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16, SPI_CLOCK_DIV32, SPI_CLOCK_DIV64, SPI_CLOCK_DIV128, SPI_CLOCK_DIV256, обеспечивают частоту работы от 125 кГц до 8 МГц. Скорость работы по умолчанию - 4 МГц. Для задания режима и скорости работы рекомендуется использовать функцию SPISettings(), а не соответствующие отдельные функции.
Wire Библиотека для работы с интерфейсом I2C Для работы используется встроенный I2C1. Доступные частоты работы интерфейса: 100 кГц (WIRE_FREQ_100K), 400 кГц (WIRE_FREQ_400K), 1000 кГц (WIRE_FREQ_1000K). Скорость работы по умолчанию - 100 кГц. В режиме работы в качестве ведомого устройства функции, заданные через onReceive() и onRequest(), выполняются в прерывании.
SoftwareSerial Библиотека, реализующая программный последовательный интерфейс. Доступные скорости работы - от 300 до 57600 бод. Для отправки данных (TX) можно использовать любой цифровой вывод. Для приема данных (RX) можно использовать только выводы, поддерживающие прерывания. Обработчик прерывания и связанные с ним функции располагаются в памяти RAM.
EEPROM Библиотека для работы с памятью EEPROM Для использования доступно 1024 байта встроенной EEPROM памяти. Для корректной работы библиотеки обязательно вызывать функцию EEPROM.begin() перед началом работы с памятью.
Servo Библиотека для работы с сервоприводом Любой цифровой вывод может использоваться для управления сервоприводом
NeoPixel Библиотека для работы с адресными светодиодами

Протестированные библиотеки

Библиотека Описание Заметки
SD Library Библиотека, позволяющая считывать и записывать информацию на карты SD v1.2.4

Полезные ссылки

При возникновении вопросов или выявлении проблем можно оставить заявку здесь.