SerialApp-zigbee串口应用实例

SerialApp-zigbee串口应用实例

  本实例应用z-stack版本ZStack-1.4.3-1.2.1
   z-stack里面自带的SerialApp串口应用的例子,完成的是两个CC2430EB板通过 串口连接电脑,数据的互传。它工作的流程是:CC2430天线接收数据(OTA数据),触发SerialApp_Task里面的SYS_EVENT_MSG,再判断SYS_EVENT_MSG里面的小事件AF_INCOMING_MSG_CMD,调用SerialWsn_ProcessMSGCmd( afIncomingMSGPacket_t *pkt )判断簇的种类SerialWsn_CLUSTERID1代表接受到数据块,调用( HalUARTWrite( SERIAL_APP_PORT, pkt->cmd.Data+1, (pkt->cmd.DataLength-1) ) 传送到串口,SerialWsn_CLUSTERID2代表接收到发送成功的response,取消自动重发,如果不,自动重发。

  CC2430串口接受到数据,buf满溢出,自动调用rxCB函数,rxCB函数里面osal_set_event( SerialWsn_TaskID, SerialWsn_MSG_SEND_EVT ),触发数据发送。然后,SerialWsn_TaskID检测到SerialWsn_MSG_SEND_EVT 时间,调用SerialWsn_SendData( otaBuf, otaLen )把串口传过来的数据通过空中发送过去。

         欢迎光临尼尔斯论坛 http://nireus.uueasy.com/

  串口能正常工作的话,首先要调用HalUARTInit ()和HalUARTOpen ( uint8 port, halUARTCfg_t *config )两个函数Uint16 HalUARTWrite ( uint8 port, uint8 *pBuffer, uint16 length );参数port,CC2430有两个UART,其中一个在P0口也就是hal_uart_port0,另一个在P1口hal_uart_port1。

  另外一个就是halUARTCfg_t(串口配置结构体),我们来看看他的原型。
typedef struct
{
  bool                configured;
  uint8               baudRate;//波特率  协议栈只有38400和115200两个波特率
  bool                flowControl;//控制位,如果是1的话就说明是四线模式,0代表2线模式,默认的是4线模式
  uint16              flowControlThreshold;
  uint8               idleTimeout;
  halUARTBufControl_t   rx;
  halUARTBufControl_t   tx;
  bool                    intEnable;
  uint32                rxChRvdTime;
  halUARTCBack_t      callBackFunc;
}halUARTCfg_t;

  在原有的例子模板中,其他地方都可以用缺省值。如果你的板子是采用2线模式的话,必须得在SearilApp中的SerialWsn_Init( uint8 task_id )把uartConfig.flowControl=TURE改成FALSE。 如果要在这个模板的基础上添加自己的应用的话,只需要修改rxCB和SerialWsn_ProcessMSGCmd。

  在数据流过程中,每发送一个数据在数据的前面加一个SerialWsn_SeqTx。每发送一个数据,SerialWsn_SeqTx会自增1,所以每个数据包的SerialWsn_SeqTx都不同。然后,目标节点接收到数据后会回复一个response,如果接收的response里面的SerialWsn_SeqTx与当前的SerialWsn_SeqTx的值一样的话,就表示发送成功,清空OTAbuf

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值