• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение NRF52840

Ну, почти прошил), но уперся в отсутствие библиотеки libusb, по подсказке алисы.ai скачал с оф сайта, прописал PATH, проверил: where libusb-1.0.dll, получил ответ: C:\libusb-1.0.29\MinGW-llvm-aarch64\dll\libusb-1.0.dll , но при прошивке, получаю ответ: 0000672 W STLink, CMSIS-DAPv2 and PicoProbe probes are not supported because no libusb library was found. [common]. Прошивал через dap-link, завтра попробую st-link. Хотя было заявлено:
  • Программатор: Самый доступный вариант — ST-Link v2. Также подойдут J-Link или DAPLink.
 

nikolz

Well-known member
Не совсем по теме, но про DeepSeek.
-----------------------
Использую его уже давно. в последние полгода он стал очень хорошо писать программы.
------------------------------
Теперь практически всегда, если что то начинаю писать, то с ним.
иногда ему подсказываю как оптимально написать.
Он проверяет и говорит свои доводы за и против.
---------------------------
Что же касается его советов.
То он, как и все люди ищет ответы по всему интернет и потом их анализирует. полагаю лучше, чем многие из людей.
--------------------------
Что же касается Алисы ,то она тупее DeepSeek на порядок.
Полагаю что она ищет в основном по русскому интернету.
-------------------------
Поэтому не надо наезжать на DeepSeek.
--------------------------
Более того, замечу,
что он хорошо анализирует предлагаемые решения и порою с ними объективно не соглашается.
-----------------------
Самое замечательное то, что хотя он и знает много,
но никогда не обливает дерьмом собеседника, чтобы доказать свое превосходство.
--------------------
Читаем что нас ждет:
https://habr.com/ru/news/1024000/
 
Всем огромное спасибо, получилось прошить через openosd, бутлоадер заработал, прошивка залилась.


Но возник ещё один вопрос, когда посмотрел что за команды используются при прошивке. nrf5 mass_erase
Команда выполняет полное стирание памяти микроконтроллеров семейства NRF5 (Nordic Semiconductor).
Последствия стирания
При использовании mass_erase сбрасываются критически важные настройки, хранящиеся в UICR:
  • RegOut0 — регистр управления выходным напряжением регулятора. На заводе он настроен на 3,3 В, а после стирания принимает значение по умолчанию — 1,8 В. Это может вызвать проблемы совместимости с внешними устройствами (например, с GPIO Raspberry Pi на 3,3 В).
  • другие калибровочные данные и флаги защиты.
  • Проблемы с напряжением после стирания. Если устройство перестало работать из‑за сброса RegOut0:
    • вручную запрограммируйте UICR с нужным значением 3,3 В;
    • используйте программатор с внешним регулятором напряжения.

Как это влияет на GPIO
Напряжение логических уровней GPIO напрямую зависит от VDD:
  • при VDD = 3,3 В уровень логической 1 на GPIO = 3,3 В;
  • при VDD = 1,8 В уровень логической 1 на GPIO = 1,8 В.



И вот насколько это критично будет и как вернуть к 3v3&
 
Не совсем по теме, но про DeepSeek.
-----------------------
Использую его уже давно. в последние полгода он стал очень хорошо писать программы.
------------------------------
Теперь практически всегда, если что то начинаю писать, то с ним.
иногда ему подсказываю как оптимально написать.
Он проверяет и говорит свои доводы за и против.
---------------------------
Что же касается его советов.
То он, как и все люди ищет ответы по всему интернет и потом их анализирует. полагаю лучше, чем многие из людей.
--------------------------
Что же касается Алисы ,то она тупее DeepSeek на порядок.
Полагаю что она ищет в основном по русскому интернету.
-------------------------
Поэтому не надо наезжать на DeepSeek.
--------------------------
Более того, замечу,
что он хорошо анализирует предлагаемые решения и порою с ними объективно не соглашается.
-----------------------
Самое замечательное то, что хотя он и знает много,
но никогда не обливает дерьмом собеседника, чтобы доказать свое превосходство.
--------------------
Читаем что нас ждет:
https://habr.com/ru/news/1024000/
Извините, я не имел в виду deepseek конкретно! Я с ним не работал еще)
 

nikolz

Well-known member
Всем огромное спасибо, получилось прошить через openosd, бутлоадер заработал, прошивка залилась.


Но возник ещё один вопрос, когда посмотрел что за команды используются при прошивке. nrf5 mass_erase
Команда выполняет полное стирание памяти микроконтроллеров семейства NRF5 (Nordic Semiconductor).
Последствия стирания
При использовании mass_erase сбрасываются критически важные настройки, хранящиеся в UICR:
  • RegOut0 — регистр управления выходным напряжением регулятора. На заводе он настроен на 3,3 В, а после стирания принимает значение по умолчанию — 1,8 В. Это может вызвать проблемы совместимости с внешними устройствами (например, с GPIO Raspberry Pi на 3,3 В).
  • другие калибровочные данные и флаги защиты.
  • Проблемы с напряжением после стирания.Если устройство перестало работать из‑за сброса RegOut0:
    • вручную запрограммируйте UICR с нужным значением 3,3 В;
    • используйте программатор с внешним регулятором напряжения.

Как это влияет на GPIO
Напряжение логических уровней GPIO напрямую зависит от VDD:
  • при VDD = 3,3 В уровень логической 1 на GPIO = 3,3 В;
  • при VDD = 1,8 В уровень логической 1 на GPIO = 1,8 В.
И вот насколько это критично будет и как вернуть к 3v3&
DeepSeek отвечает:
Отличный и очень важный вопрос! Вы всё верно поняли — mass_erase действительно сбрасывает настройку выходного напряжения, что может привести к неработоспособности платы или устройств, подключенных к ее выводам. Хорошая новость в том, что это полностью обратимо, и вернуть всё обратно к 3.3 В очень просто.

Давайте разберемся по порядку, насколько это критично и как это исправить.

⚠ Насколько это критично?
Критичность зависит от вашей конкретной платы. Есть два основных сценария:

  1. Платы, работающие в "нормальном режиме" (Normal Voltage Mode):
    • Примеры: Многие платы, такие как Adafruit Feather nRF52840, используют внешний стабилизатор на 3.3 В.
    • Последствия: Для них этот параметр не имеет значения. Даже после стирания плата будет работать, а на ее выводах будет стандартное напряжение 3.3 В. Вы можете даже не заметить проблемы.
  2. Платы, работающие в "режиме высокого напряжения" (High Voltage Mode)Здесь и кроется проблема:
    • Примеры: Официальные платы от Nordic, такие как nRF52840 Dongle (PCA10059).
    • Последствия: Такие платы получают питание от USB (около 5 В) и используют внутренний стабилизатор самого чипа, чтобы понизить его до напряжения для логики. После mass_erase регистр REGOUT0 сбрасывается в значение по умолчанию — 1.8 В. Это приводит к тому, что:
      • Напряжение на всех выводах GPIO падает до 1.8 В.
      • Светодиоды на плате могут светиться очень тускло, а некоторые (например, синий и зеленый) могут вообще не загораться.
      • USB может перестать работать, так как для его корректного запуска требуется напряжение выше 3.0 В.
      • Устройства, подключенные к выводам и рассчитанные на 3.3 В логику (например, датчики), перестанут с ними взаимодействовать.
🔧 Как вернуть напряжение к 3.3 В?
Есть несколько способов. Самый простой и надежный — использовать официальную утилиту nrfjprog от Nordic.

Способ 1: Команда nrfjprog (Самый рекомендуемый)
Этот метод напрямую записывает нужное значение в ячейку памяти UICR.

  1. Установите nRF Command Line Tools. В этот пакет входит нужная нам программа nrfjprog. Скачать его можно на сайте Nordic Semiconductor.
  2. Подключите плату. Для этого вам понадобится программатор, например, J-Link или его версия, встроенная в плату (на некоторых платах есть порт для этого). Плата должна быть подключена к программатору, а не только к USB по питанию.
  3. Выполните команду. Откройте терминал (командную строку) и выполните:
    bash
    nrfjprog --memwr 0x10001304 --val 5
    • 0x10001304 — это точный адрес в памяти, где хранится регистр REGOUT0.
    • --val 5 — это значение, которое устанавливает выходное напряжение 3.3 В. Число 5 в данном случае — это код из даташита Nordic, обозначающий VOUT = 3.3V.
  4. Сбросьте питание платы. Чтобы новые настройки вступили в силу, необходимо выключить и снова включить питание платы. После этого на выводах снова будет 3.3 В.
Важно: Некоторые источники могут предлагать использовать значение 0xFFFFFFFD. Оно также работает, но рекомендуется использовать просто 5, так как это прямая и более понятная запись.
Способ 2: Через отладчик (GDB)
Если у вас уже настроена среда разработки с GDB-сервером, можно выполнить команду прямо в процессе отладки:

bash
(gdb) set *0x10001304 = 5
После этого нужно сбросить питание платы.

💎 Выводы
  • Проблема реальна и чаще всего проявляется на платах-донглах от Nordic. На многих сторонних платах с собственным стабилизатором питания её можно не заметить.
  • Решается проблема просто, одной командой nrfjprog.
  • На будущее: при разработке собственного кода можно добавить небольшую проверку при старте. Если код видит, что REGOUT0 имеет значение по умолчанию (1.8 В), он может автоматически перезаписать его на 3.3 В. Это гарантирует, что ваше устройство всегда будет работать правильно, даже если кто-то случайно сотрет всю память.
Если возникнут сложности с подключением программатора или выполнение команды не даст результата, напишите, и мы разберемся дальше.
 
DeepSeek отвечает:
Отличный и очень важный вопрос! Вы всё верно поняли — mass_erase действительно сбрасывает настройку выходного напряжения, что может привести к неработоспособности платы или устройств, подключенных к ее выводам. Хорошая новость в том, что это полностью обратимо, и вернуть всё обратно к 3.3 В очень просто.

Давайте разберемся по порядку, насколько это критично и как это исправить.

⚠ Насколько это критично?
Критичность зависит от вашей конкретной платы. Есть два основных сценария:

  1. Платы, работающие в "нормальном режиме" (Normal Voltage Mode):
    • Примеры: Многие платы, такие как Adafruit Feather nRF52840, используют внешний стабилизатор на 3.3 В.
    • Последствия: Для них этот параметр не имеет значения. Даже после стирания плата будет работать, а на ее выводах будет стандартное напряжение 3.3 В. Вы можете даже не заметить проблемы.
  2. Платы, работающие в "режиме высокого напряжения" (High Voltage Mode)Здесь и кроется проблема:
    • Примеры: Официальные платы от Nordic, такие как nRF52840 Dongle (PCA10059).
    • Последствия: Такие платы получают питание от USB (около 5 В) и используют внутренний стабилизатор самого чипа, чтобы понизить его до напряжения для логики. После mass_erase регистр REGOUT0 сбрасывается в значение по умолчанию — 1.8 В. Это приводит к тому, что:
      • Напряжение на всех выводах GPIO падает до 1.8 В.
      • Светодиоды на плате могут светиться очень тускло, а некоторые (например, синий и зеленый) могут вообще не загораться.
      • USB может перестать работать, так как для его корректного запуска требуется напряжение выше 3.0 В.
      • Устройства, подключенные к выводам и рассчитанные на 3.3 В логику (например, датчики), перестанут с ними взаимодействовать.
🔧 Как вернуть напряжение к 3.3 В?
Есть несколько способов. Самый простой и надежный — использовать официальную утилиту nrfjprog от Nordic.

Способ 1: Команда nrfjprog (Самый рекомендуемый)
Этот метод напрямую записывает нужное значение в ячейку памяти UICR.

  1. Установите nRF Command Line Tools. В этот пакет входит нужная нам программа nrfjprog. Скачать его можно на сайте Nordic Semiconductor.
  2. Подключите плату. Для этого вам понадобится программатор, например, J-Link или его версия, встроенная в плату (на некоторых платах есть порт для этого). Плата должна быть подключена к программатору, а не только к USB по питанию.
  3. Выполните команду. Откройте терминал (командную строку) и выполните:
    bash
    nrfjprog --memwr 0x10001304 --val 5
    • 0x10001304 — это точный адрес в памяти, где хранится регистр REGOUT0.
    • --val 5 — это значение, которое устанавливает выходное напряжение 3.3 В. Число 5 в данном случае — это код из даташита Nordic, обозначающий VOUT = 3.3V.
  4. Сбросьте питание платы. Чтобы новые настройки вступили в силу, необходимо выключить и снова включить питание платы. После этого на выводах снова будет 3.3 В.

Способ 2: Через отладчик (GDB)
Если у вас уже настроена среда разработки с GDB-сервером, можно выполнить команду прямо в процессе отладки:

bash
(gdb) set *0x10001304 = 5
После этого нужно сбросить питание платы.

💎 Выводы
  • Проблема реальна и чаще всего проявляется на платах-донглах от Nordic. На многих сторонних платах с собственным стабилизатором питания её можно не заметить.
  • Решается проблема просто, одной командой nrfjprog.
  • На будущее: при разработке собственного кода можно добавить небольшую проверку при старте. Если код видит, что REGOUT0 имеет значение по умолчанию (1.8 В), он может автоматически перезаписать его на 3.3 В. Это гарантирует, что ваше устройство всегда будет работать правильно, даже если кто-то случайно сотрет всю память.
Если возникнут сложности с подключением программатора или выполнение команды не даст результата, напишите, и мы разберемся дальше.
Насколько я понял эта проблема моих плат не касается.
 

pvvx

Активный участник сообщества
Насколько я понял эта проблема моих плат не касается.
У nrf5 вроде беда с DC-DC - он жрет не в себя. -> в батарейных устройствах его использовать проблемно. Потребуются БОЛЬШИЕ батарейки :)
 
Сверху Снизу