Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NORDIC nrf51822
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
Метценгерштейн
sd_app_event_wait();

Хочу девай в сон загнать. Вычитал, что этой ф-ей он гонится в сон. Но не понять систему- нужен хидер файл. Без него компилер не видит ф-ии. Как искать, какой хидер нужен? Где в документации указано, какой подключать?
Немного каша у меня.
kolobok0
Цитата(Метценгерштейн @ Aug 10 2015, 12:03) *
...Как искать, какой хидер нужен? Где в документации указано, какой подключать?...


Либо толковую книгу = поход в книжный магазин, полистать, поискать, глазками глянуть (покупать не обязательно)
либо контекстный поиск по вашей файловой системе(если подразумевается что это барахло у вас на компе валяется)
либо поиск в гугле на соответствие название=файл...

согласитесь это элементарные шаги, которые можно решать самому...


ЗЫ
По первой ссылке есть архив проекта. Думаю он компилябельный...
тут встречается название вашей функции
Метценгерштейн
Вы не поняли вопрос.
Я знаю что такое хидеры и как и куда их включать. Вопрос в другом- какой именно хидер нужен? Где в документации сказано, что включите именно его? По ссылке я был еще до Вас. Ничего из моих вопросов нет.
Если Вы не занимались нордиком, то общие советы можно не давать- они просты.
Defin
Включать файл "nrf_soc.h". Можно было перейти к функции в нормальной IDE(find references или goto definition) или поискать определение по файлам, например через тоталкоммандер.

П.с. Эта функция не уводит устройство в сон, а только ядро АРМ. Вся остальная периферия продолжит работать и процессор проснётся по первому прерыванию.
Фактически в функции выполняется одна команда __WFE();

Для ухода в глубокий сон есть другие функции, например
sd_power_system_off(); - если используется SofDevice, или просто запись в регистр NRF_POWER->SYSTEMOFF = 1;
Метценгерштейн
Цитата(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... находятся в софтдевайсе. Обращение к ним через этот хидер.
Defin
Цитата(Метценгерштейн @ Aug 11 2015, 15:03) *
вот, спасибо. Видно, что человек работает с нордиком.
Там фишка в том, что софтдевайс прошит отдельной прошивкой в др. область памяти. И, похоже, что именно только через эти хидеры происходит обращение к ф-ям софтдевайса. Все ф-ии SD... находятся в софтдевайсе. Обращение к ним через этот хидер.

Пожалуйста.
Функции, которые начинаются с sd_ требуют инициализированный и включенный softdevice, иначе вылет в assert, кроме пары штук, у них есть тело в файле .c.

А так, вся документация и SDK c примерами есть на сайте нордика https://developer.nordicsemi.com/nRF51_SDK
Только нужно смотреть на ревизию чипа, последние версии SDK работают только с 3й ревизией чипа.
Метценгерштейн
еще вопрос по сну:
загнал его в сон ф-ей
sd_power_system_off();

он теперь на что реагирует? Разбудить его чем теперь?
Golikov A.
может мануалом его стукнуть или другой какой документацией?
Defin
Цитата(Golikov A. @ Aug 12 2015, 13:27) *
может мануалом его стукнуть или другой какой документацией?


Вынужден согласиться с товарищем.

Ответ на все вопросы можно найти в документации, даташите и референс-мануале. Всё есть на сайте нордика.
Также в SDK есть примеры реализаций прошивок, например ble_app_hrs.

Касательно sd_power_system_off. Это уход в самый экономичный режим сна, без сохранения ОЗУ.
Проснуться можно по изменению логического уровня на каком-либо входе. Но его нужно предварительно настроить функцией nrf_gpio_cfg_sense_input.
Опять таки, всё можно подсмотреть в примерах.
Метценгерштейн
Спасибо за пояснения. Тут я на пути, как подступиться к этой самой документации. Пока только разбираюсь с системой документации. Буду там смотреть.
Еще раз спасибо за дельные ответы. Теперь уже можно что-то похожее искать как реализовано в примерах.
Метценгерштейн
не получается все-равно запустить проект
http://developer.nordicsemi.com/nRF51_SDK/...tml/a00075.html

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

Проц предварительно стер весь. Залил проект. Может надо отдельно софтдевайс в память заливать? Хотя нигде про это не сказано.

В проекте адреса флеша с 1600 начинаются. По идее, надо отдельно софтдевайс подгружать.
Не врублюсь, от куда его брать?

Defin
Софтдевайс отдельно заливается. Иначе даже отладчик(IAR) ругается на неправильный указатель на стэк.
Для S110 hex файл лежит в папке SDK \components\softdevice\s110\hex\
Залить можно просто скопировав в "диск" программатора.

При успешной прошивке, отладочник замигает светодиодом.
Метценгерштейн
хрень какая-то:

открыл проект в SDK 8.1.0
C:\...\NORDIC\SDK_8.1.0\examples\ble_peripheral\ble_app_cts_c\pca10028\s110\arm5_no_packs\ble_app_cts_c_s110_pca10028.uvprojx

загрузил софтдевайс из того же SDK через nRF Go Studio, предварительно стер флеш.

Заливаю проект кейлом, старт начинается с main()

все как буд - то нормально.

в main вызывается ф-я
ble_stack_init();
и там пропадает.

разве что-то забыл сделать еще?

уже в вечном цикле ничего не крутится.
Defin
Цитата(Метценгерштейн @ 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, что и как в кейле не скажу, не нравится мне он.
Метценгерштейн
Спасибо. Завтра на работе подробно все посмотрю и скажу. Есть отладочная доска, есть отдельно процы спаянные. Доска PCA0006 вроде как.
Метценгерштейн
использую отдельный чип, спаянный на платке. Эти платки у нас работают уже как серийные. До сих пор не касался софтдевайса, работал с ним как с простым МК.

сам чип
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()
и там в недрах пропадает. уже на след. бряку не встает.
Defin
Цитата
сам чип
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 ревизию, там снизили потребление и прочие улучшения.
Метценгерштейн
кварц на 16 МГц, этот модуль, что я использую- рабочий- он в других устройствах с BLE работает (не я писал)
у меня как-то не получается стартануть с ним.

http://clip2net.com/s/3moaGF0
вот ф-я softdevice_assertion_handler
на бряку не встает программа. Т.е. это не еррор.
x893
NRF_CLOCK_LFCLKSRC_XTAL_20_PPM
нужен 32768 kHz внешний кварц, если его нет - ничего не будет работать конечно

Если нет внешнего LF кварца используй что-то из
enum NRF_CLOCK_LFCLKSRCS (nrf_sdm.h)

Defin
Цитата(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 есть. Может перемычки не стояли?
x893
Всё может быть

NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION

для проверки поставить
Метценгерштейн
Спасибо за идею дельную! В понедельник проверю на работе- отпишусь.
sevstels
Почитал не очень глубоко доку по nRF51822. И не нашел внятного ответа на вопрос, поддерживается ли чипом Dual-mode и будет ли нормально работать соединенение nRF51822 со стандартным BT модулем в компьютере?
Defin
Цитата(sevstels @ Aug 30 2015, 10:07) *
Почитал не очень глубоко доку по nRF51822. И не нашел внятного ответа на вопрос, поддерживается ли чипом Dual-mode и будет ли нормально работать соединенение nRF51822 со стандартным BT модулем в компьютере?


Нет, чип не поддерживает двойной режим, только LE. А с поддержкой Dual-mode доступных нет SoC, только отдельный модуль без встроенного МК, например CC2564
sevstels
Те, тогда сконнектить с BT компьтера не получится?
А как же работают примеры использования nRF51822 для канала мышки и клавы?
Или они только как демка для LE<->LE?

Видел на Сахаре сообщение, коннектили и нормально работал обмен между стандартный BT и LE.
Но как то слабо верится, у меня не получилось.
Defin
С компьютером получится, если он или свисток поддерживает Bluetooth 4, т.е зависит от модуля.
Например, моему ноуту уже 2 года, но он отлично видит как LE устройства, так и обычные.
В центральные(central) устройства обычно ставят dual-mode контроллеры, так как нет жестких требований по экономии энергии(относительно, конечно).

Обычный блютуз и LE(single mode) не совместимы, на сахаре чего-то не договаривают.
sevstels
Цитата
> Мы коннектили. Свой девайс был на блугиговском
модуле с CC2540 на борту. Донгл был такой же, как по ссылке у вас.
Работало очень хорошо. Лучше чем блугиговский донг


Донгл CSR 4.0 BLE не поддерживает. Более того, все попытки их насильно "поженить" вызывали крах firmware и зависание BLE до передёргивания питания. BLE сниффер пакеты с компьтера не видит, более того - по приёму стандартных пакетов, он "умирает". Пробовал 6 разных донглов в том числе и встроенные BT 4.0 от ноута и от десктоп.
Defin
Цитата(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.
sevstels
Вероятно.. но мне не удалось приконнектить, видимо пока не хватает квалификации.

Хорошо, другой вопрос. Мне требуется классический BT и реализация некоторых HCI команд, описанных в BT спеке ver4.2 Те в версии 4.0 их ещё нет. Подскажите на каком кристалле это проще сделать? Чтоб был доступ к регистрам управления трансивером и возможность управления протоколом.
Defin
Цитата(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
Метценгерштейн
проверил идею с кварцем- при инициализации установил
NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION

и он в эфире появился!

Спасибо всем за подсказки! Будем дальше разбираться.
Метценгерштейн
вопрос по этому процу- минимум распаянный для того, чтобы программатор его увидел -какой?
Просто подключить программатор к процу и подать питание не получится? Т.е. без кварца.
Genadi Zawidowski
Получится без кварца. Два сигнала от SWD-DP достаточно.
sevstels
Никто не пробовал сформировать "классический" пакет на nrf51822 и передать?
Глубоко не вникая в скрытые нюансы, почитал документацию и очень похоже что можно.
Судя из их доки, единственный пункт который не получится "исправить" в классическую сторону- преамбула в 4 бита длиной. Она будет 8 бит, но для приемника это не существенно,тк прерывание Rx по совпадению синхрослова а не преамбулы.
uriy
Цитата
Никто не пробовал сформировать "классический" пакет на nrf51822 и передать?
А зачем? Какой в этом практический смысл?
sevstels
Смысл есть. В моей задаче нужно поддерживать взаимодействие как с классическими так и BLE устройствами. USB донгла, чтоб кристалл был дёшев и документация доступна так и не нашел. Или по доке всё вроде должно получиться, но на практике сталкиваешься с заморочками производителя чипа. TI например, вот где бестолковщины! Каждый отдел делал свою часть как хотел, исходя из женской логики. И не знал что делает соседний. Обещают, как бы "туманно", а в железке реализовать не получается.
uriy
Цитата
Обещают, как бы "туманно", а в железке реализовать не получается.
Это вы про CC2564? Она не работает в обоих режимах?
sevstels
Нет, CC2564 пока ещё не успел купить. Но всяких других уже - "мешок". Как истинно говорится: " Выбор толковый приходит с опытом, а к нему приводит выбор бестолковый." В общем, если никто не пробовал передать классический пакет из nrf51822, попробую, кит уже купил.
Defin
Цитата(sevstels @ May 30 2016, 12:13) *
Нет, CC2564 пока ещё не успел купить. Но всяких других уже - "мешок". Как истинно говорится: " Выбор толковый приходит с опытом, а к нему приводит выбор бестолковый." В общем, если никто не пробовал передать классический пакет из nrf51822, попробую, кит уже купил.

А стек блютуза сами будете писать? У нордика исходники стека закрыты, предоставляют только hex-файл для заливки в чип и заголовочные файлы.
sevstels
Стек не нужен, он лишь усложняет дело, кастомный протокол.
jcxz
Цитата(sevstels @ May 30 2016, 18:16) *
Стек не нужен, он лишь усложняет дело, кастомный протокол.

Если "стек не нужен" и "кастомный протокол", то почему бы не взять простой RF-модуль на требуемый частотный диапазон и использовать его?
sevstels
Хороший вопрос.
У меня уже есть рабочий вариант с BT-трансивер, который работает с классик и BLE. Но использовать его в масс-продакшен нельзя, тк можно легко "подсесть" на шину между RF и контролером для реверса. Что вскоре привлечет серьёзные проблемы со стороны желтоглазых братьев.
mantech
Цитата(sevstels @ May 30 2016, 15:55) *
Хороший вопрос.
У меня уже есть рабочий вариант с BT-трансивер, который работает с классик и BLE. Но использовать его в масс-продакшен нельзя, тк можно легко "подсесть" на шину между RF и контролером для реверса. Что вскоре привлечет серьёзные проблемы со стороны желтоглазых братьев.


Странно как-то говорите - есть проект на открытом стеке, вы его доработали существенно или написали свой, чтоб делать закрытым? Если нет, то какой смысл реверсить то, что и так открыто?
sevstels
О каком стеке вы говорите?
Если про ubertooth, то он использовался только изучения и отладки, хорошая платформа.
Исправив там огромное число ошибок, портировал его под IAR и под Win, это есть преступление?
sevstels
Появилось время заняться nrf51822.
Собрал примеры из последнего Nordik SDK (12.2), попробовал запустить с телефоном... и фиг вам! Не работает, никакие припарки и умные советы решить проблему не помогли. Пишу, чтоб начинающие долго не мучились, ведь Нордик (как впрочем и остальные BT-деятели) "скромно умалчивает" о неработоспособности BLE с Android 5.
mantech
Цитата(sevstels @ Dec 10 2016, 10:15) *
Пишу, чтоб начинающие долго не мучились, ведь Нордик (как впрочем и остальные BT-деятели) "скромно умалчивает" о неработоспособности BLE с Android 5.


Если с другими версиями работает и с компом тоже, так может это проблема не "Нордик (как впрочем и остальные BT-деятели)", а андроида 5? wink.gif
uriy
У меня не было проблем с android 5. Телефон дешевый китайский за $100.
После обновления телефона до android 6 для полноценной работы BLE стало нужно включать геолокацию.
Мне кажется в 5-ой версии это не требовалось, хотя может уже и забыл.
sevstels
>> так может это проблема не "Нордик (как впрочем и остальные BT-деятели)", а андроида 5?
Вы наверно не читали или не поняли текст беседы. wink.gif
Там именно это было и написано, ошибка GATT сервера BLE Android.

Но дело не в этом, а в том, что ни один мудак из Нордик или TI (зная о проблеме) не сообщил о ней пользователям в доке.
Покупайте и трахайте себе мозг... а мы весело над этим понаблюдаем. Вот такая позиция.

Но и не в этом дело! Оно оказалось еще смешнее.
Самсунг обмолвился, что эту модель обновлять до 6й версии не намерен.
О как! А только купил его пол года назад. Уроды...
sevstels
Сделал IAR порт scmRTOS для Nordic Semiconductor > nRF51x
Для тестов использовался кит > BLE400, модуль с nrf51822QFAC на боту, (желателен xxAC), и > O-Link-ARM.



Использование:
1. Открыть в IAR папку '3-channel' и выбрать файл проекта *.eww и откомпилировать.
2. Перед загрузкой в кристалл, запустить утилиту от Nordic "nRFgo Studio" и полностью его стереть.
Иначе если останется ранее зашитый китайцами стек, отладка может не запуститься.

Надеюсь проект поможет любителям scmRTOS и BLE.
Огромная благодарность Антону Гусеву, 'AHTOXA' за помощь в отладке порта.
uriy
Вы ее сделали ticlkess?
Я далек от С++ и не понял что делает функуция sleep.
Когда нет активности ядра и работает только RTC и активен блютуз стек потребление контроллера будет 4 мкА?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.