Перейти к содержанию

Arduino

В OpenSiFli доступно бета-ядро Arduino для SF32 на базе Zephyr: OpenSiFli/ArduinoCore-zephyr. Оно публикует пакет Arduino sifli:sf32lb52, который в Boards Manager отображается как SiFli Serial Boards. Сейчас пакет рассчитан на плату SiFli SF32LB52 DevKit LCD.

Этот вариант подходит для скетчей, быстрой проверки периферии, демонстраций и ранних прототипов. Для разработки прошивки серийного изделия, настройки стека Bluetooth, приложений с интенсивной графикой, оптимизации энергопотребления или разработки собственной платы используйте SiFli-SDK.

Бета-версия ядра

OpenSiFli помечает это ядро Arduino как BETA и рекомендует использовать его только для тестирования. Функции, API, поведение загрузчика, состав пакета и процесс выпуска могут измениться. Не считайте его готовым к серийному применению.

Что понадобится

Оборудование

  • Плата SiFli SF32LB52 DevKit LCD.
  • Кабель USB Type-C с поддержкой передачи данных, подключённый к интерфейсу USB-to-UART платы.
  • Компьютер под управлением Windows, macOS или Linux.

Программное обеспечение

  • Arduino IDE 2.x или Arduino CLI.
  • Пакет Arduino OpenSiFli sifli:sf32lb52.
  • Монитор последовательного порта.

Установка пакета платы

В Arduino IDE откройте Arduino IDE > Settings и добавьте следующий URL в поле Additional Boards Manager URLs:

https://github.com/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index.json

Если вы находитесь в материковом Китае, используйте зеркало индекса пакетов:

https://downloads.sifli.com/github_assets/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index_cn.json

Затем откройте Boards Manager, найдите SiFli Serial Boards и установите платформу sifli:sf32lb52.

Для Arduino CLI выполните:

arduino-cli core install sifli:sf32lb52 \
  --additional-urls https://github.com/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index.json

Для зеркала в Китае:

arduino-cli core install sifli:sf32lb52 \
  --additional-urls https://downloads.sifli.com/github_assets/OpenSiFli/ArduinoCore-zephyr/releases/latest/download/package_sifli_index_cn.json

Выбор платы

В Arduino IDE выберите:

SiFli SF32LB52 DevKit LCD

FQBN платы:

sifli:sf32lb52:sf32lb52devkitlcd

В определении платы OpenSiFli этот вариант Arduino сопоставлен с целью Zephyr sf32lb52_devkit_lcd и вариантом sf32lb52_devkit_lcd_sf32lb525uc6.

Выбор параметров сборки

Ядро предоставляет два важных меню:

Параметры сборки
Меню Параметр Значение
Mode Standard Скетч запускается автоматически после загрузки.
Mode Debug Оболочка Zephyr ожидает команду sketch.
Link mode Dynamic Скетч упаковывается для загрузчика Zephyr.
Link mode Static Скетч включается в прошиваемый бинарный файл.

Используйте Dynamic для работы через загрузчик Zephyr. Выбирайте Static, если скетч нужно скомпоновать с образом прошивки для записи во флеш-память.

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

По документации OpenSiFli, перед первой загрузкой плату необходимо перевести в режим загрузки по последовательному порту. Выполните описанную для SF32LB52 DevKit LCD последовательность Boot/Reset, затем запустите загрузку из Arduino IDE или CLI.

Для загрузки используется инструмент sftool.

Загрузка проверочного примера с выводом в последовательный порт

Сначала проверьте вывод в последовательный порт. Он позволяет проверить загрузку, сброс платы, запуск среды выполнения и вывод в консоль, не полагаясь на полярность светодиода:

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello from SF32 Arduino");
  delay(1000);
}

Загрузите скетч из Arduino IDE или выполните команды Arduino CLI:

arduino-cli compile \
  --fqbn sifli:sf32lb52:sf32lb52devkitlcd:link_mode=dynamic \
  /path/to/YourSketch

arduino-cli upload \
  -p /dev/cu.usbserial-XXXX \
  --fqbn sifli:sf32lb52:sf32lb52devkitlcd:link_mode=dynamic \
  /path/to/YourSketch

Замените /dev/cu.usbserial-XXXX на последовательный порт платы. В Windows укажите соответствующий порт COM, а в Linux — /dev/ttyUSB* или /dev/ttyACM*.

Откройте Serial Monitor и задайте скорость 115200 бод. В режиме сборки Standard скетч должен выводить одну строку в секунду. В режиме Debug откройте оболочку Zephyr и выполните команду:

sketch

Проверьте, определён ли LED_BUILTIN в установленном варианте SF32LB52 DevKit LCD: номера выводов Arduino не универсальны. Если макрос определён и вариант сопоставляет его со встроенным светодиодом, после успешной проверки последовательного вывода попробуйте Blink. В противном случае перед выбором GPIO уточните по документации платы, куда подключён светодиод и какова его полярность.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

Устранение неполадок

Таблица: устранение неполадок
Проблема Что проверить
Пакет не отображается Проверьте URL индекса пакетов и используйте Arduino IDE 2.x.
Загрузка прошивки завершается ошибкой Переведите плату в режим загрузки по последовательному порту и убедитесь, что монитор последовательного порта не занимает этот порт.
Скетч не запускается Проверьте параметр Mode. В режиме Debug выполните sketch в оболочке Zephyr.
Неопределённый символ Zephyr Согласно README ядра, отсутствующие функции Zephyr могут потребовать экспорта в loader/llext_exports.c и повторной сборки загрузчика.
Отсутствует подсистема Zephyr Включите требуемый параметр CONFIG_ в конфигурации платы .conf, пересоберите загрузчик и загрузите его на плату.
Не хватает памяти Оболочка Zephyr и динамическая загрузка скетча занимают RAM. При необходимости уменьшите размер стека или выберите другой режим сборки.

Текущий охват

Опубликованный сейчас пакет предназначен для SF32LB52 DevKit LCD и остаётся бета-версией для тестирования. Прежде чем пробовать его на другой плате или полагаться на какой-либо API, проверьте репозиторий исходного проекта и примечания к выпуску именно этой версии пакета. Поддержка функции в Zephyr или SiFli-SDK сама по себе не означает, что она поддерживается этим пакетом Arduino.

Последнее обновление: