Stm32 не определяется usb
void Handle_USBAsynchXfer (void)
if (needToSend == 1)
uint8_t tempData;
USB_SIL_Write(EP1_IN, &tempData, 1);
SetEPTxValid(ENDP1);
>
>
USB_SIL_Write(EP1_IN, &tempData, 1);
SetEPTxValid(ENDP1);
needToSend = 0;
>
>
Обе передают по 8 байт данных. Почему две передачи разнесены по разным функциям?
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!
да без проблем. Наверняка это callback функции к каким либо событиям. Просто по обеим событиям делается одно и то же. Ну а что это за события - добро пожаловать в документацию на USB и библиотеку, даташит, код библиотеки и т.д.Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет
Эти два события обычно используются для bulk endpoint. Вероятно, если после начала фрейма на первый IN запрос контроллер ответит NAK, то хост больше не будет слать IN запросы какое-то время. Так что в Handle_USBAsynchXfer заряжается буфер для первого IN запроса.Кстати, в STM примерах для bulk эндпоинта забыли сделать отсылку пакета нулевой длинны если данных больше нет, а последний пакет был равен размеру буфера. Если не отсылать такой пакет, со стороны хоста это будет выглядеть как подвисание при чтении.
Приглашаем 30 ноября всех желающих посетить вебинар о литиевых источниках тока Fanso (EVE). Вы узнаете об особенностях использования литиевых источников питания и о том, как на них влияют режим работы и условия эксплуатации. Мы расскажем, какие параметры важно учитывать при выборе литиевого ХИТ, рассмотрим «подводные камни», с которыми можно столкнуться при неправильном выборе, разберем, как правильно проводить тесты, чтобы убедиться в надежности конечного решения. Вы сможете задать вопросы представителям производителя, которые будут участвовать в вебинаре.
Наверняка это callback функции к каким либо событиям.Handle_USBAsynchXfer(); Эта функция вызывается из коллбэка SOF:
void SOF_Callback(void)
static uint32_t FrameCount = 0;
if(bDeviceState == CONFIGURED)
if (FrameCount++ == VCOMPORT_IN_FRAME_INTERVAL)
/* Reset the frame counter */
FrameCount = 0;
/* Check the data to be sent through IN pipe */
Handle_USBAsynchXfer();
>
>
>
Я сейчас читаю книги и статьи по USB (учусь), но такое количество информации просто разрывает мозг, поэтому могу написать глупость.
Как я понимаю, то пакет SOF отправляется хостом для того чтоб спросить устройство, хочет ли оно нам что-то передать. Приняв такой пакет устройство либо отвечает пустым пакетом, либо осуществляет передачу данных через EndPoint-ы. Но тогда появляется вопрос - какого фига данные, впихнутые через функцию SOF вообще отправляются?
Если я Вас правильно понял, то только первая партия данных летит через Handle_USBAsynchXfer(), а остальные через EP1_IN_Callback?
Тогда такой вопрос: размер буфера в обоих случаях будет одинаковым (таким каким мы его объявили в дескрипторе)?
И еще вопрос: получается для отправки третьего пакета данных (если мы передаем одну партию данных) нужно только повторно вызвать EP1_IN_Callback (в данном случае) и скормить ему нужные данные?
Приглашаем всех желающих 25/11/2021 г. принять участие в вебинаре, посвященном антеннам Molex. Готовые к использованию антенны Molex являются компактными, высокопроизводительными и доступны в различных форм-факторах для всех стандартных антенных протоколов и частот. На вебинаре будет проведен обзор готовых решений и перспектив развития продуктовой линейки. Разработчики смогут получить рекомендации по выбору антенны, работе с документацией и поддержкой, заказу образцов.
Согласен, я тоже не нашел легко написанной книги по этому вопросу. какого фига данные, впихнутые через функцию SOF вообще отправляются? Как я понимаю, то пакет SOF отправляется хостом для того чтоб спросить устройство, хочет ли оно нам что-то передать.SOF - это начало кадра, и не имеет прямого отношения к устройству.
В STM32 много флагов событий от USB и соответственно прерываний. Я тоже потихоньку мучаю USB (т.е. он меня), только я не использую готовых библиотек. Вроде что-то более-менее получается, конечно с кучей подвисших вопросов в воздухе. Так вот, я использую всего два события, это SE0 (событие подключения устройства к компу) и событие успешного трансфера (в любую сторону). В последнем можно определить направравление передачи и для какой точки.
Смысл такой.
-Сначала инициализируется модуль USB. просто вкючаете, подкючаете генератор и т.д.
- По событию SE0 (воткнули девайс в комп) инициализируете нужные регистры, это событие кстати сбросит их в начальное состояние само.
-Затем устанавливаете в регистре EP0 VALID RX, т.е. МК готов принять данные для нулевой точки.
-Возникает прерывание об успешной транзакции. Расшифровываете и понимаете что что то получили.
- читаете что лежит в буфере приема, там будет запрос дескриптора устройства.
-ложите в буфер отправки дескриптор устройства и выставляете в регистре EP0 VALID TX и контроллер сам все отправит.
-после события об успешной отправки опять переводите МК в состояние в готов принять.
После успешной транзакции состояние VALID само сменится на NACK . Т.е. неготовность принятия или отправки данных. Вы же уже поняли что МК сам ничего не отправит и не примет, только по инициативе хоста. И МК может долго отвечать NACK и хост на это никак не обижается.
Я к тому что мне непонятно зачем отлавливать SOF. Ну пропустили начало кадра, ответит МК NACKом сам, и отвечать будет всегда пока не подготовите данные. Хотя мне непонятно может потом, у что мне в USB много чего еще непонятно.
Если интересно, я в ехселе сделал частичный протокол обменамоего МК по USB/
_________________
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Последний раз редактировалось Z_h_e Чт май 05, 2016 14:04:20, всего редактировалось 1 раз.
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?
Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.
Выбор профиля HID
USB-HID — довольно обширный класс устройств, поэтому прежде всего придется выбрать какое именно устройство мы будем создавать.
Мы можем создать эмуляцию клавиатуры, мыши, джойстика и других устройств ввода, а можем создать свое устройство, чтобы не зависеть от довольно жестких рамок стандарта и свободно обмениваться данными с ПК.
Я расскажу как cделать Custom HID device. Это дает максимальную свободу. Чтобы не затягивать статью, постараюсь рассказать максимально кратко — описаний стандарта в сети и без меня много, но лично мне они слабо помогли, когда понадобилось решить конкретную задачу.
Структура проекта
- Папка USB-FS с библиотекой «STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver» версии 4.0.0.
- В папках Inc и Src файлы:
platform_config.h — здесь собраны определения, касающиеся конкретной платы и семейства МК
stm32_it.h, stm32_it.c — здесь определены обработчики прерываний
usb_conf.h, usb_endp.c — здесь определяются конечные точки (Endpoint), размеры и адреса их буферов, функции-обработчики
usb_desc.h, usb_desc.c — здесь собрана информаци о самом устройстве — как оно будет определяться при подключении к ПК и определены размеры и формат пакетов данных
hw_config.c — здесь собрана вся работа с отправкой данных на ПК
hw_config.h, usb_istr.h, usb_prop.h, usb_pwr.h
usb_istr.c, usb_prop.c, usb_pwr.c — нужны для работы USB-FS библиотеки, но лезть в них необязательно
Инициализация USB
Для корректной работы USB модуля важна частота работы МК. Далеко не все частоты позволяют правильно задать тактирование USB. В нашем случае используется кварцевый генератор на 8МГц и МК работает на частоте 72МГц, а USB модуль на 48МГц.
В main.c достаточно включить всего несколько строк кода
В функции Set_System() производится настройка пина подтяжки линии D+ к питанию для программного подключения/отключения устройства от ПК (в нашей плате не используется), настраивается прерывание и инициализируются светодиоды и кнопки для демонстрационного проекта.
В USB_Interrupts_Config() настраиваются прерывания в зависимости от семейства МК (поддерживаются F10x, F37x, L1x).
Функция USB_Init() запускает работу USB модуля. Если временно нужно отключить для отладки работу с USB, просто закомментируйте эту строку.
Далее в бесконечном цикле проверяется, удалось ли сконфигурировать USB модуль при подключении к ПК. Если все сработало верно и устройство успешно подключилось, ПК включен и не находится в режиме энергосбережения, то состояние будет CONFIGURED.
Далее проверяется, была ли закончена предыдущая передача данных в ПК и если да, то готовится к отправке новый пакет в функции RHIDCheckState()
Размер пакета и частота передачи
USB-HID девайс не может сам инициировать передачу, т.к. координацией шины занимается host устройство — ПК. Поэтому при подготовке USB дескриптора нашего устройства, мы пишем, как часто нужно опрашивать наше устройство. По спецификации максимальная частота опроса — 1кГц и максимальный размер передаваемого за раз пакета — 64 байта. Если этого недостаточно — придется использовать другие режимы работы — вроде USB bulk, но там уже без драйверов не обойтись.
За настройку взаимодействия с ПК отвечают 3 дескриптора:
В комментариях все довольно прозрачно. Обратите внимание на DEVICE_VER_L, DEVICE_VER_H — это константы из usb_desc.h, которые вы можете изменить для идентификации версии своего устройства.
Дескриптор конфигурации (описывает возможности устройства)Здесь стоит обратить внимание на константу wMaxPacketSize — она определяет максимальный размер пакета, которым мы будем обмениваться с ПК. Проект так настроен, чтобы при ее изменении менялись и размеры буферов. Но не забывайте, что больше 0x40 по стандарту указывать не стоит. С этой константой будьте осторожны — если передаваемый пакет будет отличаться по размеру — будут проблемы!
Следующая за ним константа с комментарием bInterval — это период опроса устройства в миллисекундах. Для нашего устройства задано 32мс.
Это самый важный дескриптор — он описывает протокол обмена и функционал устройства. Его формирование — не самая простая задача. Если допустить ошибку при формировании дескриптора — устройство перестанет работать. Формат дескриптора очень жесткий. Есть даже специальная утилита HID Descriptor tool. А в корне проекта лежит файл «RHID.hid» с описанным выше дескриптором для редактирования в этой утилите. Но если вы не понимаете, что делаете, лучше не лезть.
Для простоты я сделал две константы:
RPT3_COUNT — размер OUTPUT буфера в байтах для передачи пакета в МК (в примере — 1 байт)
RPT4_COUNT — размер INPUT буфера в байтах для передачи пакета в ПК (в примере — 4 байта)
Размер любого из этих буферов не должен превышать wMaxPacketSize. Меньше — можно.
Кстати, превратить Custom HID в другой HID девайс, например, клавиатуру или джойстик можно фактически только переписав ReportDescriptor и изменив класс и подкласс устройства в дескрипторе конфигурации.
Что такое Report
- REPORT_ID = 1 и 2 — команда МК включить/выключить LED1/LED2. Содержит поле размером 1 бит с желаемым состоянием светодиода и поддерживает отправку как методом SET_REPORT так и методом SET_FEATURE (об этом чуть позже).
- REPORT_ID = 3 — передает один байт в МК. Просто, чтобы показать, как передать данные МК. Мы будем передавать положение ползунка.
- REPORT_ID = 4 — это репорт для передачи данных ПК. Возвращает информацию о текущем состоянии светодиодов, кнопок (если они есть) и возвращает переданный в репорте с байт, чтобы показать, что данные приняты.
Цикл обмена
Массив uint8_t Buffer[RPT4_COUNT+1] определен как размер полезных данных входящего (рассматривается всегда с точки зрения хоста) пакета + байт ID. Это важно — если размер буфера будет отличаться — будут проблемы. Поэтому для изменения размеров буфера редактируйте значение константы в usb_desc.h.
В функции мы собираем данные в пакет, устанавливаем флаг PrevXferComplete = 0, говорящий о том, что данные отправляются и вызываем функциии библиотеки USB_SIL_Write и SetEPTxValid для отправки данных хосту.
Все, на этом передача данных хосту закончена.
С приемом данных немного сложнее — есть два способа послать данные девайсу — один из них заключается в использовании описанных в дескрипторе репорта возможностей устройства (Features), с соответствующими параметрами посредством функции SET_FEAUTRE. Это некоторая абстракция, для красивого управления устройством с кучей функций, чтобы можно было вызывать осмысленные функции, а не просто слать поток байт.
Второй способ — это работа с устройством как с файлом — просто записываем в него пакет как в файл. Этот метод называется SET_REPORT. На деле работает чуть-чуть медленнее.
Наше устройство поддерживает оба метода, о чем мы и сказали хосту в дескрипторе репортов.
Обработка SET_FEATURE
Данные, отправленные методом SET_FEAUTRE обрабатываются в usb_prop.c
Здесь мы проверяем первый байт в репорте и в соответствии с ним обрабатываем остаток пакета — управляем светодиодами или просто берем байт, отправленный нам хостом и кладем в пакет для последующей отправки обратно в функции RHIDCheckState.
Под Report_Buf зарезервировано wMaxPacketSize байт, чтобы влез любой пакет, который нам отправит хост.
Данные, отправленные методом SET_REPORT обрабатываются в usb_endp.c
Здесь почти то же самое, только нужно самостоятельно забрать данные вызовом USB_SIL_Read(EP1_OUT, Receive_Buffer) и в конце сообщить, что мы закончили вызовом SetEPRxStatus(ENDP1, EP_RX_VALID);
Настраивать устройство, передавать и принимать данные в пакетах нужного размера с нужной нам периодичностью мы научились.
Собираем проект и прошиваем в устройство.
Работать, это будет примерно так:
Также я написал маленькую демо-софтинку, которая автоматически определяет подключение к компу и отключение нашего девайса по его VID и PID, отображает статус — подключено/отключено индикатором рядом с чекбоксом Auto Connect
Радиокнока Send using позволяет выбрать метод отправки данных девайсу.
Report: отображает полученный от девайса пакет побайтно, начиная с ReportID.
Щелкая по светодиодам ниже — управляем светодиодами девайса. Их состояние отображает текущее состояние девайса. Считывается из репорта от девайса.
Перемещая ползунок, мы отправляем Report с и значением, соответствующим позиции ползунка. Девайс вернет это значение в 4 байте репорта.
В выпадающем комбобоксе отображаются HID девайсы, найденные в системе и если найден наш девайс, то отображается его название.
Если остались вопросы — пишите в комментариях. Постараюсь ответить. Я постарался не утопить суть в куче мелочей, чтобы сложилось общее понимание. Остальное уже можно понять, изучая проект. Но если вам нужно быстро сделать свое устройство, а лезть в дебри некогда — все, что вам нужно, я описал.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Попробуйте перепаять R10 на 1-2кОм. Помогает.
И ещё - Попробуйте на неизвестное устройство поставить драйвер из папки с драйверами.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Но там R10 уже стоит на 1.5 кОМ. Я её прошивал в прошлом году. Поморгал светодиодом с горем пополам ,все время ругалось при компиляции . Была система ХП. СЕйчас стоит 7. Жду из китая новую платку , может другая прошъётся .
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня их десяток разных. И с 10к и с 1.5к. Ни одну не смог запустить в режиме с загрузчиком. Да в общем то и не старался. Не получилось с ходу - и ладно. Она через ST-Link шьётся замечательно и при этом после старта на загрузчике не тормозит.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Аналогично, только даже не пробовал шить без ST-Link.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну, вообще-то варианты загрузки через ST-Link и через USB являются взаимоисключающими. Изначально - шьется через ST-Link, если перепрошить загрузчик, будет шиться через USB, но перестанет через ST-Link.
Судя по тому, что шьется через ST-Link, там просто нет ардуиновского загрузчика.
PS. Через UART шьется в любом случае.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ну, вообще-то варианты загрузки через ST-Link и через USB являются взаимоисключающими. Изначально - шьется через ST-Link, если перепрошить загрузчик, будет шиться через USB, но перестанет через ST-Link.
Судя по тому, что шьется через ST-Link, там просто нет ардуиновского загрузчика.
PS. Через UART шьется в любом случае.
разве v bluebpill'e нет ситемного загрузчика который есть "с завода" и являеться частью кремния?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вот "с завода" именно через UART. Но довольно геморройно: переставить перемычку, нажать кнопку, запустить программу прошивки, и, главное, нигде не перепутать последовательность.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вот вот. Когда получил первые платы ST-Linkа у меня ещё не было. Собственно на одну через UART влили прошивку ST-Linka c танцами и бубнами, зато потом жизнь сразу стала легче.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня их десяток разных. И с 10к и с 1.5к. Ни одну не смог запустить в режиме с загрузчиком.
Аналогично, только даже не пробовал шить без ST-Link.
У меня напротив - среди двух десятков таких плат от разных продавцов ни с одной не было проблем с подключением по ком-порту. СТ-линк есть, но я им пользуюсь при работе с ИАРом или Кубом, а в ардуино ИДЕ прошиваю исключительно через ком-порт.
Не знаю, какие у вас проблемы - по гайду от HWMan все отлично работает, даже резистор на PA12 менять не обязательно.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вот "с завода" именно через UART. Но довольно геморройно: переставить перемычку, нажать кнопку, запустить программу прошивки, и, главное, нигде не перепутать последовательность.
никаких кнопок нажимать не надо.
Переставил перемычку, прошил через Flash Loader Demonstrator, вернул перемычку обратно. ВСЕ
И если что перепутаешь - вернутся к заводской прошивке не проблема.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А как "прошить через Flash Loader Demonstrator", не нажимая никаких кнопок?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А как "прошить через Flash Loader Demonstrator", не нажимая никаких кнопок?
на плате блюпилл никаких кнопок не нажимается.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Подтверждаю. На блюпиле жёлтенькие джамперы. Вот только правильно воткнуть для прошивки в условиях первого попадания в руки и большой боязни что то не испортить. Да и заливка на разных скоростях, и размер надо правильно указать. И USB-TTL правильно воткнуть. В общем первый раз у меня часа два ушло пока на экране Ок не появилось.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А зачем тогда я, как дурак, каждый раз на сброс нажимаю?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А зачем тогда я, как дурак, каждый раз на сброс нажимаю?
не знаю :) На заводской прошивке этого делать не требуется.
Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Не знаю, какие у вас проблемы
Б707, дорогой! Ни каких проблем! ;)) Я же написал - в голову не пришло проверять, как оно с УАРТом. С удовольствием почитаю ветку, ради информации.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А зачем тогда я, как дурак, каждый раз на сброс нажимаю?
не знаю :) На заводской прошивке этого делать не требуется.
Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом
Когда я экспериментировал с Кубом, в некоторых случаях контроллер после прошивки не был виден через ST-Link (что я отследил), и в некоторых не прошивался без нажатия на сброс (что я воспринял как обычную практику). Ну, собственно, после этого нажимал на сброс всегда - чтобы уж наверняка.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Когда я экспериментировал с Кубом, в некоторых случаях контроллер после прошивки не был виден через ST-Link (что я отследил), и в некоторых не прошивался без нажатия на сброс (что я воспринял как обычную практику). Ну, собственно, после этого нажимал на сброс всегда - чтобы уж наверняка.
в кубе пробовали настраивать дебаг порт ?
Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом
на случай, если нет ST-Link'a , есть такая утилита STM32CubeProgrammer , ей можно USART/USB подсоедениться к микроконтоллру в режиме бутлоадера и удалить /перепрошить и много еще чего. a ST-Link ом можно и в обычном режиме
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте. Всё голова уже не работает. Порт так и не появился.Буду ждать из китая новую stm-ку. Полтора года не могу доделать проект. ST-Linka у меня нет.Спасибо всем .
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня вин7. Сейчас подключил STM и посмотрел драйвер - короче драйвер LeafLabs, LLC дата 21.10.2018.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте. Всё голова уже не работает. Порт так и не появился.Буду ждать из китая новую stm-ку. Полтора года не могу доделать проект. ST-Linka у меня нет.Спасибо всем .
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте. Я все так и делал. Переходник у меня ch 340 . Через Flash Loader Demonstrator все проходит. И светофор зелёный и после пошивки зелёная полоса. Далее от администратора запускаю установку драйвера. Появляется чёрный экранчик, жду, появляется (нажмите любую клавишу). Далее иду в ардуино , ну и как в ссылке в самом начале страницы . А порта там нет.Пытался в диспетчере , ставить вручную , пишет что драйвера не нуждаются в обновлении. А само устройство остановлено из за неполадок ,код (43).Сейчас попробовал подключить ардуино нано, порт появляется. А с stm порта нет. Как то так.
Если у вас возникли проблемы с подключением платы Iskra JS к Espruino Web IDE, последовательно пройдите все шаги описанные на это странице.
Проверьте среду разработки
Работать с платой Iskra JS следует только в Espruino Web IDE. Если у вас установлена Iskra IDE , установите Espruino Web IDE.
Проверьте установку драйвера для STM32
Подключите плату к компьютеру и посмотрите как определяется платформа:В последних двух случаях, необходимо указать путь к драйверам.
Установка драйвера STM32
Всё получилось. Теперь можно продолжить «настройку платы».
Установка дополнительных драйверов для STM32
Рассмотрим альтернативный вариант подключения платы Iskra JS к Espruino Web IDE. Поочерёдно установите все драйвера с официального сайта ST-Link.
Если установка дополнительных драйверов не помогла, прошейте контроллер через DFU-режим
Прошивка платы через DFU
Если в диспетчере устройств не появилось новых устройств, вероятней всего микроконтроллер STM32F405RG не прошит. Для решения проблемы прошейте платформу в DFU-режиме
Disconnect при загрузке скрипта
Если в диспетчере устройств плата отображается корректно, но при попытке загрузить скрипт происходит рассоединение Espruino Web IDE и платы Iskra JS, то вероятнее всего проблема заключается в особенности ОС Windows. Обойти эту проблему можно используя дополнительно USB-Hub. При подключении Hub будет служить посредником между компьютером и управляющей платой.
Не работают библиотеки Амперки
По умолчанию библиотеки модулей Амперки работают только при подключении к интернету. Если вы планируете прошивать плату Iskra JS без выхода в сеть, необходимо настроить ваш компьютер.
Проверьте путь к подключаемым библиотекам. Для этого зайдите в настройки Espruino Web IDE: Settings Communications и проверьте адрес в поле Module URL .
Должен быть указан:
И в поле Module Extensions :
Если путь иной, замените его. После, перейдите в настройки Espruino Web IDE: Settings BOARD и проверьте адрес в поле Board JSON URL .
Должен быть указан:
Программа не сохраняется после сброса питания
Среда настроена, плата прошивается, код работает. Но после переподключения питания программа не сохраняется в памяти контроллера, как будто её и не было. Для решения проблемы сделайте ряд действий.
После этого программа должна сохранятся в памяти контроллера после переподключения питания.
Если вы прошли все шаги и проблема осталась — обратитесь в нашу техническую поддержку через форму обратной связи или по телефону.
Читайте также: