Чет я тоже никак не разгляжу, где там кейл. :) С другой стороны, никто же не отбирал стандартной ардуиновской Wire. Можно попробовать примеры из нее пособирать. Должно работать, по идее.
Два месяца потребовалось "голубой пилюле", чтобы доехать до меня с али. Заказывал 16.09. Один из самых больших сроков доставки за всю историю моих покупок там. Фиг с ним, главное приехало.
Начинаю делать J-Link.
Выпаиваю джамперы, запаиваю перемычки, чтобы не торчали под термоусадкой:
Примеряю резисторы (три штуки по 100 ом):
Эти резисторы являются частью схемы J-Link и их присутствие проверяется софтом. Наличие обязательно. Здесь я их просто вставил в дырки, куда они должны запаиваться, но в конечном варианте запаял их с другой стороны. Там получалось не наглядно (нет маркировки), поэтому данная фотография сделана для иллюстрации. Повторю словами, если фотка непонятна: резисторы по 100 ом, три штуки, запаиваются между контактами А7 и А4, А5 и А3, А2 и А1.
Красные стрелки указывают, куда запаивать провода, которые будут идти к отлаживаемому/прошиваемому МК (целевая платформа). В минимальном варианте, можно без RESET-а.
К левой части верхнего ряда пинов или к правой части нижнего имеет смысл также подпаять провод земли (контакт с маркировкой "G") и плюса питания (маркировка "3.3"). Землю к целевой платформе подключать все равно придется, а питание от программатора -- это уже по желанию.
Общее замечание по длине проводов -- чем короче, тем лучше. Слишком длинные провода -- частая причина неработоспособности программатора. Убеждался неоднократно.
К B12 через резистор на землю можно подключить светодиод. Он, типа, актвность SWD будет визуализировать. Показалось, что ни к чему.
Почему-то был уверен, что широкая термоусадка у меня есть. Поискал, ничего не смог найти. Нашел усадку для аккумуляторов типоразмера 18650. Она подходила по размерам, но материал там другой и было непонятно, сядет ли он и что получится в итоге. В итоге получилась фигня.
Отрезал вроде в размер, чуть с напуском, но оно как-то очень уж сильно сжалось, причем "майкой". Не эстетично, но пока не найду широкую термоусадку, пойдет и так.
Разъем с левой стороны (на фото выше) -- это разъем подключения программатора (маркировка на другой стороне платы) для зашивки "пилюли" в J-Link. Я использовал ST-Link. Ссылка на саму прошивку здесь уже приводилась ранее, но, на всякий случай, дублирую: прошивка. Прошиться можно с помощью ST-LINK Utility.
Прошился, все работает. Пока проверил под IARом на STM32F103C8. Целевой МК шьется, отладка идет.
Софт для работы с JLink-ом нужно смотреть на сайте сеггера. Сейчас глянул, пишут, что для некоммерческого использования студия бесплатна (если не путаю, раньше вроде этого не было), а для работы с nRF52 она бесплатна была и раньше.
Если BOOT0 запаивается в 0, зачем запаивать BOOT1?
В моем случае так было быстрее. Чтобы не копаться в референсе, проще было свести задачу к предыдущей, т.е. воспроизвести перемычками положение джамперов по умолчанию.
dosikus пишет:
малый вес .Ozone.
Присоединяюсь. Сама среда легкая, современная, удобная. Ozone -- отдельная песня. Продвинутый отладчик с профайлером. Насчет последнего, так я вообще припомнить не могу чего-то похожего для микроконтроллеров.
axill пишет:
что дает jlink при работе с stm32 в сравнении с stlink?
Все многичисленные преимущества я вижу не в самом jlink-е, а в сеггеровском софте, который с этим программатором работает. Но т.к. сей софт работает только с jlink-ом, то это автоматически становится преимуществом jlink-а.
Цитата:
и какая прелесть в segger studio по сравнению с keil или iar?
Немалая прелесть заключается в простоте использования. Например, чтобы создать пустой проект для STM32F0 в SES нужно ответить всего на четыре или пять вопросов визарда, два из которых -- имя проекта и тип используемого МК. В Кейле или Иаре это чуть ни на порядок сложнее, с множеством лишних и не вполне очевидных новичкам телодвижений.
Вот я специально сейчас пощелкал немного мышой, создал пустышку, написал неск. строк кода. Извольте, все как положено -- пошаговое выполнение, дизасм, просмотр локальных переменных, регистров МК, стек вызовов и вишенка на торте -- форматированная печать из программы прямо в отладочную консоль:
Несколько нелогично, что я начал рассказ о SES в ветке про nRF52 c создания проекта для STM32. Думаю, что надо исправить это недоразумение и показать по шагам создание проекта в SES для nRF52832.
После установки студии (на данный момент это версия 4.10а), первым делом надо скачать библиотеки и всякую софтовую поддержку для nRF52. Через меню "Tools->Package Manager..." найти в списке соответствующее семейство МК:
выбрать "nRF CPU Support Package" и нажать "Next". После того, как установка закончится, можно создавать проект через основное меню студии: "File -> New Project..."
Определившись с названием и местом, где проект будет располагаться, можно следовать дальше, пропуская формы визарда без изменений, если ничего не понятно и меняя что надо, если понятно.
Сейчас не вспомню точно, но где-то поблизости от этого шага студия предложит получить ключ для активации бесплатной лицензии. Нужно ввести регистрационные данные и получить ключ на электронную почту, чтобы затем ввести его в форму регистрации. Процесс этот полностью легальный.
После окончания работы визарда в левом окошке студии находим пункт "Source Files" и разворачиваем его. Внутри окажется "main.c", который по двойному щелчку откроется в окне редактора справа. Изначально там будет текст примера, который можно сразу же сносить и писать свой код на его месте.
Вот я, не долго думая, написал примерчик, который должен будет раз в секунду выводить в отладочную консоль некий текст. Типа, текстовый блинк.
Пора подцеплять модуль к jlink-у. Питание от него же:
Нажатие F7 в студии запустит компиляцию, F5 загрузит скомпилированный код в МК и стартует отладчик.
Дальше можно выполнять по шагам или запустить полный прогон.
Немного о программном коде этого примера:
#include "nrf.h"
#include <stdio.h>
#include <stdlib.h>
void main(void) {
SysTick->LOAD = SystemCoreClock / 1000 - 1; /* Rise Systick's COUNTFLAG every mS */
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; /* Start Systick */
for (;;) { /* Loop forever */
for (int i = 0; i < 1000; i += (SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0) {
/* wait until COUNTFLAG appeared 1000 times (perform one second delay ) */
}
printf("Hello Random World No. %d !\n", rand());
}
}
В ядре Cortex-M есть SysTick -- 24 битный счетчик, значение которого убывает с каждым периодом тактовой частоты. Досчитав до нуля, счетчик взводит бит COUNTFLAG в регистре SysTick_CTRL, загружает счетный регистр значением из SysTick_LOAD, после чего опять считает вниз и так по кругу. Бит COUNTFLAG, будучи установленным в 1, пребывает в таком состоянии ровно до первого чтения регистра SysTick_CTRL, после чего сбрасывается в 0.
Для некоторых плат, которые поддерживает ардуино, на SysTick-е сделан миллис, но здесь все ресурсы отданы на откуп пользователю, т.ч для подсчета времени будет самое оно.
В строке 7 определяется период счета. В данном случае это 1мс. С такой периодичность буде взводиться бит COUNTFLAG. Строка 8 запускает счет.
В строке 10 начинается "вечный" цикл. Вложенный в него цикл на строке 11 организует ожидание, пока COUNTFLAG не взведется тысячу раз, что эквивалентно задержке на 1 секунду. Таким образом, printf() выводит в отладочную консоль текст и случайное число ровно один раз в секунду.
Почты этой осенью продолжают замедляться. Пришли платки для ESP-32, заказанные 15.09. Для запайки на них модулей E73 подходят, если не идеально, то близко к тому:
Правда, уже при подготовке к фотографированию, обозначилась проблема с позиционированием модуля на макетке. Обе поверхности (модуля и платы) покрыты лаком, гладкие и легко скользят. Поверхости не идеальные и касаются друг друга, скорее всего, в нескольких точках. На этих точках модуль норовит крутиться или смещаться от самого малейшего воздействия. Чтобы выставить положение, как на фото, пришлось тонким пинцетом долго толкать модуль в разные точки, чтобы он хоть как-то совместился. В прошлый раз, когда паял на самопальный брекет, таких проблем не возникало, но там вторая поверхность не была совсем гладкой. Тут перед пайкой придется придумать, как улучшить сцепление.
То ли перед пайкой приклеить подуль с помощью двухстороннего скотча, то ли поверх обычным скотчем прихватить на время.
Посередине, не перекрывая площадки для пайки, подложил под центр модуля плотную бумажку, чтобы "зубчики" висели в долях миллиметра над поверхностью. Бумажку клал, чтобы модуль не "ерзал", но теперь подумалось, что это может положительно сказаться и на качестве пайки. Теоретически, эффект смачивания должен затягивать припой под модуль, обеспечивая пропаивание по всей площади контакта.
Кстати, на этой картинке можно видеть, что крайний контакт справа никуда не разведен. Это P0.20 в нумерации nRF52832 или пин 9 в нумерации ардуины. Если предполагается его использование, то придется вытаскивать проводом. Еще один контакт в нижнем ряду становится беспризорным после разрезания земляного провода ESP-32. На нижеследующей картинке оба этих контакта отмечены красным.
Таким образом, несовпадение по контактам макетки для ESP-32 и модуля E73 всего равно четырем.
Еще раз на всякий случай напоминаю, что земляной F-образный провод в центре платы нужно отсечь от всех контактов.
Отказался от идеи пропаивать каждый пин по отдельности. Долго. Сначала прихватил по одному с каждой стороны, промазал густо-густо флюсом по периметру, а потом жалом "K" (сапожный нож) разогнал каплю припоя вдоль всех контактов. Запаял жалом-иголкой тонкий МГТФ "встык". Потренировался, типа. Вобщем, пока вроде нормально получается.
Я китайцу, который E73 торгует, написал, чтобы плату-адаптер к этим модулям придумали и в продажу пустили. На модули, кстати, опять акция -- по ~200р. нынче.
UPD. китаец в ответе пожаловался, что производитель жмет адаптеры и не дает даже ему для проверки. пообещал, что если дело сдвинется, то с радостью будет торговать еще и адаптерами.
Превратить удалось, только сей новообращенный jlink, кроме, как с STM32, более ни с какими МК работать не возжелал. С другой стороны, если цель -- использовать SEGGER Embedded Studio для написания кода под STM32, то вполне себе годное решение. SES проста, удобна и весьма продвинута. При этом бесплатна для некоммерческого использования.
вот у меня nrf51822, и я в нем сохраняю какие-то данные раз в сутки и сплю дальше. в шкаф положил от двух батарееек и экспериментирую.
беда такая: раз в несколько дней оно вдруг в сброшенном состоянии. уже третий раз наблюдаю. где-то на третий-четвертый день. как это отлаживать? может у него что-то преполняется что-то к этому моменту, и происходит сброс?
Не очень понятны формулировки "в нем сохраняю" и "вдруг в сброшенном состоянии". По первому нет мыслей, о втором пока могу озвучить следующее: у большинства МК информация о том, по какой причине произешел сброс, храниться в одтельном регистре. Не знаю, как он называется у 51822, а у 52832 имя этого регистра RESETRES. Идея отладки может заключаться в том, что после старта первым делом проверяется этот регистр и на основе анализа его значения принимается решение о дальнейших действиях -- мож отослать информацию куда-то, мож лампу какую поджечь. От конструкции зависит.
у меня при инициализации устройства (после сброса) задается содержани характеристики. эту характеристику я меняю. и ухожу дальше спать (sd_app_evt_wait через power_manage)
посмотрел свой код main:
int main(void)
{
uint32_t err_code;
bool erase_bonds;
timers_init();
nrf_gpio_pin_clear(30);
for (int i=0; i<16;i++)
{
};
buttons_leds_init(&erase_bonds);
nrf_gpio_pin_clear(30);
for (int i=0; i<16;i++)
{
};
ble_stack_init();
device_manager_init(erase_bonds);
gap_params_init();
services_init();
advertising_init();
conn_params_init();
// Start execution.
application_timers_start();
err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
// Enter main loop.
for (;;)
{
power_manage();
}
}
по-моему все из тюториала.
буду искать инфу про RESETRES и возможные значения.. и чесать репу..
Типа, пина в разъеме не хватает или не разведен? А кондеры на LSE чем не угодили?
После полученной информации сподвигся и я на изучение вопроса. Выяснилось, что пины совпадают, но небольшие нюансы наблюдаются в отношении пинов 5, 6 и 36. Влиять ни на что особо не влияет, но помнить стоит.
Выражаю благодарность кубу за любезно предоставленные изображения. :-)
На котах кто-то ныл что установлены 20pf .
Собственно и с ними LSE стартовал , но чтоб не думалось поставил на 6pf дабы кварцу соответствовало (см Cl).
Хотя у 072 driver и позволяет и такие вытягивать.
a5021, с G0 - пины питания только на стороне кварцев, вообщем посмотри сам. Но камни достаточно вкусные, но USB нет...
xDriver, на 072 и bluepill можно сляпать JLink_OB 072.
А на 072CB возможно (но не проверено) сей JLink c нордиками будет иметь драг&дроп ...
(3) Wakeup from GPIO, NRF_POWER->RESETREAS == 0x1000;
(4) Debug mode, NRF_POWER->RESETREAS == 0x100.
And when you access this register, don't forget to clear it before next reset.
1. из этого всего следует четыре причины сброса. и при потере питания - это будет 0. wakeup вроде как не сброс же? или как это понимать?
2. don't forget to clear it before next reset - в смысле привести к 0? якобы battery changed?
3. вывести еще четыре светодиода (на самом деле наверное три - battery changed не нужен) и зажигать их в зависимости от причины ресета? главное, чтобы батарейку не высадить...
1. из этого всего следует четыре причины сброса. и при потере питания - это будет 0. wakeup вроде как не сброс же? или как это понимать?
Вейкапы разные бывают. Вейкап из самого глубокого сна происходит через резет, с потерей содержимого памяти и регистров.
Цитата:
2. don't forget to clear it before next reset - в смысле привести к 0? якобы battery changed?
Содержимое RESETREAS способно пережить резет без потери содержимого. В документации отдельно написано, что после анализа значения регистр надо чистить ибо даже если следующий резет случиться по иной причине, флажки прежних резетов останутся взведенными.
Цитата:
3. вывести еще четыре светодиода (на самом деле наверное три - battery changed не нужен) и зажигать их в зависимости от причины ресета? главное, чтобы батарейку не высадить...
Помимо этого есть смысл к обработчикам немаскируемых прерываний, типа HardFault и подобных, тоже индикацию прикрутить. Фиг его знает, можн оно через деление на ноль помирает.
{
//uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);
//APP_ERROR_CHECK(err_code);
// Prepare wakeup buttons.
//err_code = bsp_btn_ble_sleep_mode_prepare();
//APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
//err_code = sd_power_system_off();
//APP_ERROR_CHECK(err_code);
}
Как раз чтобы не было ресета
Ха.
а ниже еще и такое: static void on_adv_evt(ble_adv_evt_t ble_adv_evt)
во, вот этот случай и интресен. то есть сброс по хардфолту - уже не ресет??
Хардфолт -- это эксепшн, прерывание то бишь. Будет или нет оно звать резет, это уж как разработчик решит. Обычно оно там валится в бесконечный цикл, из которого никакого выхода не предусматривается. Так и крутится, пока кто-то не сбросит все руками (кнопкой, питанием и т.п). В том и смысл дополнить обработчик кодом, который зажигает лампу, чтобы знать, что оно не просто взвисло по неизвестной причине, а ушло в фолт.
Цитата:
с другой стороны, внутри логика простейшая. интерсно, у других коллег оно работает без сброса сильно дольше?
Само по себе ничего резетиться не должно, уж точно.
a5021 - сорри за глупый вопрос - так работает самодельный j-link с nrf52 или нет? - что-то я запутался...
Не работает с nRF52 только ST-LINK V2 (оригинальный или патченный китайский), перешитый особой прошивкой, превращающей его в некий подвид J-Link-а. Самопальный J-Link, сделанный из голубой пилюли, конструкция которого описывалась здесь, шьет все без ограничений, в т.ч. nRF52.
Попался еще вот такой модуль-адаптер на али:
Но выяснить, точно ли он подходит для E73, я пока не смог.
Чет я тоже никак не разгляжу, где там кейл. :) С другой стороны, никто же не отбирал стандартной ардуиновской Wire. Можно попробовать примеры из нее пособирать. Должно работать, по идее.
Два месяца потребовалось "голубой пилюле", чтобы доехать до меня с али. Заказывал 16.09. Один из самых больших сроков доставки за всю историю моих покупок там. Фиг с ним, главное приехало.
Начинаю делать J-Link.
Выпаиваю джамперы, запаиваю перемычки, чтобы не торчали под термоусадкой:
Примеряю резисторы (три штуки по 100 ом):
Эти резисторы являются частью схемы J-Link и их присутствие проверяется софтом. Наличие обязательно. Здесь я их просто вставил в дырки, куда они должны запаиваться, но в конечном варианте запаял их с другой стороны. Там получалось не наглядно (нет маркировки), поэтому данная фотография сделана для иллюстрации. Повторю словами, если фотка непонятна: резисторы по 100 ом, три штуки, запаиваются между контактами А7 и А4, А5 и А3, А2 и А1.
Красные стрелки указывают, куда запаивать провода, которые будут идти к отлаживаемому/прошиваемому МК (целевая платформа). В минимальном варианте, можно без RESET-а.
К левой части верхнего ряда пинов или к правой части нижнего имеет смысл также подпаять провод земли (контакт с маркировкой "G") и плюса питания (маркировка "3.3"). Землю к целевой платформе подключать все равно придется, а питание от программатора -- это уже по желанию.
Общее замечание по длине проводов -- чем короче, тем лучше. Слишком длинные провода -- частая причина неработоспособности программатора. Убеждался неоднократно.
К B12 через резистор на землю можно подключить светодиод. Он, типа, актвность SWD будет визуализировать. Показалось, что ни к чему.
Почему-то был уверен, что широкая термоусадка у меня есть. Поискал, ничего не смог найти. Нашел усадку для аккумуляторов типоразмера 18650. Она подходила по размерам, но материал там другой и было непонятно, сядет ли он и что получится в итоге. В итоге получилась фигня.
Отрезал вроде в размер, чуть с напуском, но оно как-то очень уж сильно сжалось, причем "майкой". Не эстетично, но пока не найду широкую термоусадку, пойдет и так.
Разъем с левой стороны (на фото выше) -- это разъем подключения программатора (маркировка на другой стороне платы) для зашивки "пилюли" в J-Link. Я использовал ST-Link. Ссылка на саму прошивку здесь уже приводилась ранее, но, на всякий случай, дублирую: прошивка. Прошиться можно с помощью ST-LINK Utility.
Прошился, все работает. Пока проверил под IARом на STM32F103C8. Целевой МК шьется, отладка идет.
Софт для работы с JLink-ом нужно смотреть на сайте сеггера. Сейчас глянул, пишут, что для некоммерческого использования студия бесплатна (если не путаю, раньше вроде этого не было), а для работы с nRF52 она бесплатна была и раньше.
Начинаю делать J-Link.
Выпаиваю джамперы, запаиваю перемычки, чтобы не торчали под термоусадкой:
Если BOOT0 запаивается в 0, зачем запаивать BOOT1?
a5021 спасибо за опыт
что дает jlink при работе с stm32 в сравнении с stlink?
и какая прелесть в segger studio по сравнению с keil или iar?
axill, гнутый компиль из коробки, поддержка RTT , бесплатность для DIY, бесплатная лицензия для нордиков,
малый вес .Ozone.
Я использую и SES и кайло
В моем случае так было быстрее. Чтобы не копаться в референсе, проще было свести задачу к предыдущей, т.е. воспроизвести перемычками положение джамперов по умолчанию.
Присоединяюсь. Сама среда легкая, современная, удобная. Ozone -- отдельная песня. Продвинутый отладчик с профайлером. Насчет последнего, так я вообще припомнить не могу чего-то похожего для микроконтроллеров.
Все многичисленные преимущества я вижу не в самом jlink-е, а в сеггеровском софте, который с этим программатором работает. Но т.к. сей софт работает только с jlink-ом, то это автоматически становится преимуществом jlink-а.
Немалая прелесть заключается в простоте использования. Например, чтобы создать пустой проект для STM32F0 в SES нужно ответить всего на четыре или пять вопросов визарда, два из которых -- имя проекта и тип используемого МК. В Кейле или Иаре это чуть ни на порядок сложнее, с множеством лишних и не вполне очевидных новичкам телодвижений.
Вот я специально сейчас пощелкал немного мышой, создал пустышку, написал неск. строк кода. Извольте, все как положено -- пошаговое выполнение, дизасм, просмотр локальных переменных, регистров МК, стек вызовов и вишенка на торте -- форматированная печать из программы прямо в отладочную консоль:
Несколько нелогично, что я начал рассказ о SES в ветке про nRF52 c создания проекта для STM32. Думаю, что надо исправить это недоразумение и показать по шагам создание проекта в SES для nRF52832.
После установки студии (на данный момент это версия 4.10а), первым делом надо скачать библиотеки и всякую софтовую поддержку для nRF52. Через меню "Tools->Package Manager..." найти в списке соответствующее семейство МК:
выбрать "nRF CPU Support Package" и нажать "Next". После того, как установка закончится, можно создавать проект через основное меню студии: "File -> New Project..."
Определившись с названием и местом, где проект будет располагаться, можно следовать дальше, пропуская формы визарда без изменений, если ничего не понятно и меняя что надо, если понятно.
Сейчас не вспомню точно, но где-то поблизости от этого шага студия предложит получить ключ для активации бесплатной лицензии. Нужно ввести регистрационные данные и получить ключ на электронную почту, чтобы затем ввести его в форму регистрации. Процесс этот полностью легальный.
После окончания работы визарда в левом окошке студии находим пункт "Source Files" и разворачиваем его. Внутри окажется "main.c", который по двойному щелчку откроется в окне редактора справа. Изначально там будет текст примера, который можно сразу же сносить и писать свой код на его месте.
Вот я, не долго думая, написал примерчик, который должен будет раз в секунду выводить в отладочную консоль некий текст. Типа, текстовый блинк.
Пора подцеплять модуль к jlink-у. Питание от него же:
Нажатие F7 в студии запустит компиляцию, F5 загрузит скомпилированный код в МК и стартует отладчик.
Дальше можно выполнять по шагам или запустить полный прогон.
Немного о программном коде этого примера:
В ядре Cortex-M есть SysTick -- 24 битный счетчик, значение которого убывает с каждым периодом тактовой частоты. Досчитав до нуля, счетчик взводит бит COUNTFLAG в регистре SysTick_CTRL, загружает счетный регистр значением из SysTick_LOAD, после чего опять считает вниз и так по кругу. Бит COUNTFLAG, будучи установленным в 1, пребывает в таком состоянии ровно до первого чтения регистра SysTick_CTRL, после чего сбрасывается в 0.
Для некоторых плат, которые поддерживает ардуино, на SysTick-е сделан миллис, но здесь все ресурсы отданы на откуп пользователю, т.ч для подсчета времени будет самое оно.
В строке 7 определяется период счета. В данном случае это 1мс. С такой периодичность буде взводиться бит COUNTFLAG. Строка 8 запускает счет.
В строке 10 начинается "вечный" цикл. Вложенный в него цикл на строке 11 организует ожидание, пока COUNTFLAG не взведется тысячу раз, что эквивалентно задержке на 1 секунду. Таким образом, printf() выводит в отладочную консоль текст и случайное число ровно один раз в секунду.
Почты этой осенью продолжают замедляться. Пришли платки для ESP-32, заказанные 15.09. Для запайки на них модулей E73 подходят, если не идеально, то близко к тому:
Правда, уже при подготовке к фотографированию, обозначилась проблема с позиционированием модуля на макетке. Обе поверхности (модуля и платы) покрыты лаком, гладкие и легко скользят. Поверхости не идеальные и касаются друг друга, скорее всего, в нескольких точках. На этих точках модуль норовит крутиться или смещаться от самого малейшего воздействия. Чтобы выставить положение, как на фото, пришлось тонким пинцетом долго толкать модуль в разные точки, чтобы он хоть как-то совместился. В прошлый раз, когда паял на самопальный брекет, таких проблем не возникало, но там вторая поверхность не была совсем гладкой. Тут перед пайкой придется придумать, как улучшить сцепление.
То ли перед пайкой приклеить подуль с помощью двухстороннего скотча, то ли поверх обычным скотчем прихватить на время.
Канцелярский зажим для бумаг:
Думается, что этот вариант подойдет лучше всего.
Краевые контакты под пайку по буржуински называются Castellated Vias. Кто любопытствует, советую посмотреть на приемы, как оно паяется.
Сделал тестовую платку
Это что будет?
Посередине, не перекрывая площадки для пайки, подложил под центр модуля плотную бумажку, чтобы "зубчики" висели в долях миллиметра над поверхностью. Бумажку клал, чтобы модуль не "ерзал", но теперь подумалось, что это может положительно сказаться и на качестве пайки. Теоретически, эффект смачивания должен затягивать припой под модуль, обеспечивая пропаивание по всей площади контакта.
Кстати, на этой картинке можно видеть, что крайний контакт справа никуда не разведен. Это P0.20 в нумерации nRF52832 или пин 9 в нумерации ардуины. Если предполагается его использование, то придется вытаскивать проводом. Еще один контакт в нижнем ряду становится беспризорным после разрезания земляного провода ESP-32. На нижеследующей картинке оба этих контакта отмечены красным.
Таким образом, несовпадение по контактам макетки для ESP-32 и модуля E73 всего равно четырем.
Еще раз на всякий случай напоминаю, что земляной F-образный провод в центре платы нужно отсечь от всех контактов.
ССори за такой вопрос слегка не в тему :) а с 840-ми модулями кто нить игрался?
А смысл? Стоит дороже, паять сложнее.
Кроме набортного USB, большей мощности в передатчике и прочей малоупотребимой специфики, ничего в нем особо соблазнительного нет.
Худо-бедно запаялось.
Отказался от идеи пропаивать каждый пин по отдельности. Долго. Сначала прихватил по одному с каждой стороны, промазал густо-густо флюсом по периметру, а потом жалом "K" (сапожный нож) разогнал каплю припоя вдоль всех контактов. Запаял жалом-иголкой тонкий МГТФ "встык". Потренировался, типа. Вобщем, пока вроде нормально получается.
Пора подключить программатор (самопальный JLink, конструкция которого тут была описана выше):
При первом запуске JFlash действительно вопит про какую-то залочку модуля. В прошлый раз я, видимо, не обратил на это внимания.
Дальше оно разлочивается и шьется/читается без проблем.
При первом запуске JFlash действительно вопит про какую-то залочку модуля. В прошлый раз я, видимо, не обратил на это внимания.
Дальше оно разлочивается и шьется/читается без проблем.
Вот я Вам про это и говорил, но....
У меня оба модуля оказались залоченными.
Это что будет?
Делал для пилотов-спортсменов вот такие приборчики
Думаю продолжить эту тему , ну только в более продвинутом варианте
Здравствуйте, коллеги!
С nrf52832 уже давно играюсь, есть nrf52DK, powerprofile, dongle51, dongle52840..., и сабж тоже.
А еще в хозяйстве есть вот такая штука http://ali.onl/1a93
Она для ESP32, но может этузиастов натолкнет на полезную мысль ;-)
У меня возникает только одна полезная мысль: никто не должен покупать это за 1200 рублей.
Вот нашел разводку платы переходника для этого модуля:
https://www.openhardware.io/view/586/E73-2G4M04S-Breakout
Ну и что это даёт? Если только поиграться. На макетке можно питание развести и дополнительные элементы поставить. А с этим огрызком что делать?
Я китайцу, который E73 торгует, написал, чтобы плату-адаптер к этим модулям придумали и в продажу пустили. На модули, кстати, опять акция -- по ~200р. нынче.
UPD. китаец в ответе пожаловался, что производитель жмет адаптеры и не дает даже ему для проверки. пообещал, что если дело сдвинется, то с радостью будет торговать еще и адаптерами.
Вопрос такой риторический, а получилось в итоге stlink сеггеровской утилитой в jlink то превратить? В первом посте было что то про то что все плохо..
Превратить удалось, только сей новообращенный jlink, кроме, как с STM32, более ни с какими МК работать не возжелал. С другой стороны, если цель -- использовать SEGGER Embedded Studio для написания кода под STM32, то вполне себе годное решение. SES проста, удобна и весьма продвинута. При этом бесплатна для некоммерческого использования.
здесь какая-никакая движуха - попробую спросить.
вот у меня nrf51822, и я в нем сохраняю какие-то данные раз в сутки и сплю дальше. в шкаф положил от двух батарееек и экспериментирую.
беда такая: раз в несколько дней оно вдруг в сброшенном состоянии. уже третий раз наблюдаю. где-то на третий-четвертый день. как это отлаживать? может у него что-то преполняется что-то к этому моменту, и происходит сброс?
Не очень понятны формулировки "в нем сохраняю" и "вдруг в сброшенном состоянии". По первому нет мыслей, о втором пока могу озвучить следующее: у большинства МК информация о том, по какой причине произешел сброс, храниться в одтельном регистре. Не знаю, как он называется у 51822, а у 52832 имя этого регистра RESETRES. Идея отладки может заключаться в том, что после старта первым делом проверяется этот регистр и на основе анализа его значения принимается решение о дальнейших действиях -- мож отослать информацию куда-то, мож лампу какую поджечь. От конструкции зависит.
[
Вот я Вам про это и говорил, но....
У меня оба модуля оказались залоченными.
Еще раз- все модули по дефолту залочены, ибо там прошит софтдевайс и дабы вы шаловливыми ручками не вытерли его...
у меня при инициализации устройства (после сброса) задается содержани характеристики. эту характеристику я меняю. и ухожу дальше спать (sd_app_evt_wait через power_manage)
посмотрел свой код main:
по-моему все из тюториала.
буду искать инфу про RESETRES и возможные значения.. и чесать репу..
Как-то так ...
Поиздевался над пришедшими bluepill - заменил камни на 072CB .
Я мож глупость спрошу: а 103cb и 072cb, они по копытам полностью совместимы чтоль?
Угу, как и многие другие, сам офигел ...
Только с бут1 надо перемычки ликвидировать.
А еще пуллап с USB снял и конденсаторы на LSE заменил.
А вот с G0 уже подлянка вышла.
Типа, пина в разъеме не хватает или не разведен? А кондеры на LSE чем не угодили?
После полученной информации сподвигся и я на изучение вопроса. Выяснилось, что пины совпадают, но небольшие нюансы наблюдаются в отношении пинов 5, 6 и 36. Влиять ни на что особо не влияет, но помнить стоит.
Выражаю благодарность кубу за любезно предоставленные изображения. :-)
На котах кто-то ныл что установлены 20pf .
Собственно и с ними LSE стартовал , но чтоб не думалось поставил на 6pf дабы кварцу соответствовало (см Cl).
Хотя у 072 driver и позволяет и такие вытягивать.
спасибо за инфу, заказал STM32F072CBT6 пориграюсь тоже
Начинаю делать J-Link.
тоже сподобился
спасибо за наводку, копаю SES.
a5021, с G0 - пины питания только на стороне кварцев, вообщем посмотри сам. Но камни достаточно вкусные, но USB нет...
xDriver, на 072 и bluepill можно сляпать JLink_OB 072.
А на 072CB возможно (но не проверено) сей JLink c нордиками будет иметь драг&дроп ...
слушай, а что про USB, я смотрю и нехера не понимаю, ты говоришь нет, а КУБ
Там пока объявлено USB DP -USB Deverly Power.
Все в шоке ...
Да и, не доверяй калокубу . Даже в ините пинов есть таааакие косяки...
он называется resetreas.
нашел такое, не факт, что от нужного чипа:
I found NRF_POWER->RESETREAS is very useful.
(1) Reset Pin Pressed, NRF_POWER->RESETREAS == 0x1;
(2) Battery changed, NRF_POWER->RESETREAS == 0;
(3) Wakeup from GPIO, NRF_POWER->RESETREAS == 0x1000;
(4) Debug mode, NRF_POWER->RESETREAS == 0x100.
And when you access this register, don't forget to clear it before next reset.
1. из этого всего следует четыре причины сброса. и при потере питания - это будет 0. wakeup вроде как не сброс же? или как это понимать?
2. don't forget to clear it before next reset - в смысле привести к 0? якобы battery changed?
3. вывести еще четыре светодиода (на самом деле наверное три - battery changed не нужен) и зажигать их в зависимости от причины ресета? главное, чтобы батарейку не высадить...
Точно. Я опечатался.
Вейкапы разные бывают. Вейкап из самого глубокого сна происходит через резет, с потерей содержимого памяти и регистров.
Содержимое RESETREAS способно пережить резет без потери содержимого. В документации отдельно написано, что после анализа значения регистр надо чистить ибо даже если следующий резет случиться по иной причине, флажки прежних резетов останутся взведенными.
Помимо этого есть смысл к обработчикам немаскируемых прерываний, типа HardFault и подобных, тоже индикацию прикрутить. Фиг его знает, можн оно через деление на ноль помирает.
во, вот этот случай и интресен. то есть сброс по хардфолту - уже не ресет??
с другой стороны, внутри логика простейшая. интерсно, у других коллег оно работает без сброса сильно дольше?
хм. у меня sleep_mode вот такой:
static void sleep_mode_enter(void)
Как раз чтобы не было ресета
Ха.
а ниже еще и такое:
static void on_adv_evt(ble_adv_evt_t ble_adv_evt)
(чтобы не делать sleep_mode_enter)
ну и муть же я там насочинял..
Хардфолт -- это эксепшн, прерывание то бишь. Будет или нет оно звать резет, это уж как разработчик решит. Обычно оно там валится в бесконечный цикл, из которого никакого выхода не предусматривается. Так и крутится, пока кто-то не сбросит все руками (кнопкой, питанием и т.п). В том и смысл дополнить обработчик кодом, который зажигает лампу, чтобы знать, что оно не просто взвисло по неизвестной причине, а ушло в фолт.
Само по себе ничего резетиться не должно, уж точно.
сей новообращенный jlink, кроме, как с STM32, более ни с какими МК работать не возжелал.
a5021 - сорри за глупый вопрос - так работает самодельный j-link с nrf52 или нет? - что-то я запутался...
Вроде в сообщениях #157 #167 вы отчитываетесь о прошивке nrf52 в SES-студии -а потом вдруг пишете, что работает только с СТМ ?
b707, с только STM32 работают набортные стлинки дискаверин перешитые в джлинк.
Но есть самодельные джлинки OB на 103ем и на 072ом...
Не работает с nRF52 только ST-LINK V2 (оригинальный или патченный китайский), перешитый особой прошивкой, превращающей его в некий подвид J-Link-а. Самопальный J-Link, сделанный из голубой пилюли, конструкция которого описывалась здесь, шьет все без ограничений, в т.ч. nRF52.
Попался еще вот такой модуль-адаптер на али:
Но выяснить, точно ли он подходит для E73, я пока не смог.
Не подходит! Это под специальные китайские платки с разъемом 1.27:
http://ali.onl/1aEk
Шаг контактов у E73 тоже 1.27мм