Easyelectronics.ru

Электроника для всех
Текущее время: 24 окт 2020, 20:40

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 22 ] 
Автор Сообщение
 Заголовок сообщения: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 24 сен 2020, 12:07 
Заглядывает иногда

Зарегистрирован: 14 май 2012, 12:26
Сообщения: 122
Приветствую!

Работаю с NRF52832. Реализовал приложение на базе примера "ble_app_uart". Все работает.
Решил добавить сохранение настраиваемых параметров во внутреннюю Flash память. Запись в Flash осуществляю посредством модуля NVMC, использование которого возможно только
при отключенном стеке SoftDevice, иначе произойдет сбой в работе с Flash. Вот как первоначально инициализирую стек при подаче питания на устройство:
Код:
timers_init();
power_management_init();
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
advertising_start();


Затем в теле программы отключаю стек:
Код:
advertising_stop();
if (nrf_sdh_is_enabled())
{
   err_code = nrf_sdh_disable_request();
   APP_ERROR_CHECK(err_code);
   while (nrf_sdh_is_enabled()) {}
   disabled_softdevice = true;
}


Затем успешно работаю с Flash памятью (стираю, записываю):
Код:
Flash_exe();


А вот как повторно запустить стек и рекламу не понимаю. Может кто подскажет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 25 сен 2020, 10:09 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 714
Откуда: Германия
Повторить все, что к BT относится:

Код:
ble_stack_init();
gap_params_init();
gatt_init();
services_init();
advertising_init();
conn_params_init();
advertising_start();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 14:16 
Заглядывает иногда

Зарегистрирован: 05 фев 2020, 14:37
Сообщения: 47
Dimon84 писал(а):
Работаю с NRF52832. Реализовал приложение на базе примера "ble_app_uart". Все работает.
Решил добавить сохранение настраиваемых параметров во внутреннюю Flash память. Запись в Flash осуществляю посредством модуля NVMC...

Добрый день. А нет у вас простого примера чтобы побайтово стирать / писать / читать из Flash. А то нашел пример только с использованием FDS-драйвера.

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 18:15 
Заглядывает иногда

Зарегистрирован: 05 фев 2020, 14:37
Сообщения: 47
petrovich писал(а):
Dimon84 писал(а):
Работаю с NRF52832. Реализовал приложение на базе примера "ble_app_uart". Все работает.
Решил добавить сохранение настраиваемых параметров во внутреннюю Flash память. Запись в Flash осуществляю посредством модуля NVMC...

Добрый день. А нет у вас простого примера чтобы побайтово стирать / писать / читать из Flash. А то нашел пример только с использованием FDS-драйвера.

Спасибо, вроде разобрался:
Код:
static void flash_page_erase(uint32_t * page_address)
{
        // Turn on flash erase enable and wait until the NVMC is ready:
        NRF_NVMC->CONFIG = (NVMC_CONFIG_WEN_Een << NVMC_CONFIG_WEN_Pos);

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                // Do nothing.
        }

        // Erase page:
        NRF_NVMC->ERASEPAGE = (uint32_t)page_address;

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                // Do nothing.
        }

        // Turn off flash erase enable and wait until the NVMC is ready:
        NRF_NVMC->CONFIG = (NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos);

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                // Do nothing.
        }
}

static void flash_word_write(uint32_t * address, uint32_t value)
{
        // Turn on flash write enable and wait until the NVMC is ready:
        NRF_NVMC->CONFIG = (NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos);

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                // Do nothing.
        }

        *address = value;

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                ; // Do nothing.
        }

        // Turn off flash write enable and wait until the NVMC is ready:
        NRF_NVMC->CONFIG = (NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos);

        while (NRF_NVMC->READY == NVMC_READY_READY_Busy)
        {
                // Do nothing.
        }
}

//flash_word_read
memcpy(&value,flash_addr,4);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 19:35 
Заглядывает иногда

Зарегистрирован: 05 фев 2020, 14:37
Сообщения: 47
Может кто знает как сделать предустановку во Flash? Чтобы после компиляции в хексе стояли уже нужные параметры в нужных ячейках флэша.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 19:49 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
Интересные модули.
Не знаю - с какого лучше начать?
С 32-ого или с 40-ого?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 19:50 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
petrovich писал(а):
Может кто знает как сделать предустановку во Flash? Чтобы после компиляции в хексе стояли уже нужные параметры в нужных ячейках флэша.

Через LD скрипт.
Описать свою секцию.
Я знаю как на 103-ем это сделать, а как на модуле - нет пока.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 19:56 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4947
Откуда: Кемеровская область, Киселевск
Pingvin писал(а):
Интересные модули.
Не знаю - с какого лучше начать?
С 32-ого или с 40-ого?


А почему не nRF51822?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 20:24 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
Oxford писал(а):
Pingvin писал(а):
Интересные модули.
Не знаю - с какого лучше начать?
С 32-ого или с 40-ого?


А почему не nRF51822?

Он тоже Bluetooth 5?
Вроде он 4.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 08 окт 2020, 21:02 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
Я так понимаю - SoftDevice это бинарный файл с функциями для работы с блютус и пишется отдельно от прошивки во флеш.
А как происходит вызов функций этого SoftDevice?
Через указатели на функции (адреса функций заранее известны)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 12:58 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 714
Откуда: Германия
Pingvin писал(а):
А как происходит вызов функций этого SoftDevice?


По номеру через SVC. Но для всех функций это уже обернуто в обычный C-вызов в хедере.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 13:05 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 714
Откуда: Германия
petrovich писал(а):
Может кто знает как сделать предустановку во Flash? Чтобы после компиляции в хексе стояли уже нужные параметры в нужных ячейках флэша.


Пример есть в \components\libraries\bootloader\nrf_bootloader_info.c + \examples\dfu\secure_bootloader, в зависимости от компилятора. Только надо не забывать, что флеш всегда стирается целыми страницами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 13:32 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
Для непросвещённых можно?
Что такое SVC?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 13:44 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 714
Откуда: Германия
Вот, например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 14:13 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
dev писал(а):
Вот, например.

Вопросов возникло ещё больше. :-)
Это вызов программного прерывания?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 15:46 
Старожил
Аватара пользователя

Зарегистрирован: 01 авг 2016, 10:47
Сообщения: 289
Откуда: Таганрог
Pingvin писал(а):
Интересные модули.
Не знаю - с какого лучше начать?
С 32-ого или с 40-ого?


смотря по задачам.
это по сути один и тот же чип, но в 40 периферии и памяти больше: USB, QSPI (только для NOR flash памяти), fastSPI (32 МГц), ну и остального добавлено до кучи. Ядро одинаковое, потребление тоже. Тактовые одинаковые.

Pingvin писал(а):
Он тоже Bluetooth 5?
Вроде он 4.

4.2 он тянет, а значит большой объем через него "пролезет". Но бедно по периферии, памяти, скорости обработки. Но, опять же смотря под какую задачу. Кнопку передать и светиком мигнуть норм будет.

Pingvin писал(а):
Вопросов возникло ещё больше. :-)
Это вызов программного прерывания?.


Грубо говоря да. У него даже обработчик так и называется: SWI2_EGU2_IRQHandler - SoftWare Interrupt & Event Generation Unit
В общих чертах, как писали выше, все сводится к банальному вызову нужной сишной функции и обработки возвращаемого кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 15:54 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 540
Откуда: Киев
Не SVC это системное прерывание. (вызов супервизора). У него очень большое отличие от программного прерывания. Pingvin почитай Джозеф.Ю Ядро Cortex-M3 компании ARM


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 16:24 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
MasterElectric писал(а):
Не SVC это системное прерывание. (вызов супервизора). У него очень большое отличие от программного прерывания. Pingvin почитай Джозеф.Ю Ядро Cortex-M3 компании ARM

Спасибо за наводку.
А у 103-его разве не M3?
Ничего не слышал про гипервизор раньше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 18:19 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 540
Откуда: Киев
Он есть у всех кортексов, если GCC то наз. SVC_Handler. На этих трех прерываниях можно построить свою РТОС SVC_Handler, PendSV_Handler, SysTick_Handler. В книге очень много всего интересного.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 20:48 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
wifi тоже можно поднять на NRF52840?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 21:26 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2617
Интересный проект
https://easyeda.com/adast/imu-sensor_co ... _copy_copy

можно форкнуть переделать под свои нужды.

попроще
https://easyeda.com/sacculus/nrf52840_flood_sensor


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: NRF52832 отключение и включение SoftDevice
СообщениеДобавлено: 09 окт 2020, 21:51 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4947
Откуда: Кемеровская область, Киселевск
Pingvin писал(а):
wifi тоже можно поднять на NRF52840?

Нет

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB