Ппомогите. Не могу запустить сей модуль. Модуль пустой из коробки. Загрузил свою программу, загрузил bootloader:bootloader-storage-internal-single-1536k но управление моей программе похоже, что не передаётся. Если пустить дебаг оно где-то шарится и ничего не показывает. Если нажать suspend, появляется сообщение: Break at address "0x8000604" with no debug information available, or outside of program code.
Что еще этому чуду не хватает? Даже пытался bt_soc_blinky поставить - эффект нулевой.
С таким бутлоадером следует из Bluetooth профиля убрать OTA сервис (если Bluetooth задействован), который в тестовом приложении bluetooth_soc_empty присутствует по умолчанию. Делайте в Software Components поиск по ota и удалите эту компоненту. Потом следует заново перезалить приложение. Ещё неясно какая у Вас версия Secure FW в чипе, и совместима-ли она с используемой приложением версией SDK. Если это не поможет, сообщите подробности что и как делаете, какие версии и пр. У меня всё работает на УРА.
При этом пытался делать по-новой "Bluetooth - SoC Empty", копировать файлы, компилировать - и всё время один и тот же результат. Может с этим новым SDK надо как-то по-новому действовать?
В гугле нашел, что для Simplicity SDK, в отличии от Gecko SDK надо конфигурировать Clock Manager - указал там внешний HFXO - 39MHz. Не помогло...
А!!! Еше надо Default Clock Source Selection for HF clock branches указать HFXO - теперь заработало!
Новая засада. Захотел запустить часики реального времени. Выбрал BURTC. Зашел в софтверные компоненты и поставил галочку у Platform->Peripheral->EMLIB->BURTC. В старте написал:
На строчке if (BURTC->EN != 0U) , т.е. первая же попытка прочитать.
В заголовке написано, что перед этой функцией надо сбросить бит в RMU
Код:
* Before initialization, BURTC module must first be enabled by clearing the * reset bit in the RMU, i.e., * @verbatim * RMU_ResetControl(rmuResetBU, rmuResetModeClear); * @endverbatim
Но эти магические слова недоступны (#ifdef не активизирует строки про rmuResetBU).
Код:
/** RMU controlled peripheral reset control and reset source control. */ typedef enum { #if defined(RMU_CTRL_BURSTEN) rmuResetBU = _RMU_CTRL_BURSTEN_MASK, /**< Reset control over Backup Power domain select. */ #endif
Прошелся отладчиком, оно умирает в этой функции: На строчке if (BURTC->EN != 0U) , т.е. первая же попытка прочитать.
Вообще-то это место лучше прошагать по окну дизасма. Чтобы точно знать на какой команде виснет. Если виснет именно на команде чтения из регистра BURTC, то это более всего похоже на то, что не включено тактирование периферийного блока (к которому относится данный регистр). Я с EFR-ами не работал, но в других МК такое может происходить обычно при отключенном тактировании соответствующей периферии.
Скачать "Reference Manual"; найти в нём параграф про тактирование регистров IO периферии (Clocking какой-нить); найти что там написано про BURTC.
Вот скачал "EFR32xG24 Wireless SoC Reference Manual" и вижу (стр.173): "CMU_CLKEN0 - Clock Enable Register 0". Биты 28 и 29 - BURAM, BURTC. В каком они положении в точке выполнения того кода?
Совершенно верно, скорее всего не разрешено тактирование для BURTC. Вот пример мигания светодиодом с периодом 1 сек для демо-платы Ezurio LYRA 24p и simplicity_sdk_2025.6.1:
У меня возник новый бздык! Хочу несколько таймеров и USART тактировать от частоты 25.175 МГц. Да, те кто в курсе, что это за частота, догадались правильно - хочу попробовать сделать VGA видеоконтроллер. Правда, тогда у меня и системная частота упадёт до этой частоты. А сможет ли в этом случае работать Bluetooth?
Поначалу, собирался купить осциллятор на эту частоту и подать на вход CLKIN0. Но тут подумал, что есть модуль DPLL. Можно ли его использовать не для повышения частоты, а для понижения? В референс мануале, вроде ограничения такого не видел. F = Fref*(N+1)/(M+1). Тогда если я выберу N и M 1006 и 1559 соответственно, то из 39МГц набортного кварца получу вожделёную частоту 25.175МГц. Или лучше повышать до 50.350Мгц, а затем включить прескалер на 2 для PCLK?
p.s. Попробовал сделать 25.175 (N=2013, M=3119) - получил RAILCb_AssertFailed() at 0x801bc7c... Такая же ошибка и при 50.35МГц (N=4027, M=3119). Т.е. bluetooth с такими частотами не может завестись? Как быть?
uldemir, если вы собрались делать двухцветный VGA адаптер который данные цвета через USART в режиме SPI выводит, то частота у него должна быть 50MHz, потому что на вывод одного бита нужно 2 такта.
Мне хватит и одного цвета. Мне надо туда выводить "секундомер" и "лучший результат". Цвет чисел я могу менять коммутируя резистивную матрицу сигналом от кадровой развёртки, но это потом. Пока мне хватит белых цифр на синем фоне. Фон активирую сигналом CS SPI, а цифры MOSI SPI. Хотел посмотреть насколько стабильная картинка получится и как быстро будут обновляться цифры... Но пока упёрся в проблему запуска Bluetooth. А без этого вся затея не имеет смысла.
Пока мне хватит белых цифр на синем фоне. Фон активирую сигналом CS SPI, а цифры MOSI SPI.
При чем тут CS SPI? Данные цвета выводятся через MOSI, если цифры должны быть белыми, то при единичке на MOSI она пойдет на R и G, а B жестко привязан к 1. Тогда при нуле на MOSI единица будет только на B.
Когда закончится левый бланкирующий строчный импульс, даётся команда на запуск SPI. SPI активизирует CS что включит 1 на Blue. Там где рисуется цифра - MOSI активизирует Red, Green - они вместе с фоном дадут белый цвет. Когда строка завершится, CS снимается, фон пропадает и начинается правый бланкирующий импульс. Я как-то так представлял вывод. Правда есть зазор между активизацией CS и началом выдачи потока данных (и так же в конце), так что будет не 640 пикселей, а, может 632 - не принципиально. На худой конец сбавлю частоту пикселей в 2 раза - будет 320х480 - мне надо рисовать крупные цифры.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения