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;
}