|
|
  |
NORDIC nrf51822, вопрос по ф-ии |
|
|
|
Aug 10 2015, 09:26
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Метценгерштейн @ Aug 10 2015, 12:03)  ...Как искать, какой хидер нужен? Где в документации указано, какой подключать?... Либо толковую книгу = поход в книжный магазин, полистать, поискать, глазками глянуть (покупать не обязательно) либо контекстный поиск по вашей файловой системе(если подразумевается что это барахло у вас на компе валяется) либо поиск в гугле на соответствие название=файл... согласитесь это элементарные шаги, которые можно решать самому... ЗЫ По первой ссылке есть архив проекта. Думаю он компилябельный... тут встречается название вашей функции
Сообщение отредактировал kolobok0 - Aug 10 2015, 09:28
|
|
|
|
|
Aug 11 2015, 12:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
Цитата(Defin @ Aug 10 2015, 22:13)  Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.
П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию. Фактически в функции выполняется одна команда __WFE();
Для ухода в глубокий сон есть другие функции, например sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1; вот, спасибо. Видно, что человек работает с нордиком. Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.
|
|
|
|
|
Aug 11 2015, 14:14
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(Метценгерштейн @ Aug 11 2015, 15:03)  вот, спасибо. Видно, что человек работает с нордиком. Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер. Пожалуйста. Функции, которые начинаются с sd_ требуют инициализированный и включенный softdevice, иначе вылет в assert, кроме пары штук, у них есть тело в файле .c. А так, вся документация и SDK c примерами есть на сайте нордика https://developer.nordicsemi.com/nRF51_SDKТолько нужно смотреть на ревизию чипа, последние версии SDK работают только с 3й ревизией чипа.
|
|
|
|
|
Aug 12 2015, 11:49
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(Golikov A. @ Aug 12 2015, 13:27)  может мануалом его стукнуть или другой какой документацией? Вынужден согласиться с товарищем. Ответ на все вопросы можно найти в документации, даташите и референс-мануале. Всё есть на сайте нордика. Также в SDK есть примеры реализаций прошивок, например ble_app_hrs. Касательно sd_power_system_off. Это уход в самый экономичный режим сна, без сохранения ОЗУ. Проснуться можно по изменению логического уровня на каком-либо входе. Но его нужно предварительно настроить функцией nrf_gpio_cfg_sense_input. Опять таки, всё можно подсмотреть в примерах.
|
|
|
|
|
Aug 18 2015, 09:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
не получается все-равно запустить проект http://developer.nordicsemi.com/nRF51_SDK/...tml/a00075.htmlне видит мастер контрол панел, что новое устройство появилось. Проц предварительно стер весь. Залил проект. Может надо отдельно софтдевайс в память заливать? Хотя нигде про это не сказано. В проекте адреса флеша с 1600 начинаются. По идее, надо отдельно софтдевайс подгружать. Не врублюсь, от куда его брать?
|
|
|
|
|
Aug 18 2015, 13:08
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Софтдевайс отдельно заливается. Иначе даже отладчик(IAR) ругается на неправильный указатель на стэк. Для S110 hex файл лежит в папке SDK \components\softdevice\s110\hex\ Залить можно просто скопировав в "диск" программатора. При успешной прошивке, отладочник замигает светодиодом.
Сообщение отредактировал IgorKossak - Aug 18 2015, 16:52
Причина редактирования: бездумное цитирование
|
|
|
|
|
Aug 18 2015, 15:14
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(Метценгерштейн @ Aug 18 2015, 17:44)  Заливаю проект кейлом, старт начинается с main() все как буд - то нормально.
в main вызывается ф-я ble_stack_init(); и там пропадает.
разве что-то забыл сделать еще?
уже в вечном цикле ничего не крутится. А на чем запускаете, на отладочнике nrf51dk? Если нет, то на чем и какая ревизия чипа(можно здесь написать полный текст с чипа, сам посмотрю). Могу посоветовать пройтись под дебагом и узнать, что возращается в err_code = sd_ble_enable(&ble_enable_params); APP_ERROR_CHECK(err_code); И вообще, на каком именно APP_ERROR_CHECK(err_code) валится, их полно в коде. Также во время выполнения программы под отладкой, стоит поставить на паузу и посмотреть call stack. Сам использую IAR, что и как в кейле не скажу, не нравится мне он.
|
|
|
|
|
Aug 19 2015, 08:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
использую отдельный чип, спаянный на платке. Эти платки у нас работают уже как серийные. До сих пор не касался софтдевайса, работал с ним как с простым МК. сам чип N51822 GFAAG2 1429C0 пытаюсь уже и на SDK 6.1 примере работать. Не понятно софтдевайс какой и от куда лить? Залил s110_nrf51822_7.1.0_softdevice - нашел где-то у себя его. вызывается ф-я ble_stack_init(); в ней макрос SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false); и в нем куда-то все пропадает. Разбираюсь пока что с этим http://clip2net.com/s/3mkH2oVвходит в ф-ю sd_softdevice_enable() и там в недрах пропадает. уже на след. бряку не встает.
|
|
|
|
|
Aug 19 2015, 13:31
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата сам чип N51822 GFAAG2 1429C0 Согласно документу https://www.nordicsemi.com/eng/nordic/downl...1917/8/91402025это вторая ревизия чипа, а значит самый "свежий" SDK это 6.1.0 и softdevice 7.1.0. Цитата пытаюсь уже и на SDK 6.1 примере работать. Не понятно софтдевайс какой и от куда лить? Залил s110_nrf51822_7.1.0_softdevice - нашел где-то у себя его. На сайте есть версия softdevice 7.3.0, должна быть совместима(bugfix release), приложил к посту. Надо будет только заменить h-файлы в папке SDK для S110 на новые из softdevice 7.3.0. Т.е. нужно использовать SDK 6.1.0 и softdevice 7.3.0. Перед заливкой softdevice флеш лучше стереть. Цитата вызывается ф-я ble_stack_init(); в ней макрос SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, false); и в нем куда-то все пропадает. А кварц на 16МГц то есть? И желательно с точностью 20PPM Цитата Разбираюсь пока что с этим http://clip2net.com/s/3mkH2oVвходит в ф-ю sd_softdevice_enable() и там в недрах пропадает. уже на след. бряку не встает. Надо бы поставить brealpoint в функции softdevice_assertion_handler В общем, посмотрите внимательно на схему устройства, всё ли есть(можно и сюда приложить), и какая модель отладочника точно? Также, если есть возможность, стоит заменить чипы на 3 ревизию, там снизили потребление и прочие улучшения.
|
|
|
|
|
Aug 20 2015, 09:30
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
кварц на 16 МГц, этот модуль, что я использую- рабочий- он в других устройствах с BLE работает (не я писал) у меня как-то не получается стартануть с ним. http://clip2net.com/s/3moaGF0вот ф-я softdevice_assertion_handler на бряку не встает программа. Т.е. это не еррор.
|
|
|
|
|
Aug 21 2015, 14:05
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(x893 @ Aug 21 2015, 06:57)  NRF_CLOCK_LFCLKSRC_XTAL_20_PPM нужен 32768 kHz внешний кварц, если его нет - ничего не будет работать конечно
Если нет внешнего LF кварца используй что-то из enum NRF_CLOCK_LFCLKSRCS (nrf_sdm.h) Точно, low frequency кварц. Впрочем, он на плате PCA10006 есть. Может перемычки не стояли?
|
|
|
|
|
Aug 30 2015, 10:54
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(sevstels @ Aug 30 2015, 10:07)  Почитал не очень глубоко доку по nRF51822. И не нашел внятного ответа на вопрос, поддерживается ли чипом Dual-mode и будет ли нормально работать соединенение nRF51822 со стандартным BT модулем в компьютере? Нет, чип не поддерживает двойной режим, только LE. А с поддержкой Dual-mode доступных нет SoC, только отдельный модуль без встроенного МК, например CC2564
|
|
|
|
|
Aug 30 2015, 12:07
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
Цитата > Мы коннектили. Свой девайс был на блугиговском модуле с CC2540 на борту. Донгл был такой же, как по ссылке у вас. Работало очень хорошо. Лучше чем блугиговский донг Донгл CSR 4.0 BLE не поддерживает. Более того, все попытки их насильно "поженить" вызывали крах firmware и зависание BLE до передёргивания питания. BLE сниффер пакеты с компьтера не видит, более того - по приёму стандартных пакетов, он " умирает". Пробовал 6 разных донглов в том числе и встроенные BT 4.0 от ноута и от десктоп.
Сообщение отредактировал sevstels - Aug 30 2015, 12:08
--------------------
|
|
|
|
|
Aug 30 2015, 13:21
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(sevstels @ Aug 30 2015, 15:07)  Донгл CSR 4.0 BLE не поддерживает. Более того, все попытки их насильно "поженить" вызывали крах firmware и зависание BLE до передёргивания питания. BLE сниффер пакеты с компьтера не видит, более того - по приёму стандартных пакетов, он " умирает". Пробовал 6 разных донглов в том числе и встроенные BT 4.0 от ноута и от десктоп. Погуглив CSR 4.0, оказалось, что он построен на чипе CSR8510 A10, открываю даташит: http://www.csr.com/sites/default/files/csr8510.pdfИ там на второй строчке: Dual-mode Bluetooth/Bluetooth low energy operation. Т.е. он поддерживает как обычные блютузы, так и LE.
Сообщение отредактировал Defin - Aug 30 2015, 13:23
|
|
|
|
|
Aug 30 2015, 14:29
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(sevstels @ Aug 30 2015, 16:58)  Хорошо, другой вопрос. Мне требуется классический BT и реализация некоторых HCI команд, описанных в BT спеке ver4.2 Те в версии 4.0 их ещё нет. Подскажите на каком кристалле это проще сделать? Чтоб был доступ к регистрам управления трансивером и возможность управления протоколом. Доступ к регистрам то есть везде, главное чтобы были описаны в документации. Проблема в стеке Bluetooth. Все стеки, с которыми я работал(TI, Nordic) закрыты, производитель поставляет только либы или hex + некоторую оболочку вокруг него. Могу посоветовать поковырять SDK от какого-нибудь чипа TI CC256x и поспрашивать на их форуме/техподдержке. По крайней мере, там отвечают их специалисты: https://e2e.ti.com/support/wireless_connect.../f/660/t/387155
|
|
|
|
|
May 30 2016, 12:11
|
Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 26-12-11
Из: Казань
Пользователь №: 69 101

|
Цитата(sevstels @ May 30 2016, 12:13)  Нет, CC2564 пока ещё не успел купить. Но всяких других уже - "мешок". Как истинно говорится: " Выбор толковый приходит с опытом, а к нему приводит выбор бестолковый." В общем, если никто не пробовал передать классический пакет из nrf51822, попробую, кит уже купил. А стек блютуза сами будете писать? У нордика исходники стека закрыты, предоставляют только hex-файл для заливки в чип и заголовочные файлы.
|
|
|
|
|
Dec 11 2016, 06:05
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
>> так может это проблема не "Нордик (как впрочем и остальные BT-деятели)", а андроида 5? Вы наверно не читали или не поняли текст беседы. Там именно это было и написано, ошибка GATT сервера BLE Android. Но дело не в этом, а в том, что ни один мудак из Нордик или TI (зная о проблеме) не сообщил о ней пользователям в доке. Покупайте и трахайте себе мозг... а мы весело над этим понаблюдаем. Вот такая позиция. Но и не в этом дело! Оно оказалось еще смешнее. Самсунг обмолвился, что эту модель обновлять до 6й версии не намерен. О как! А только купил его пол года назад. Уроды...
--------------------
|
|
|
|
|
Dec 18 2016, 09:42
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
Сделал IAR порт scmRTOS для Nordic Semiconductor > nRF51xДля тестов использовался кит > BLE400, модуль с nrf51822QFAC на боту, (желателен xxAC), и > O-Link-ARM.  Использование: 1. Открыть в IAR папку '3-channel' и выбрать файл проекта *.eww и откомпилировать. 2. Перед загрузкой в кристалл, запустить утилиту от Nordic "nRFgo Studio" и полностью его стереть. Иначе если останется ранее зашитый китайцами стек, отладка может не запуститься. Надеюсь проект поможет любителям scmRTOS и BLE. Огромная благодарность Антону Гусеву, 'AHTOXA' за помощь в отладке порта.
--------------------
|
|
|
|
|
Dec 19 2016, 05:23
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
Это лишь "сырой" шаблон проекта для быстрого запуска RTOS на nRF51x. Ввиду некоторых особенностей ядра nRF стандартный порт Cortex-M0 там не пошел. >> что делает функуция sleep Она останавливает в данной точке выполнение текущего процесса на заданное число тиков системного таймера. Если sleep без аргументов, то останавливает перманентно. Посмотрите плиз доку на scmRTOS. >> только RTC и активен блютуз стек потребление контроллера будет 4 мкА? Пока не тестил, но препятствий не вижу. Можно остановить периферию и переключать процессы по нужным вам событиям.
--------------------
|
|
|
|
|
Dec 19 2016, 06:50
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата Она останавливает в данной точке выполнение текущего процесса на заданное число тиков системного таймера. Вот это я и хотел узнать, какой таймер используется. С системным таймером вы не получите 4 мкА. У вас получается во время выполенния sleep() работает ядро и вероятно возникают прерывания каждую миллисекунду (ну или какой там у вас тик). Например, если в этом варианте делать мигание светодиодом длительностью 100 мсек каждые 10 сек, то даже в паузе 10 сек будет работать ядро. В планировщике, который идет вместе с NRF, таймеры работают через RTC. Их стек настроит RTC на пробуждение через 10 сек. И пока оно ничего не делает ток будет 4 мкА. Ну плюс на адвертайзы будет просыпаться если они у вас включены.
|
|
|
|
|
Dec 19 2016, 07:00
|

Знающий
   
Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910

|
>> во время выполенния sleep() работает ядро Тики таймера сейчас сделаны для проверки работоспособности порта. Никто не мешает их выключить и не использовать системный таймер. Отключите его в конфиге rtos. Затем в обработчик вашего события от стека добавьте установку флага события. В сам процесс добавьте ожидание этого события. И будут вам желаемые 4мкА... Дело вкуса, я привык к scmRTOS, он серьёзно упрощает написание кода. У меня сделан всего 1 усечённый пример, чтоб не создавать дополнительные трудности. Тут можно посмотреть > полные версии примеров использования.
Сообщение отредактировал sevstels - Dec 19 2016, 07:11
--------------------
|
|
|
|
|
Dec 19 2016, 07:13
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата Тут дело вкуса, я привык к scmRTOS, серьёзно упрощает написание кода. Это точно дело вкуса. В основном пользуюсь FeeRTOS. Пытался сделать проект на BlackFin с scmRTOS. Не осилил С++. Мне очень понравился свой планировщик у NRF. Чем он вам не понравился? Я даже перенес его на STM8L для одного проекта. С проблемами конечно, но работает.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|