Не помогло.Дайте дополнительную команду сброса датчику в init_sensor()
Не помогло.Дайте дополнительную команду сброса датчику в init_sensor()
ResetHandler
sp <= 0x1FFF1830wakeupProcess0()
sp <= [0x1fff0814] + 0x80 - какой-то мелкий стек для нужд ll_*?wakeupProcess1()
sp <= pGlobal_config[INITIAL_STACK_PTR] в версии keil, в версии gcc адрес конца ramwakeupProcess0()
функция hal_pwrmgr_RAM_retention_clr()
или её аналог не вызывается, а в wakeupProcess1()
в какой-то момент была закомментирована.
//=======fix sram_rent issue 20180323
//hal_pwrmgr_RAM_retention_clr();
//subWriteReg(0x4000f01c,21,17,0);
hal_pwrmgr_RAM_retention_set()
исправно вызывается перед переходом в сон. Скорее всего, если раскомментировать hal_pwrmgr_RAM_retention_clr()
после переключения стека, то в wakeupProcess1()
, то это должно помочь.Несколько мкс? Можно после вызоваВключение питания на куски RAM требует времени - пока там стабилизируется
hal_pwrmgr_RAM_retention_clr()
тупо поставить memset 0xFF (0x00) на верхний блок включенной памяти для ускорения.Вроде в текстах мелькаетpvvx написал(а):Не работает переключение соединения на Coded PHY
case GAP_LINK_ESTABLISHED_EVENT:
gapRole_state = GAPROLE_CONNECTED;
g_rfPhyPktFmt = PKT_FMT_BLR125K;
notify = TRUE;
break;
g_rfPhyPktFmt == PKT_FMT_BLR125K
в других местах.g_rfPhyPktFmt = PKT_FMT_BLR125K
Возможно имеет смысл использовать промежуточный загрузчик, который будет проверять, что в верхней flash записан правильный образ обновления, переписывать его на своё место, после чего стирать обновление. Тогда можно при передаче OTA писать flash мелкими блоками.ещё не известно что будет при стирании Flash на ходу соединения.
По нему уже есть и логи шин... И уже есть с убитым сенсором - накрылся от проводка и статики (эти датчики постоянно летят - это из производственной практики). Но есть ещё несколько энтих TH-05.PS TH05 у меня есть. Как раз собираюсь снять прошивку и вызвонить куда подключен сенсор.
Но nRFConnect не переключает на Coded PHY во время соединения. На 1M и 2M переключает.И есть проверкиg_rfPhyPktFmt == PKT_FMT_BLR125K
в других местах.
wakeupProcess0()
стек устанавливается аналогично wakeupProcess1()
По стандарту BT на основных каналах только в Coded S8 PHY и 1M РНY. Есть понятие первичный и вторичный РНY. Coded S8 PHY применяется только в "расширенной рекламе" (BT5.0 и необязательные для реализации дополнения BT4.2) в заголовке на основных каналах. Вторичный PHY может быть любым - на нем транслируются сами данные рекламы на дополнительных каналах в "расширенной рекламе", а указание где и какой PHY в заголовке на основных каналах.А рекламу можно слать в режиме Coded S8 PHY?