1,需要通過APPLICATION CORE 來控制network core的工作與否, 並配置電源使能。之前碰到過,network core只是在燒錄的時候纔會工作,斷電重啓或者復位重啓,都不會工作,是因爲applicaiton core沒有配置使能給network core供電。添加下面的代碼給network core供電使能。 如果有用到IO的資源,也需要在application core 配置,把GPIO的資源分配給network core來用
/* Release the Network MCU, 'Release force off signal' */
NRF_RESET->NETWORK.FORCEOFF = RESET_NETWORK_FORCEOFF_FORCEOFF_Release;
/** @b
rief Allow access to specific GPIOs for the network core.
*
* Function is executed very early during system initialization to make sure
* that the network core is not started yet. More pins can be added if the
* network core needs them.
*/
static int network_gpio_allow(struct device *dev)
{
ARG_UNUSED(dev);
/* Enable LED pins on Network core */
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(led0), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(led1), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(led2), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(led3), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
/* Enable Buttons pins on Network core */
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(sw0), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(sw1), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(sw2), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[DT_GPIO_PIN(DT_ALIAS(sw3), gpios)] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
//tx rx 25 26
NRF_P0->PIN_CNF[25] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
NRF_P0->PIN_CNF[26] =
GPIO_PIN_CNF_MCUSEL_NetworkMCU << GPIO_PIN_CNF_MCUSEL_Pos;
return 0;
}