Zstack SampleApp加入串口通信

最近在做关于Zigbee相关的一些东西,使用cc2430,但无奈SampleApp中并没有加入串口通信。

于是在通过各种百度,google之后,看明白了Zigbee大致的工作流程以及串口使用方法,特别记下,

以备查阅,如有不合理之处,请勿见笑。


硬件环境:

cc2430

软件环境:

zstack1.4.3 SampleApp, IAR


1. 由于本人的开发板并不标准,经修改,具体的预定义宏如下:



本人主要使用Coordinator EB 和 Router EB两个工程环境做测试。

2. 源文件的修改

主要使用串口0进行通信, P0-2接收, P0-3发送

定义全局变量:uint8 uart_recv_buf[64];

修改源代码:

SampleApp.c:

在SampleApp_Init()中加入:

SPIMgr_RegisterTaskID( task_id );

在SampleApp_ProcessEvent()加入:

// Handle UART recv event
  if (events & SAMPLEAPP_UART_RECV_EVT)
  {
    int rLen;
rLen = HalUARTRead(0, uart_recv_buf, 64);
HalUARTWrite(0, uart_recv_buf, rLen);
/*SampleApp_SendUartBuf(uart_recv_buf, rLen);*/
    /*HalLedBlink( HAL_LED_1, 4, 50, (500) );*/
    return (events ^ SAMPLEAPP_UART_RECV_EVT);
  }

这里只是实现回写的功能,实际还可以根据需要做相应的修改。


SPIMgr.c:

在SPIMgr_ProcessZToolData ()中:

注释掉所有的代码,我们并不用Zigbee中定义的格式,加入一条:

osal_start_timerEx( App_TaskID, SAMPLEAPP_UART_RECV_EVT,0);

其中SAMPLEAPP_UART_RECV_EVT要自己定义。

如:#define SAMPLEAPP_UART_RECV_EVT               0x0002 

3. 调试串口常会遇到的问题。

1)无输出

首先检查是否使用交叉线,也就是说rx-tx, tx-rx,如果使用平行线,肯定是无输出的

再看程序,如果板子上只用了rx, tx, gnd, 那么程序中的flow control 一定要设为false

2)有输出,但是乱码

一般是由于波特率不对,还有一种情况会乱码,上一次出出这种情况把我折腾了好久,

两个串口通信方一定要共地!







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值