ZNP: Zigbee And Processor
意思是CC2530等SOC作为ZIGBEE从设备,接受MCU通过SPI或UART发送来的指令,执行协议栈相关接口操作。
目录:在ZSTACK自带工程里有F:\Z-Stack 3.0.0-backup\Projects\zstack\ZNP\CC253x
考虑一般用串口操作,所以可以对配置文件做以下修改:
onBoard.c中
void InitBoard( uint8 level )
{
if ( level == OB_COLD )
{
// IAR does not zero-out this byte below the XSTACK.
*(uint8 *)0x0 = 0;
// Interrupts off
osal_int_disable( INTS_ALL );
// Check for Brown-Out reset
ChkReset();
//#if defined CC2531ZNP
znpCfg1 = ZNP_CFG1_UART;
//#elif defined CC2530_MK
// znpCfg1 = ZNP_CFG1_SPI;
znpCfg0 = ZNP_CFG0_32K_OSC;
//#else
// znpCfg1 = P2_0;
// znpCfg0 = P1_2;
// Tri-state the 2 CFG inputs after being read (see hal_board_cfg_xxx.h for CFG0.)
// P1INP |= BV(2);
// P2INP |= BV(0);
//#endif
}
else // !OB_COLD
{
/* Initialize Key stuff */
HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback);
}
}
然后将流控关闭:
znp_app.c中
static void npInit(void)
{
if (ZNP_CFG1_UART == znpCfg1)
{
halUARTCfg_t uartConfig;
uartConfig.configured = TRUE;
uartConfig.baudRate = ZNP_UART_BAUD;
//#ifdef ZNP_ALT
uartConfig.flowControl = FALSE;
//#else
// uartConfig.flowControl = TRUE;
//#endif
uartConfig.flowControlThreshold = HAL_UART_FLOW_THRESHOLD;
uartConfig.rx.maxBufSize = HAL_UART_RX_BUF_SIZE;
uartConfig.tx.maxBufSize = HAL_UART_TX_BUF_SIZE;
uartConfig.idleTimeout = HAL_UART_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
uartConfig.callBackFunc = npUartCback;
HalUARTOpen(HAL_UART_PORT, &uartConfig);
MT_UartRegisterTaskID(znpTaskId);
}
else
{
/* npSpiInit() is called by hal_spi.c: HalSpiInit().*/
}
npInitNV();
#if defined (MT_ZDO_FUNC)
MT_ZdoInit();
#endif
MT_SysResetInd();
#if defined ZCL_KEY_ESTABLISH
#if defined TC_LINKKEY_JOIN
zcl_TaskID = znpTaskId;
#endif
#endif
#if LQI_ADJUST
ZMacLqiAdjustMode(LQI_ADJ_MODE1);
#endif
#if defined CC2531ZNP
(void)osal_pwrmgr_task_state(znpTaskId, PWRMGR_HOLD);
#endif
}
这时,编译烧录应该就没问题了,可以在z-tools里进行调试
具体接口指令对照文档