This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

zigbee z-stack 3.0 工程ZNP 关于串口UART

Other Parts Discussed in Thread: CC2530

你好!我想在3.0版本协议栈ZNP工程下实现串口UART 通信,ZNP默认情况下是spi通信,请问我怎样设置实现串口UART通信?需要修改/添加宏定义嘛?

谢谢!

  • 打开hal_board_cfg.h,找到如下宏,修改成如下内容即可:

    #define ZNP_CFG1_SPI             0         /* use SPI transport */
    #define ZNP_CFG1_UART            1         /* use UART transport */

  • 谢谢你的答复,我按照你的修改了,串口能够接收数据,串口打印不出来数据。

    我在处理接串口收数据  void MT_UartProcessZToolData ( uint8 port, uint8 event )   函数中,添加 HalUARTWrite (port, &ch, 1)一个串口打印功能,让接收的串口数据再串口打印出来,但是串口打印不出来数据。添加的函数如图注释部分所示。

  • 在这个函数下修改

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

    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 = FALSE;                   //   修改成这个
    #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);
    }

    可以加我的QQ:181408650,讨论